https://github.com/softonic/ci-version
CLI program to determine new versions in CI projects
https://github.com/softonic/ci-version
Last synced: about 1 year ago
JSON representation
CLI program to determine new versions in CI projects
- Host: GitHub
- URL: https://github.com/softonic/ci-version
- Owner: softonic
- License: other
- Created: 2017-04-10T16:33:44.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2023-11-14T18:37:39.000Z (over 2 years ago)
- Last Synced: 2024-10-09T19:04:54.375Z (over 1 year ago)
- Language: JavaScript
- Size: 49.8 KB
- Stars: 1
- Watchers: 22
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# ci-version
CLI program to determine the new version that should be assigned to the current build/commit in a CI/CD workflow.
## Installation
You can install it with npm/yarn (`@softonic/ci-version`) or use the Docker image (`softonic/ci-version`) directly.
## Usage
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.
## How it works
### Without compatible-with option
- If the current commit contains version tag (e.g.: `1.0.0` or `v1.0.0`), then it returns nothing.
- Otherwise, it increments a minor version to the last version tag found in the whole repository or `1.0.0` if there is not any.
Examples:
- First build:
```
Current commit tags:
All tags:
=> New version: 1.0.0
```
- Build of a new commit:
```
Current commit tags:
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:
```
- 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
```
### With compatible-with option
- If it already contains a version tag (e.g.: `1.0.0` or `v1.0.0`)
* And it is compatible with the version in the `package.json` or in the `composer.json`, then it returns nothing.
* Otherwise, it increments the last version in the repository that is compatible.
- Otherwise, it increments the last version in the repository that is compatible with the one in the `package.json` or in the `composer.json`.
Examples:
- First build:
```
Current commit tags:
All tags:
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:
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:
```
- First build post major increment in package.json/composer.json:
```
Current commit tags:
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:
```
### With prefix option
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:
All tags:
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:
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:
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
```
## Contributing
1. Fork it: `git clone https://github.com/softonic/ci-version.git`
2. Create your feature branch: `git checkout -b feature/my-new-feature`
3. Commit your changes: `git commit -am 'Added some feature'`
4. Check the build: `npm run build`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D