16 Commits

Author SHA1 Message Date
Phil Jay
5f59cf0be0 Merge pull request #47 from reecetech/api-conventional-conflict
Support conventional commits in API mode
2026-08-10 12:46:12 +10:00
Phil Jay
26724048ca Add API call for git log 2026-08-10 12:38:33 +10:00
Phil Jay
69ceeacf75 Add integration test for API + CC error 2026-08-10 12:27:44 +10:00
Phil Jay
284d1792e3 Add test to expose issue 2026-08-10 12:19:47 +10:00
Phil Jay
9e616d7ba5 Merge pull request #46 from reecetech/permissions
Add permission to write for tag/release
2026-08-10 07:49:04 +10:00
Phil Jay
cfe1cec8c0 Add permission to write for tag/release 2026-08-10 07:42:06 +10:00
Phil Jay
ca9517f82b Merge pull request #44 from reecetech/update-workflow-deps
Update workflow deps (checkout, bats-action, action-gh-release), and update BATS to v1.14.0
2026-08-07 15:34:34 +10:00
Phil Jay
d503d08693 Update to latest BATS version 2026-08-07 15:19:26 +10:00
Phil Jay
a096ae3fb1 Update to latest versions of actions 2026-08-07 15:19:16 +10:00
Phil Jay
a29aa752dc Merge pull request #41 from reecetech/fixup
Fix: wrong version variable
2024-10-14 06:23:01 +11:00
Phil Jay
f1dfe8f5a1 Update README for new version 2024-10-11 16:20:18 +11:00
Phil Jay
feaac9b904 Fix: wrong version variable 2024-10-11 16:19:40 +11:00
Phil Jay
36b965a12f Merge pull request #40 from reecetech/workflow-tweek
Update test-and-release.yml
2024-10-11 15:50:11 +11:00
Phil Jay
9a52af87bc Update test-and-release.yml
Use `v2` of `action-gh-release`

Use action directly instead of using the scripts to provide a more direct example of use
2024-10-10 18:26:44 +11:00
George Kolecsanyi
a5d65984a6 Merge pull request #38 from reecetech/fix-when-no-prefix
set prefix tag default to empty string
2024-09-03 12:30:23 +10:00
George Kolecsanyi
39ac246d0c set prefix tag default to empty string 2024-09-03 12:22:17 +10:00
5 changed files with 72 additions and 24 deletions

View File

@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@2.0.0
@@ -24,12 +24,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Setup bats
uses: bats-core/bats-action@2.0.0
uses: bats-core/bats-action@4.0.0
with:
bats-version: 1.11.0
bats-version: 1.14.0
- name: Test
run: bats tests/*.bats
@@ -40,7 +40,7 @@ jobs:
github_token: ${{ github.token }}
steps:
- name: Checkout code # have to checkout to have the source code available
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Remove .git directory # remove the git directory to make the testing valid
run: rm -rf .git/
@@ -67,6 +67,18 @@ jobs:
shell: bash
run: '[[ "$(date +%Y.%-m)" == "$(echo "${{ steps.version-increment.outputs.VERSION }}" | cut -d "." -f 1-2)" ]]'
- name: Test conventional commit increment version (with API)
id: version-increment-conventional
run: ./version-increment.sh
env:
current_version: 1.2.3
scheme: conventional_commits
use_api: 'true'
- name: Check conventional commit increment result
shell: bash
run: '[[ -n "${{ steps.version-increment-conventional.outputs.VERSION }}" ]]'
test-action-yml: # integration testing
needs:
- lint
@@ -82,7 +94,7 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code # have to checkout to have the source code available
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Remove .git directory # remove the git directory to make the testing valid
shell: bash
@@ -96,7 +108,7 @@ jobs:
use_api: true
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Get next version via Git
uses: ./
@@ -132,28 +144,25 @@ jobs:
[[ "${{ steps.version-prefix.outputs.prefixed-version }}" = "foo/bar@0.0.1"* ]]
release:
permissions:
contents: write
needs:
- test-action-yml
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v7
- 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: Get next version
uses: ./
id: version
with:
scheme: 'calver'
- name: Release version
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v3
if: ${{ github.ref_name == github.event.repository.default_branch }}
with:
draft: false
prerelease: false
tag_name: "${{ steps.version-increment.outputs.VERSION }}"
tag_name: "${{ steps.version.outputs.version }}"

View File

@@ -13,7 +13,7 @@
uses: actions/checkout@v4
- name: Get next version
uses: reecetech/version-increment@2024.4.3
uses: reecetech/version-increment@2024.10.1
id: version
with:
scheme: semver
@@ -34,7 +34,7 @@ use the API mode:
```yaml
- name: Get next version
uses: reecetech/version-increment@2024.4.3
uses: reecetech/version-increment@2024.10.1
id: version
with:
use_api: true

View File

@@ -44,7 +44,7 @@ inputs:
description: |
Prefix the tag with a string (defaults to empty string). e.g. if set to `@org/product/` the action will filter by this prefix and return `@org/product/1.2.3` in `prefixed-version` output
required: false
default: false
default: ''
outputs:
current-version:

View File

@@ -282,6 +282,34 @@ function init_repo {
[[ "$output" = *"VERSION=$(date +%Y.%-m.1)+pre.${short_ref}"* ]]
}
@test "uses the API commit message for conventional commits without a checkout" {
local no_checkout_dir="${BATS_TEST_TMPDIR}/no-checkout"
local mock_bin="${BATS_TEST_TMPDIR}/bin"
mkdir -p "${no_checkout_dir}" "${mock_bin}"
printf '%s\n' \
'#!/usr/bin/env bash' \
'printf "%s\n" "{\"commit\":{\"message\":\"feat: API-only change\"}}"' \
> "${mock_bin}/curl"
chmod +x "${mock_bin}/curl"
export PATH="${mock_bin}:${PATH}"
export current_version=1.2.3
export scheme="conventional_commits"
export use_api="true"
export github_token="test-token"
export GITHUB_REF="refs/heads/main"
export GITHUB_SHA="abcdef1234567890"
export GITHUB_API_URL="https://fake.github.example.com"
export GITHUB_REPOSITORY="gh-org/example"
run bash -c 'cd "$1" && version-increment.sh' -- "${no_checkout_dir}"
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"VERSION=1.3.0"* ]]
}
@test "increments the patch version after a fix commit (conventional commits)" {
init_repo

View File

@@ -63,7 +63,18 @@ fi
## Conventional commits
if [[ "${scheme}" == 'conventional_commits' ]] ; then
# Get message from given commit
commit_message=$(git log -1 --pretty=format:%B "${git_commit_sha}")
if [[ "${use_api:-}" == 'true' ]] ; then
commit_message="$(
curl -fsSL \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${github_token}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/commits/${git_commit_sha}" \
| jq -r '.commit.message'
)"
else
commit_message="$(git log -1 --pretty=format:%B "${git_commit_sha}")"
fi
# Check commit message header
found_match='false'