24 Commits

Author SHA1 Message Date
Phil Jay
3d5d532814 Avoid version 2020 warning
e.g.

```
🛑 The major version number is greater than 2020, but the scheme is not set to 'calver'
```
2023-10-19 00:25:49 +11:00
Phil Jay
b78a17540f Test use_api branch 2023-10-19 00:20:53 +11:00
Phil Jay
de5ab041fb Merge pull request #25 from reecetech/update-shellcheck-action
Update shellcheck action
2023-09-20 10:41:05 +10:00
Phil Jay
3ac8392aa4 Update to latest shellcheck
Solves for `set-output` deprecation warnings
2023-09-20 10:39:13 +10:00
Phil Jay
72c1fa6077 Bump up example version 2023-09-20 10:38:38 +10:00
Phil Jay
f21e559797 Merge pull request #24 from reecetech/swtich-to-softprops/action-gh-release
Replace out-of-date action
2023-09-20 10:36:27 +10:00
Phil Jay
4415fcb6c0 Replace out-of-date action
The update to node 16 has been un-merged for a long time: https://github.com/marvinpinto/action-automatic-releases/pull/2
2023-09-20 10:33:38 +10:00
Phil Jay
4846cbaf9d Merge pull request #23 from ps-jay/main
Introduce test for `release_branch`, & update README
2023-09-18 09:11:58 +10:00
Phil Jay
468208262a Default variable to blank string 2023-09-18 09:01:27 +10:00
Phil Jay
e5f8667dfc Add test for release_branch 2023-09-18 09:01:27 +10:00
Phil Jay
2ef15157dd Update README 2023-09-18 09:01:27 +10:00
Phil Jay
0974302def Merge pull request #22 from octoev/main
Add release branch as an input
2023-09-18 09:00:11 +10:00
Adam Short
67d70b45a4 Specify "release_branch" is not required 2023-09-05 10:15:26 +01:00
adamshortev
47e175a747 Apply suggestions from code review
Co-authored-by: Chris Bennett <110393183+oev-chrisbennett@users.noreply.github.com>
2023-08-30 11:48:14 +01:00
Adam Short
8202de8885 Give action unique name. 2023-08-30 11:17:54 +01:00
Adam Short
fa8feb816e Add release branch as an input 2023-08-25 16:46:55 +01:00
Phil Jay
1e4c88d873 Merge pull request #21 from reecetech/support-pep440
Add PEP440 compatibility mode
2023-04-27 12:00:51 +10:00
Phil Jay
d5f78b25d1 Update test cases 2023-04-27 11:59:49 +10:00
Phil Jay
bfb5689c4d Update README 2023-04-27 09:33:35 +10:00
Phil Jay
f81c317cbd Alter PEP440 handling to support both sem and cal 2023-04-27 09:10:47 +10:00
Phil Jay
bb0e075f8b Add pep440 mode 2023-04-26 16:31:08 +10:00
Phil Jay
f1fae3d6b7 Merge pull request #20 from reecetech/fix-label
Fix output name to match documentation
2023-03-10 12:49:39 +11:00
Phil Jay
77dfab16c0 Update README.md for next release 2023-03-10 12:41:56 +11:00
Phil Jay
2414f2fa44 Fix output name to match documentation 2023-03-10 12:40:51 +11:00
6 changed files with 143 additions and 59 deletions

View File

