A resource for managing a version number. Persists the version number in one of several backing stores.
This resource can manage major version(X
) only.
When version is bumped by this resouce, new version is X+1
.
There is no concept of major
, minor
and patch
like semanic versioning.
-
driver
: Required. The driver to use for tracking the version. Determines where the version is stored. (git
only, yet) -
initial_version
: Optional. The version number to use when bootstrapping, i.e. when there is not a version number present in the source.
The git
driver works by modifying a file in a repository with every bump. The
git
driver has the advantage of being able to do atomic updates.
-
uri
: Required. The repository URL. -
branch
: Required. The branch the file lives on. -
file
: Required. The name of the file in the repository. -
private_key
: Optional. The SSH private key to use when pulling from/pushing to to the repository. -
username
: Optional. Username for HTTP(S) auth when pulling/pushing. This is needed when only HTTP/HTTPS protocol for git is available (which does not support private key auth) and auth is required. -
password
: Optional. Password for HTTP(S) auth when pulling/pushing. -
git_user
: Optional. The git identity to use when pushing to the repository support RFC 5322 address of the form "Gogh Fir <gf@example.com>" or "foo@example.com". -
depth
: Optional. If a positive integer is given, shallow clone the repository using the --depth option. -
commit_message
: Optional. If specified overides the default commit message with the one provided. The user can use %version% and %file% to get them replaced automatically with the correct values.
With the following resource configuration:
resource_types:
- name: romver
type: registry-image
source:
repository: ghcr.io/cappyzawa/romver-resource
resources:
- name: version
type: romver
source:
driver: git
uri: git@github.com:concourse/concourse.git
branch: version
file: version
private_key: ((concourse-repo-private-key))
Bumping with a get
and then a put
:
plan:
- get: version
params: {bump: true}
- task: a-thing-that-needs-a-version
- put: version
params: {file: version/version}
Or, bumping with an atomic put
:
plan:
- put: version
params: {bump: true}
- task: a-thing-that-needs-a-version
Detects new versions by reading the file from the specified source. If the file is empty, it returns the initial_version
. If the file is not empty, it returns the version specified in the file if it is equal to or greater than current version, otherwise it returns no versions.
Provides the version number to the build as a version
file in the destination.
bump
: Optional.true
orfalse
Given a file, use its contents to update the version. Or, given a bump
strategy, bump whatever the current version is. If there is no current version,
the bump will be based on initial_version
.
The file
parameter should be used if you have a particular version that you
want to force the current version to be. This can be used in combination with
in
, but it's probably better to use the bump
params as they'll
perform an atomic in-place bump if possible with the driver.
One of the following must be specified:
-
file
: Optional. Path to a file containing the version number to set. -
bump
: Optional.true
orfalse
When bump
used, the version bump will be applied atomically,
if the driver supports it. That is, if we pull down version N
.
$ ginkgo -r -v -skip="RomverResource"
The integration requires two AWS S3 buckets, one without versioning and another
with. The docker build
step requires setting --build-args
so the
integration will run.
You will need:
- Github uri and branch
- Github username and password
Run the tests with the following command, replacing each build-arg
value with your own values:
docker build . -t romver-resource \
--build-arg ROMVER_TESTING_GITHUB_URI='https://github.com/your/repo' \
--build-arg ROMVER_TESTING_GITHUB_BRANCH='branch' \
--build-arg ROMVER_TESTING_GITHUB_USERNAME='github-username' \
--build-arg ROMVER_TESTING_GITHUB_PASSWORD='github-password'
Please make all pull requests to the master
branch and ensure tests pass
locally.