16 Commits

Author SHA1 Message Date
Asanga
40611bca96 Merge pull request #12 from reecetech/using-v-outputs
Using v-* outputs in favor of string manipulation
2022-02-08 15:14:10 +11:00
Asanga
ddfcb5bc04 Updating to the latest version 2022-02-08 15:07:45 +11:00
Asanga
3d00642def Using v-* outputs in favor of string manipulation 2022-02-08 15:06:28 +11:00
Philip Jay
827489c005 Merge pull request #11 from reecetech/fixing-outputs
Fixing the outputs to match README
2022-02-08 14:55:07 +11:00
Phil Jay
ee28762c5b Update README for next version 2022-02-08 14:52:41 +11:00
Asanga
1c6699b17a Fixing the outputs to match with README 2022-02-08 14:40:16 +11:00
Philip Jay
822afeb70c Merge pull request #10 from reecetech/DE-4401-fix-for-pipefails
Avoid broken pipe exits (`141`) when `head` exits
2022-02-01 16:52:07 +11:00
Phil Jay
9492ff84fb Avoid broken pipe exits (141) when head exits
Intermittent issue, only observed on self-hosted agents on VMware (due
to multi-core processing)
2022-02-01 12:23:49 +11:00
Philip Jay
7c6e26cbd9 Merge pull request #9 from reecetech/v-prefix
Add `v` prefixed version output
2021-11-22 10:04:07 +11:00
Phil Jay
38a48eeef1 Add v prefixed version outputs
See: https://github.com/reecetech/version-increment/issues/8
2021-11-15 06:54:57 +11:00
Phil Jay
4988018178 Add tests for v prefixed version output 2021-11-15 06:54:21 +11:00
Philip Jay
3016172c72 Merge pull request #7 from reecetech/update-version-in-README
Replace with latest version
2021-11-03 13:14:27 +11:00
Phil Jay
a17b442bee Replace with latest version
2021.10.4 had a bug, we should have updated this when 2021.10.5 came
out.  Now the next version will be 2021.11.1
2021-11-01 19:08:01 +11:00
Philip Jay
406cc3a662 Merge pull request #6 from reecetech/fix-for-inputs-in-composites
Fix for inputs in composites
2021-10-22 12:00:08 +11:00
Phil Jay
a7121378a5 Fix for composite actions not having INPUT_ vars
See: https://github.com/actions/runner/issues/665
2021-10-22 11:54:47 +11:00
Phil Jay
f9aea6e594 Use latest BATS 2021-10-22 11:54:47 +11:00
8 changed files with 65 additions and 21 deletions

View File

