mirror of
https://github.com/reecetech/version-increment.git
synced 2026-08-18 11:07:50 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
28d33de033 | ||
|
|
1f38adcc34 | ||
|
|
72771d55b6 | ||
|
|
4ccdd6072c | ||
|
|
79c9fd45a4 | ||
|
|
1b05caeb4c | ||
|
|
f275de0d59 |
1
.github/workflows/test-and-release.yml
vendored
1
.github/workflows/test-and-release.yml
vendored
@@ -166,3 +166,4 @@ jobs:
|
|||||||
draft: false
|
draft: false
|
||||||
prerelease: false
|
prerelease: false
|
||||||
tag_name: "${{ steps.version.outputs.version }}"
|
tag_name: "${{ steps.version.outputs.version }}"
|
||||||
|
generate_release_notes: true
|
||||||
|
|||||||
40
README.md
40
README.md
@@ -1,5 +1,11 @@
|
|||||||
# Version Increment ➕
|
# Version Increment ➕
|
||||||
|
|
||||||
|
This action calculates the next version based on existing Git tags.
|
||||||
|
|
||||||
|
Intentionally, this action does not create tags. It's suggested to use an
|
||||||
|
action dedicated to creating tags in a step following the successful steps
|
||||||
|
that make up your test, build and releasing process. See the example below.
|
||||||
|
|
||||||
## Use 📄
|
## Use 📄
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
@@ -9,22 +15,42 @@
|
|||||||
### Example ⌨️
|
### Example ⌨️
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
name: Build and release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-release:
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v7
|
||||||
|
|
||||||
- name: Get next version
|
- name: Get next version
|
||||||
uses: reecetech/version-increment@2024.10.1
|
uses: reecetech/version-increment@2026.8.4
|
||||||
id: version
|
id: version
|
||||||
with:
|
with:
|
||||||
scheme: semver
|
scheme: semver
|
||||||
increment: patch
|
increment: patch
|
||||||
|
|
||||||
|
# Example building, using the `version` output from `version-increment`
|
||||||
- name: Build image
|
- name: Build image
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v7
|
||||||
with:
|
with:
|
||||||
push: false
|
|
||||||
tags: "example/application:${{ steps.version.outputs.version }}"
|
tags: "example/application:${{ steps.version.outputs.version }}"
|
||||||
context: .
|
|
||||||
|
- name: Create tag & GitHub release
|
||||||
|
uses: softprops/action-gh-release@v3
|
||||||
|
with:
|
||||||
|
draft: false
|
||||||
|
generate_release_notes: true
|
||||||
|
prerelease: false
|
||||||
|
tag_name: ${{ steps.version.outputs.version }}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### API mode 🔗
|
#### API mode 🔗
|
||||||
@@ -34,7 +60,7 @@ use the API mode:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Get next version
|
- name: Get next version
|
||||||
uses: reecetech/version-increment@2024.10.1
|
uses: reecetech/version-increment@2026.8.4
|
||||||
id: version
|
id: version
|
||||||
with:
|
with:
|
||||||
use_api: true
|
use_api: true
|
||||||
@@ -106,7 +132,7 @@ release branch name as an input. For example:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Get next version
|
- name: Get next version
|
||||||
uses: reecetech/version-increment@2023.10.1
|
uses: reecetech/version-increment@2026.8.4
|
||||||
id: version
|
id: version
|
||||||
with:
|
with:
|
||||||
release_branch: publish
|
release_branch: publish
|
||||||
|
|||||||
16
shared.sh
16
shared.sh
@@ -20,19 +20,13 @@ pcre_old_calver='^(?P<major>0|[1-9]\d*)-0{0,1}(?P<minor>0|[0-9]\d*)-R(?P<patch>0
|
|||||||
remove_prefix() {
|
remove_prefix() {
|
||||||
local tag="$1"
|
local tag="$1"
|
||||||
if [[ -n "${tag_prefix:-}" ]]; then
|
if [[ -n "${tag_prefix:-}" ]]; then
|
||||||
# Escape special characters in tag_prefix
|
if [[ "${tag}" == "${tag_prefix}"* ]]; then
|
||||||
local escaped_prefix
|
printf '%s\n' "${tag:${#tag_prefix}}"
|
||||||
escaped_prefix=$(printf '%s\n' "$tag_prefix" | sed 's/[][\/.^$*]/\\&/g') # special chars matched by sed: ] [ / . ^ $ *
|
else
|
||||||
|
printf '\n'
|
||||||
# shellcheck disable=SC2143
|
|
||||||
if [[ -z "$(echo "${tag}" | grep "^${tag_prefix}")" ]] ; then
|
|
||||||
echo ""
|
|
||||||
return
|
|
||||||
fi
|
fi
|
||||||
# shellcheck disable=SC2001
|
|
||||||
echo "${tag}" | sed "s|^${escaped_prefix}||" # Use | as the delimiter to avoid conflicts with /
|
|
||||||
else
|
else
|
||||||
echo "${tag}"
|
printf '%s\n' "${tag}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,35 @@ function init_repo {
|
|||||||
[[ "$output" = *"CURRENT_V_VERSION=v0.1.2"* ]]
|
[[ "$output" = *"CURRENT_V_VERSION=v0.1.2"* ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "treats tag_prefix as a literal string" {
|
||||||
|
init_repo
|
||||||
|
|
||||||
|
export tag_prefix="v."
|
||||||
|
|
||||||
|
git tag v.1.2.3
|
||||||
|
git tag v1.9.9
|
||||||
|
|
||||||
|
run version-lookup.sh
|
||||||
|
|
||||||
|
print_run_info
|
||||||
|
[ "$status" -eq 0 ] &&
|
||||||
|
[[ "$output" = *"CURRENT_VERSION=1.2.3"* ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "supports a tag_prefix containing a sed delimiter" {
|
||||||
|
init_repo
|
||||||
|
|
||||||
|
export tag_prefix="foo|bar@"
|
||||||
|
|
||||||
|
git tag "foo|bar@1.2.3"
|
||||||
|
|
||||||
|
run version-lookup.sh
|
||||||
|
|
||||||
|
print_run_info
|
||||||
|
[ "$status" -eq 0 ] &&
|
||||||
|
[[ "$output" = *"CURRENT_VERSION=1.2.3"* ]]
|
||||||
|
}
|
||||||
|
|
||||||
@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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user