@@ -9,56 +9,12 @@ on:
- '**'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@94e0aab03ca135d11a35e5bfc14e6746dc56e7e9 # v1.1.0
with:
check_together: 'yes'
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup bats
uses: mig4/setup-bats@af9a00deb21b5d795cabfeaa8d9060410377686d # v1.2.0
- name: Get next version
uses: reecetech/version-increment@use_api
id: version
with:
bats-version: 1.8.0
- name: Test
run: bats tests/*.bats
release:
needs:
- lint
- test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Lookup version
id: version-lookup
run: ./version-lookup.sh
- name: Increment version
id: version-increment
run: ./version-increment.sh
env:
current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }}
scheme: calver
- name: Release version
uses: marvinpinto/action-automatic-releases@919008cf3f741b179569b7a6fb4d8860689ab7f0 # v1.2.1
if: ${{ github.ref_name == github.event.repository.default_branch }}
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
draft: false
prerelease: false
automatic_release_tag: "${{ steps.version-increment.outputs.VERSION }}"
use_api: true

View File

@@ -9,7 +9,7 @@
uses: actions/checkout@v2
- name: Get next version
uses: reecetech/version-increment@2022.10.3
uses: reecetech/version-increment@2023.9.3
id: version
with:
scheme: semver
@@ -24,6 +24,7 @@
```
### 🔖 semver
This action will detect the current latest _normal_ semantic version (semver) from the tags in
a git repository. It will increment the version as directed (by default: +1 to
the patch digit). Both the current latest and the incremented version are
@@ -52,14 +53,16 @@ e.g. `2021.6.2`
| minor | month | `6` |
| patch | release | `2` | The *n*th release for the month |
If the current latest normal version is not the current year and month, then the year and month digits will be
If the current latest normal version is not the current year and month, then the
year and month digits will be
set to the current year and month, and the release digit will be reset to 1.
### 🎋 Default branch vs. any other branch
**Default branch**
The action will return a _normal_ version if it is detected that the current commit is on the default branch (usually `main`).
The action will return a _normal_ version if it is detected that the current commit
is on the default branch (usually `main`).
Examples:
* `1.2.7`
@@ -67,7 +70,10 @@ Examples:
**Any other branch**
The action will return a _pre-release_ version if any other branch is detected (e.g. `new-feature`, `bugfix/foo`, etc). The _pre-release_ portion of the version number will be the literal string `pre.` followed by the git commit ID short reference SHA (trimmed of any leading zeros).
The action will return a _pre-release_ version if any other branch is detected
(e.g. `new-feature`, `bugfix/foo`, etc). The _pre-release_ portion of the version number
will be the literal string `pre.` followed by the git commit ID short reference SHA
(trimmed of any leading zeros).
Examples:
* `1.2.7-pre.41218aa78`
@@ -78,7 +84,9 @@ Examples:
| name | description | required | default |
| :--- | :--- | :--- | :--- |
| scheme | The versioning scheme in-use, either `semver` or `calver` | No | `semver` |
| pep440 | Set to `true` for PEP440 compatibility of _pre-release_ versions by making use of the build metadata segment of semver, which maps to local version identifier in PEP440 | No | `false` |
| increment | The digit to increment, either `major`, `minor` or `patch`, ignored if `scheme` == `calver` | No | `patch` |
| release_branch | Specify a non-default branch to use for the release tag (the one without -pre) | No | |
### 📤 Outputs

View File

@@ -11,6 +11,10 @@ inputs:
description: 'Versioning scheme - semver, or, calver (defaults to semver)'
required: false
default: 'semver'
pep440:
description: 'PEP440 compatibility mode - shifts the pre-release version information into build metadata instead'
required: false
default: false
increment:
description: |
Field to increment - major, minor, or, patch (defaults to patch)
@@ -18,6 +22,10 @@ inputs:
Not applicable to `calver` scheme
required: false
default: 'patch'
release_branch:
description: 'Specify a non-default branch to use for the release tag (the one without -pre)'
required: false
type: string
outputs:
current-version:
@@ -41,7 +49,7 @@ outputs:
patch-version:
description: 'Patch number of the incremented version'
value: ${{ steps.version-increment.outputs.PATCH_VERSION }}
pre-release-version:
pre-release-label:
description: 'Pre-release label of the incremented version'
value: ${{ steps.version-increment.outputs.PRE_RELEASE_LABEL }}
major-v-version:
@@ -69,4 +77,6 @@ runs:
env:
current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }}
increment: ${{ inputs.increment }}
pep440: ${{ inputs.pep440 }}
scheme: ${{ inputs.scheme }}
release_branch: ${{ inputs.release_branch }}

View File

@@ -21,6 +21,12 @@ if [[ "${scheme}" != 'semver' && "${scheme}" != 'calver' ]] ; then
input_errors='true'
fi
pep440="${pep440:-false}"
if [[ "${pep440}" != 'false' && "${pep440}" != 'true' ]] ; then
echo "🛑 Value of 'pep440' is not valid, choose from 'false' or 'true'" 1>&2
input_errors='true'
fi
##==----------------------------------------------------------------------------
## MacOS compatibility - for local testing

View File

@@ -53,6 +53,18 @@ function init_repo {
[[ "$output" = *"Value of 'scheme' is not valid"* ]]
}
@test "fails if invalid value for pep440 given" {
init_repo
export pep440="yes"
run ../../version-increment.sh
print_run_info
[ "$status" -eq 8 ] &&
[[ "$output" = *"Value of 'pep440' is not valid"* ]]
}
@test "fails if invalid increment given" {
init_repo
@@ -104,6 +116,23 @@ function init_repo {
[[ "$output" = *"VERSION=1.3.0"* ]]
}
@test "increments the minor digit correctly (explicitly not pep440)" {
init_repo
export current_version=1.2.3
export pep404="false"
export increment="minor"
run ../../version-increment.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"MAJOR_VERSION=1"* ]] &&
[[ "$output" = *"MINOR_VERSION=3"* ]] &&
[[ "$output" = *"PATCH_VERSION=0"* ]] &&
[[ "$output" = *"VERSION=1.3.0"* ]]
}
@test "increments the major digit correctly (semver)" {
init_repo
@@ -120,6 +149,23 @@ function init_repo {
[[ "$output" = *"VERSION=2.0.0"* ]]
}
@test "increments the major digit correctly (pep440 mode)" {
init_repo
export current_version=1.2.3
export pep404="true"
export increment="major"
run ../../version-increment.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"MAJOR_VERSION=2"* ]] &&
[[ "$output" = *"MINOR_VERSION=0"* ]] &&
[[ "$output" = *"PATCH_VERSION=0"* ]] &&
[[ "$output" = *"VERSION=2.0.0"* ]]
}
@test "prefixes with v" {
init_repo
@@ -174,6 +220,55 @@ function init_repo {
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"PRE_RELEASE_LABEL=pre.${short_ref}"* ]]
[[ "$output" = *"PRE_RELEASE_LABEL=pre.${short_ref}"* ]] &&
[[ "$output" = *"VERSION=1.2.4-pre.${short_ref}"* ]]
}
@test "does not append prerelease information if on a specified release_branch" {
init_repo
export current_version=1.2.3
export GITHUB_REF="refs/heads/releases"
export release_branch="releases"
run ../../version-increment.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" != *"PRE_RELEASE_LABEL=pre."* ]] &&
[[ "$output" != *"VERSION=1.2.4-pre."* ]] &&
[[ "$output" = *"VERSION=1.2.4"* ]]
}
@test "appends prerelease information in pep440 compatible way when pep440 is true" {
init_repo
export current_version=10.20.30
export pep440="true"
export GITHUB_REF="refs/heads/super-awesome-python"
export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')"
run ../../version-increment.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"PRE_RELEASE_LABEL=pre.${short_ref}"* ]] &&
[[ "$output" = *"VERSION=10.20.31+pre.${short_ref}"* ]]
}
@test "appends prerelease information in pep440 compatible way when pep440 is true, and using calver scheme" {
init_repo
export current_version=2020.6.4
export scheme="calver"
export pep440="true"
export GITHUB_REF="refs/heads/super-awesome-python"
export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')"
run ../../version-increment.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"PRE_RELEASE_LABEL=pre.${short_ref}"* ]] &&
[[ "$output" = *"VERSION=$(date +%Y.%-m.1)+pre.${short_ref}"* ]]
}

View File

@@ -32,6 +32,11 @@ default_branch='main'
if [[ -z "${BATS_VERSION:-}" ]] ; then
default_branch="$(git remote show origin | ${grep} 'HEAD branch' | cut -d ' ' -f 5)"
fi
# use release_branch if not empty
if [[ -n "${release_branch:-}" ]] ; then
default_branch="${release_branch}"
fi
current_ref="${GITHUB_REF:-}"
git_commit="$(git rev-parse --short HEAD | sed 's/0*//')" # trim leading zeros, because semver doesn't allow that in
# the 'pre-release version' part, but we can't use the + char
@@ -75,7 +80,11 @@ fi
# add pre-release info to version if not the default branch
if [[ "${current_ref}" != "refs/heads/${default_branch}" ]] ; then
pre_release="pre.${git_commit}"
if [[ "${pep440:-}" == 'true' ]] ; then
new_version="${new_version}+${pre_release}"
else
new_version="${new_version}-${pre_release}"
fi
echo "PRE_RELEASE_LABEL=${pre_release}" >> "${GITHUB_OUTPUT}"
fi