CLI program to determine new versions in CI projects
10K+
CLI program to determine the new version that should be assigned to the current build/commit in a CI/CD workflow.
You can install it with npm/yarn (@softonic/ci-version) or use the Docker image (softonic/ci-version) directly.
With npm/yarn:
ci-version -r /path/to/my/repository
#> 1.2.0
ci-version -r /path/to/my/repository --compatible-with package.json
#> 1.2.0
ci-version -r /path/to/my/repository --compatible-with composer.json
#> 1.2.0
With Docker:
docker run --rm -v /path/to/my/repository:/repo:ro softonic/ci-version
#> 1.2.0
docker run --rm -v /path/to/my/repository:/repo:ro softonic/ci-version --compatible-with package.json
#> 1.2.0
docker run --rm -v /path/to/my/repository:/repo:ro softonic/ci-version --compatible-with composer.json
#> 1.2.0
The repository should always be mounted in /repo or otherwise the entrypoint should be modified.
The version returned (if any) it is supposed to be used to create a new tag in the repository.
If we want to have the next tag version that we should create, we can use --next option.
1.0.0 or v1.0.0), then it returns nothing.1.0.0 if there is not any.Examples:
First build:
Current commit tags: <none>
All tags: <none>
=> New version: 1.0.0
Build of a new commit:
Current commit tags: <none>
All tags: 1.1.0 1.2.0 1.3.0
=> New version: 1.4.0
Rebuild a commit:
Current commit tags: 1.2.0
All tags: 1.0.0 1.1.0 1.2.0
=> New version: <none>
Prepare next commit (Using --next option)
Current commit tags: 1.2.0
All tags: 1.0.0 1.1.0 1.2.0
=> New version: 1.3.0
1.0.0 or v1.0.0)
package.json or in the composer.json, then it returns nothing.package.json or in the composer.json.Examples:
First build:
Current commit tags: <none>
All tags: <none>
package.json/composer.json: 1.0.0
=> New version: 1.0.0
Build of a new commit (package.json/composer.json unmodified):
Current commit tags: <none>
All tags: 1.1.0 1.2.0 1.3.0
package.json/composer.json: 1.0.0
=> New version: 1.4.0
Rebuild a commit:
Current commit tags: 1.3.0
All tags: 1.1.0 1.2.0 1.3.0
package.json/composer.json: 1.0.0
=> New version: <none>
First build post major increment in package.json/composer.json:
Current commit tags: <none>
All tags: 1.1.0 1.2.0 1.3.0
package.json/composer.json: 2.0.0
=> New version: 2.0.0
Rebuild post major increment in package.json/composer.json:
Current commit tags: 2.0.0
All tags: 1.1.0 1.2.0 1.3.0 2.0.0
package.json/composer.json: 2.0.0
=> New version: <none>
In some repository, we might want to tag with a prefix to tag different applications living in the same repo.
For this purpose, we can use --prefix (-e)option: we will identify only tags starting with such prefix, and the returned
tag version will be prefixed with such value.
Examples:
-- prefix "application-"
First build:
Current commit tags: <none>
All tags: <none>
package.json/composer.json: 1.0.0
=> New version: application-1.0.0
Build of a new commit with same prefix tags
Current commit tags: <none>
All tags: application-1.1.0 application-1.2.0 application-1.3.0
package.json/composer.json: 1.0.0
=> New version: application-1.4.0
Build of a new commit with mixed prefix tags
Current commit tags: <none>
All tags: application-1.1.0 application-1.2.0 application-1.3.0 app-1.3.0 app-1.1.0 app-1.2.0
package.json/composer.json: 1.0.0
=> New version: application-1.4.0
git clone https://github.com/softonic/ci-version.gitgit checkout -b feature/my-new-featuregit commit -am 'Added some feature'npm run buildgit push origin my-new-featureContent type
Image
Digest
sha256:53f365cba…
Size
47.7 MB
Last updated
almost 3 years ago
docker pull softonic/ci-version