@@ -29,7 +29,7 @@ jobs:
- name: Setup bats - name: Setup bats
uses: mig4/setup-bats@af9a00deb21b5d795cabfeaa8d9060410377686d uses: mig4/setup-bats@af9a00deb21b5d795cabfeaa8d9060410377686d
with: with:
bats-version: 1.2.1 bats-version: 1.4.1
- name: Test - name: Test
run: bats tests/*.bats run: bats tests/*.bats
@@ -52,7 +52,7 @@ jobs:
run: ./version-increment.sh run: ./version-increment.sh
env: env:
current_version: ${{ steps.version-lookup.outputs.current-version }} current_version: ${{ steps.version-lookup.outputs.current-version }}
INPUT_SCHEME: calver scheme: calver
- name: Release version - name: Release version
uses: marvinpinto/action-automatic-releases@919008cf3f741b179569b7a6fb4d8860689ab7f0 uses: marvinpinto/action-automatic-releases@919008cf3f741b179569b7a6fb4d8860689ab7f0

View File

@@ -5,8 +5,11 @@
### ⌨️ Example ### ⌨️ Example
```yaml ```yaml
- name: Checkout code
uses: actions/checkout@v2
- name: Get next version - name: Get next version
uses: reecetech/version-increment@2021.10.4 uses: reecetech/version-increment@2022.2.3
id: version id: version
with: with:
scheme: semver scheme: semver
@@ -81,8 +84,10 @@ Examples:
| name | description | | name | description |
| :--- | :--- | | :--- | :--- |
| current_version | The current latest version detected from the git repositories tags | | current-version | The current latest version detected from the git repositories tags |
| current-v-version | The current latest version detected from the git repositories tags, prefixed with a `v` character |
| version | The incremented version number (e.g. the next version) | | version | The incremented version number (e.g. the next version) |
| v-version | The incremented version number (e.g. the next version), prefixed with a `v` character |
## 💕 Contributing ## 💕 Contributing

View File

@@ -20,12 +20,18 @@ inputs:
default: 'patch' default: 'patch'
outputs: outputs:
current_version: current-version:
description: 'Current normal version detected' description: 'Current normal version detected'
value: ${{ steps.version-lookup.outputs.current-version }} value: ${{ steps.version-lookup.outputs.current-version }}
current-v-version:
description: 'Current normal version detected, prefixed with a `v` charatcter'
value: ${{ steps.version-lookup.outputs.current-v-version }}
version: version:
description: 'Incremented version calculated' description: 'Incremented version calculated'
value: ${{ steps.version-increment.outputs.version }} value: ${{ steps.version-increment.outputs.version }}
v-version:
description: 'Incremented version calculated, prefixed with a `v` charatcter'
value: ${{ steps.version-increment.outputs.v-version }}
runs: runs:
using: "composite" using: "composite"
@@ -33,9 +39,13 @@ runs:
- id: version-lookup - id: version-lookup
run: ${{ github.action_path }}/version-lookup.sh run: ${{ github.action_path }}/version-lookup.sh
shell: bash shell: bash
env:
scheme: ${{ inputs.scheme }}
- id: version-increment - id: version-increment
run: ${{ github.action_path }}/version-increment.sh run: ${{ github.action_path }}/version-increment.sh
shell: bash shell: bash
env: env:
current_version: ${{ steps.version-lookup.outputs.current-version }} current_version: ${{ steps.version-lookup.outputs.current-version }}
increment: ${{ inputs.increment }}
scheme: ${{ inputs.scheme }}

View File

@@ -15,7 +15,7 @@ pcre_old_calver='^(?P<major>0|[1-9]\d*)-0{0,1}(?P<minor>0|[0-9]\d*)-R(?P<patch>0
## Input validation ## Input validation
input_errors='false' input_errors='false'
scheme="${INPUT_SCHEME:-semver}" scheme="${scheme:-semver}"
if [[ "${scheme}" != 'semver' && "${scheme}" != 'calver' ]] ; then if [[ "${scheme}" != 'semver' && "${scheme}" != 'calver' ]] ; then
echo "🛑 Value of 'scheme' is not valid, choose from 'semver' or 'calver'" 1>&2 echo "🛑 Value of 'scheme' is not valid, choose from 'semver' or 'calver'" 1>&2
input_errors='true' input_errors='true'

View File

@@ -44,7 +44,7 @@ function init_repo {
@test "fails if invalid scheme given" { @test "fails if invalid scheme given" {
init_repo init_repo
export INPUT_SCHEME="foover" export scheme="foover"
run ../../version-increment.sh run ../../version-increment.sh
@@ -56,7 +56,7 @@ function init_repo {
@test "fails if invalid increment given" { @test "fails if invalid increment given" {
init_repo init_repo
export INPUT_INCREMENT="critical" export increment="critical"
run ../../version-increment.sh run ../../version-increment.sh
@@ -69,7 +69,7 @@ function init_repo {
init_repo init_repo
export current_version=1.2.3 export current_version=1.2.3
export INPUT_INCREMENT="patch" export increment="patch"
run ../../version-increment.sh run ../../version-increment.sh
@@ -82,7 +82,7 @@ function init_repo {
init_repo init_repo
export current_version=1.2.3 export current_version=1.2.3
export INPUT_INCREMENT="minor" export increment="minor"
run ../../version-increment.sh run ../../version-increment.sh
@@ -95,7 +95,7 @@ function init_repo {
init_repo init_repo
export current_version=1.2.3 export current_version=1.2.3
export INPUT_INCREMENT="major" export increment="major"
run ../../version-increment.sh run ../../version-increment.sh
@@ -104,11 +104,25 @@ function init_repo {
[[ "$output" = *"::set-output name=version::2.0.0"* ]] [[ "$output" = *"::set-output name=version::2.0.0"* ]]
} }
@test "prefixes with v" {
init_repo
export current_version=1.2.3
export increment="major"
run ../../version-increment.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"::set-output name=version::2.0.0"* ]] &&
[[ "$output" = *"::set-output name=v-version::v2.0.0"* ]]
}
@test "increments to a new month (calver)" { @test "increments to a new month (calver)" {
init_repo init_repo
export current_version=2020.6.4 export current_version=2020.6.4
export INPUT_SCHEME="calver" export scheme="calver"
run ../../version-increment.sh run ../../version-increment.sh
@@ -121,7 +135,7 @@ function init_repo {
init_repo init_repo
export current_version="$(date +%Y.%-m.123)" export current_version="$(date +%Y.%-m.123)"
export INPUT_SCHEME="calver" export scheme="calver"
run ../../version-increment.sh run ../../version-increment.sh

View File

@@ -20,7 +20,7 @@ function init_repo {
@test "fails if invalid scheme given" { @test "fails if invalid scheme given" {
init_repo init_repo
export INPUT_SCHEME="foover" export scheme="foover"
run ../../version-lookup.sh run ../../version-lookup.sh
@@ -43,6 +43,19 @@ function init_repo {
[[ "$output" = *"::set-output name=current-version::0.1.2"* ]] [[ "$output" = *"::set-output name=current-version::0.1.2"* ]]
} }
@test "prefixes with a v" {
init_repo
git tag 0.1.2
run ../../version-lookup.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"::set-output name=current-version::0.1.2"* ]] &&
[[ "$output" = *"::set-output name=current-v-version::v0.1.2"* ]]
}
@test "finds the current normal version even if there's a newer pre-release version" { @test "finds the current normal version even if there's a newer pre-release version" {
init_repo init_repo
@@ -81,7 +94,7 @@ function init_repo {
@test "returns a calver if no normal version detected and calver scheme specified" { @test "returns a calver if no normal version detected and calver scheme specified" {
init_repo init_repo
export INPUT_SCHEME="calver" export scheme="calver"
run ../../version-lookup.sh run ../../version-lookup.sh

View File

@@ -6,7 +6,7 @@ script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "${script_dir}/shared.sh" source "${script_dir}/shared.sh"
increment="${INPUT_INCREMENT:-patch}" increment="${increment:-patch}"
if [[ "${increment}" != 'patch' && "${increment}" != 'minor' && "${increment}" != 'major' ]] ; then if [[ "${increment}" != 'patch' && "${increment}" != 'minor' && "${increment}" != 'major' ]] ; then
echo "🛑 Value of 'increment' is not valid, choose from 'major', 'minor', or 'patch'" 1>&2 echo "🛑 Value of 'increment' is not valid, choose from 'major', 'minor', or 'patch'" 1>&2
input_errors='true' input_errors='true'
@@ -87,3 +87,4 @@ fi
echo " The new version is ${new_version}" echo " The new version is ${new_version}"
echo "::set-output name=version::${new_version}" echo "::set-output name=version::${new_version}"
echo "::set-output name=v-version::v${new_version}"

View File

@@ -34,11 +34,11 @@ fi
## Version parsing ## Version parsing
# detect current version - removing "v" from start of tag if it exists # detect current version - removing "v" from start of tag if it exists
current_version="$(git tag -l | { ${grep} -P "${pcre_allow_vprefix}" || true; } | sed 's/^v//g' | sort -V --reverse | head -n1)" current_version="$(git tag -l | { ${grep} -P "${pcre_allow_vprefix}" || true; } | sed 's/^v//g' | sort -V | tail -n 1)"
# support transition from an old reecetech calver style (yyyy-mm-Rr, where R is the literal `R`, and r is the nth release for the month) # support transition from an old reecetech calver style (yyyy-mm-Rr, where R is the literal `R`, and r is the nth release for the month)
if [[ -z "${current_version:-}" ]] ; then if [[ -z "${current_version:-}" ]] ; then
current_version="$(git tag -l | { ${grep} -P "${pcre_old_calver}" || true; } | sort -V --reverse | head -n1)" current_version="$(git tag -l | { ${grep} -P "${pcre_old_calver}" || true; } | sort -V | tail -n 1)"
if [[ -n "${current_version:-}" ]] ; then if [[ -n "${current_version:-}" ]] ; then
# convert - to . and drop leading zeros & the R # convert - to . and drop leading zeros & the R
current_version="$(echo "${current_version}" | sed -r 's/^([0-9]+)-0{0,1}([0-9]+)-R0{0,1}([0-9]+)$/\1.\2.\3/')" current_version="$(echo "${current_version}" | sed -r 's/^([0-9]+)-0{0,1}([0-9]+)-R0{0,1}([0-9]+)$/\1.\2.\3/')"
@@ -62,3 +62,4 @@ fi
echo " The current normal version is ${current_version}" echo " The current normal version is ${current_version}"
echo "::set-output name=current-version::${current_version}" echo "::set-output name=current-version::${current_version}"
echo "::set-output name=current-v-version::v${current_version}"