Implements a resource that reports new versions on a configured interval. The interval can be arbitrarily long.
This resource is built to satisfy "trigger this build at least once every 5 minutes," not "trigger this build on the 10th hour of every Sunday." That level of precision is better left to other tools.
-
interval
: Optional. The interval on which to report new versions. Valid examples:60s
,90m
,1h
. If not specified, this resource will generate exactly 1 new version per calendar day on each of the validdays
. -
location
: Optional. DefaultUTC
. The location in which to interpretstart
,stop
, anddays
.e.g.
location: Africa/Abidjan
-
start
andstop
: Optional. Limit the creation of new versions to times on/afterstart
and beforestop
. The supported formats for the times are:3:04 PM
,3PM
,3PM
,15:04
, and1504
. If astart
is specified, astop
must also be specified, and vice versa.e.g.
start: 8:00 PM stop: 9:00 PM
Deprecation: an offset may be appended, e.g.
+0700
or-0400
, but you should uselocation
instead.To explicitly represent a full calendar day, set
start
andstop
to the same value.e.g.
start: 6:00 AM stop: 6:00 AM
-
days
: Optional. Limit the creation of new time versions to the specified day(s). Supported days are:Sunday
,Monday
,Tuesday
,Wednesday
,Thursday
,Friday
andSaturday
.e.g.
days: [Monday, Wednesday]
These can be combined to emit a new version on an interval during a particular time period.
Returns current version and new version only if it has been longer than interval
since the
given version, or if there is no version given.
Fetches the given timestamp, writing the request's metadata to input
in the
destination.
None.
Returns a version for the current timestamp. This can be used to record the time within a build plan, e.g. after running some long-running task.
None.
resources:
- name: 5m
type: time
source: {interval: 5m}
jobs:
- name: something-every-5m
plan:
- get: 5m
trigger: true
- task: something
config: # ...
resources:
- name: after-midnight
type: time
source:
start: 12:00 AM
stop: 1:00 AM
location: Asia/Sakhalin
jobs:
- name: something-after-midnight
plan:
- get: after-midnight
trigger: true
- task: something
config: # ...
resources:
- name: 5m-during-midnight-hour
type: time
source:
interval: 5m
start: 12:00 AM
stop: 1:00 AM
location: America/Bahia_Banderas
jobs:
- name: something-every-5m-during-midnight-hour
plan:
- get: 5m-during-midnight-hour
trigger: true
- task: something
config: # ...
- golang is required - version 1.9.x is tested; earlier versions may also work.
- docker is required - version 17.06.x is tested; earlier versions may also work.
- go mod is used for dependency management of the golang packages.
The tests have been embedded with the Dockerfile
; ensuring that the testing
environment is consistent across any docker
enabled platform. When the docker
image builds, the test are run inside the docker container, on failure they
will stop the build.
Run the tests with the following commands for both alpine
and ubuntu
images:
docker build -t time-resource -f dockerfiles/alpine/Dockerfile .
docker build -t time-resource -f dockerfiles/ubuntu/Dockerfile .
Please make all pull requests to the master
branch and ensure tests pass
locally.