From c1893b945a8d58c724cc64b72588728c401f2d04 Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Wed, 19 Oct 2022 08:51:07 +1100 Subject: [PATCH 1/5] Add GITHUB_OUTPUT override for testing --- shared.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/shared.sh b/shared.sh index 2068cee..d924800 100644 --- a/shared.sh +++ b/shared.sh @@ -32,3 +32,10 @@ if [[ "$(uname)" == "Darwin" ]] ; then exit 9 fi fi + +##==---------------------------------------------------------------------------- +## Non GitHub compatibility - for testing both locally and in BATS + +if [[ -z "${GITHUB_OUTPUT:-}" || -n "${BATS_VERSION:-}" ]] ; then + export GITHUB_OUTPUT="/dev/stdout" +fi From e7c0a5aac29536d9cc44cf4f7a8b73b76e80a7eb Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Wed, 19 Oct 2022 08:51:44 +1100 Subject: [PATCH 2/5] Update tests to _not_ expect `set-output` --- tests/test_version-increment.bats | 48 ++++++++++++++++++------------- tests/test_version-lookup.bats | 25 ++++++++++------ 2 files changed, 44 insertions(+), 29 deletions(-) diff --git a/tests/test_version-increment.bats b/tests/test_version-increment.bats index 457e815..4e15087 100644 --- a/tests/test_version-increment.bats +++ b/tests/test_version-increment.bats @@ -65,6 +65,13 @@ function init_repo { [[ "$output" = *"Value of 'increment' is not valid, choose from 'major', 'minor', or 'patch'"* ]] } +@test "no deprecated set-output calls made" { + run grep -q "::set-output" version-increment.sh + + print_run_info + [ "$status" -eq 1 ] +} + @test "increments the patch digit correctly (semver)" { init_repo @@ -75,10 +82,10 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=major-version::1"* ]] && - [[ "$output" = *"::set-output name=minor-version::2"* ]] && - [[ "$output" = *"::set-output name=patch-version::4"* ]] && - [[ "$output" = *"::set-output name=version::1.2.4"* ]] + [[ "$output" = *"MAJOR_VERSION=1"* ]] && + [[ "$output" = *"MINOR_VERSION=2"* ]] && + [[ "$output" = *"PATCH_VERSION=4"* ]] && + [[ "$output" = *"VERSION=1.2.4"* ]] } @test "increments the minor digit correctly (semver)" { @@ -91,10 +98,10 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=major-version::1"* ]] && - [[ "$output" = *"::set-output name=minor-version::3"* ]] && - [[ "$output" = *"::set-output name=patch-version::0"* ]] && - [[ "$output" = *"::set-output name=version::1.3.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)" { @@ -107,10 +114,10 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=major-version::2"* ]] && - [[ "$output" = *"::set-output name=minor-version::0"* ]] && - [[ "$output" = *"::set-output name=patch-version::0"* ]] && - [[ "$output" = *"::set-output name=version::2.0.0"* ]] + [[ "$output" = *"MAJOR_VERSION=2"* ]] && + [[ "$output" = *"MINOR_VERSION=0"* ]] && + [[ "$output" = *"PATCH_VERSION=0"* ]] && + [[ "$output" = *"VERSION=2.0.0"* ]] } @test "prefixes with v" { @@ -123,11 +130,11 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=version::2.0.0"* ]] && - [[ "$output" = *"::set-output name=major-v-version::v2"* ]] && - [[ "$output" = *"::set-output name=minor-v-version::v0"* ]] && - [[ "$output" = *"::set-output name=patch-v-version::v0"* ]] && - [[ "$output" = *"::set-output name=v-version::v2.0.0"* ]] + [[ "$output" = *"VERSION=2.0.0"* ]] && + [[ "$output" = *"MAJOR_V_VERSION=v2"* ]] && + [[ "$output" = *"MINOR_V_VERSION=v0"* ]] && + [[ "$output" = *"PATCH_V_VERSION=v0"* ]] && + [[ "$output" = *"V_VERSION=v2.0.0"* ]] } @test "increments to a new month (calver)" { @@ -140,7 +147,7 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=version::$(date +%Y.%-m.1)"* ]] + [[ "$output" = *"VERSION=$(date +%Y.%-m.1)"* ]] } @test "increments the patch digit within a month (calver)" { @@ -153,7 +160,7 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=version::$(date +%Y.%-m.124)"* ]] + [[ "$output" = *"VERSION=$(date +%Y.%-m.124)"* ]] } @test "appends prerelease information if on a branch" { @@ -167,5 +174,6 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=version::1.2.4-pre.${short_ref}"* ]] + [[ "$output" = *"PRE_RELEASE_LABEL=pre.${short_ref}"* ]] + [[ "$output" = *"VERSION=1.2.4-pre.${short_ref}"* ]] } diff --git a/tests/test_version-lookup.bats b/tests/test_version-lookup.bats index 1ea10d1..1287999 100644 --- a/tests/test_version-lookup.bats +++ b/tests/test_version-lookup.bats @@ -29,6 +29,13 @@ function init_repo { [[ "$output" = *"Value of 'scheme' is not valid"* ]] } +@test "no deprecated set-output calls made" { + run grep -q "::set-output" version-lookup.sh + + print_run_info + [ "$status" -eq 1 ] +} + @test "finds the current normal version" { init_repo @@ -40,7 +47,7 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=current-version::0.1.2"* ]] + [[ "$output" = *"CURRENT_VERSION=0.1.2"* ]] } @test "prefixes with a v" { @@ -52,8 +59,8 @@ function init_repo { 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"* ]] + [[ "$output" = *"CURRENT_VERSION=0.1.2"* ]] && + [[ "$output" = *"CURRENT_V_VERSION=v0.1.2"* ]] } @test "finds the current normal version even if there's a newer pre-release version" { @@ -66,7 +73,7 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=current-version::1.2.300"* ]] + [[ "$output" = *"CURRENT_VERSION=1.2.300"* ]] } @test "returns 0.0.0 if no normal version detected" { @@ -76,7 +83,7 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=current-version::0.0.0"* ]] + [[ "$output" = *"CURRENT_VERSION=0.0.0"* ]] } @test "returns 0.0.0 if no normal version detected even if there's a pre-release version" { @@ -88,7 +95,7 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=current-version::0.0.0"* ]] + [[ "$output" = *"CURRENT_VERSION=0.0.0"* ]] } @test "returns a calver if no normal version detected and calver scheme specified" { @@ -100,7 +107,7 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=current-version::$(date '+%Y.%-m.0')"* ]] + [[ "$output" = *"CURRENT_VERSION=$(date '+%Y.%-m.0')"* ]] } @test "converts from older calver scheme automatically" { @@ -112,7 +119,7 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=current-version::2020.9.2"* ]] + [[ "$output" = *"CURRENT_VERSION=2020.9.2"* ]] } @test "strips v from the version" { @@ -124,5 +131,5 @@ function init_repo { print_run_info [ "$status" -eq 0 ] && - [[ "$output" = *"::set-output name=current-version::3.4.5"* ]] + [[ "$output" = *"CURRENT_VERSION=3.4.5"* ]] } From ced1d4ac1defdc06469775b3eacaa0016527d0d8 Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Wed, 19 Oct 2022 09:23:10 +1100 Subject: [PATCH 3/5] Replace `set-output` with append to GITHUB_OUTPUT --- version-increment.sh | 18 +++++++++--------- version-lookup.sh | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/version-increment.sh b/version-increment.sh index f092d07..f874171 100755 --- a/version-increment.sh +++ b/version-increment.sh @@ -76,7 +76,7 @@ fi if [[ "${current_ref}" != "refs/heads/${default_branch}" ]] ; then pre_release="pre.${git_commit}" new_version="${new_version}-${pre_release}" - echo "::set-output name=pre-release-label::${pre_release}" + echo "PRE_RELEASE_LABEL=${pre_release}" >> "${GITHUB_OUTPUT}" fi if [[ -z "$(echo "${new_version}" | ${grep} -P "${pcre_semver}")" ]] ; then @@ -88,11 +88,11 @@ fi echo "ℹ️ The new version is ${new_version}" -echo "::set-output name=version::${new_version}" -echo "::set-output name=v-version::v${new_version}" -echo "::set-output name=major-version::${version_array[0]}" -echo "::set-output name=minor-version::${version_array[1]}" -echo "::set-output name=patch-version::${version_array[2]}" -echo "::set-output name=major-v-version::v${version_array[0]}" -echo "::set-output name=minor-v-version::v${version_array[1]}" -echo "::set-output name=patch-v-version::v${version_array[2]}" +echo "VERSION=${new_version}" >> "${GITHUB_OUTPUT}" +echo "V_VERSION=v${new_version}" >> "${GITHUB_OUTPUT}" +echo "MAJOR_VERSION=${version_array[0]}" >> "${GITHUB_OUTPUT}" +echo "MINOR_VERSION=${version_array[1]}" >> "${GITHUB_OUTPUT}" +echo "PATCH_VERSION=${version_array[2]}" >> "${GITHUB_OUTPUT}" +echo "MAJOR_V_VERSION=v${version_array[0]}" >> "${GITHUB_OUTPUT}" +echo "MINOR_V_VERSION=v${version_array[1]}" >> "${GITHUB_OUTPUT}" +echo "PATCH_V_VERSION=v${version_array[2]}" >> "${GITHUB_OUTPUT}" diff --git a/version-lookup.sh b/version-lookup.sh index cd1b075..45ed51c 100755 --- a/version-lookup.sh +++ b/version-lookup.sh @@ -61,5 +61,5 @@ fi echo "ℹ️ The current normal version is ${current_version}" -echo "::set-output name=current-version::${current_version}" -echo "::set-output name=current-v-version::v${current_version}" +echo "CURRENT_VERSION=${current_version}" >> "${GITHUB_OUTPUT}" +echo "CURRENT_V_VERSION=v${current_version}" >> "${GITHUB_OUTPUT}" From b7be5e00c262874a01978719d4e441cfa3181f2c Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Wed, 19 Oct 2022 09:36:31 +1100 Subject: [PATCH 4/5] Disable style warning --- version-increment.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/version-increment.sh b/version-increment.sh index f874171..915b1a9 100755 --- a/version-increment.sh +++ b/version-increment.sh @@ -88,6 +88,7 @@ fi echo "ℹ️ The new version is ${new_version}" +# shellcheck disable=SC2129 echo "VERSION=${new_version}" >> "${GITHUB_OUTPUT}" echo "V_VERSION=v${new_version}" >> "${GITHUB_OUTPUT}" echo "MAJOR_VERSION=${version_array[0]}" >> "${GITHUB_OUTPUT}" From 8e33684d42aadefca17b1de301f4eaf67420d44a Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Wed, 19 Oct 2022 09:28:39 +1100 Subject: [PATCH 5/5] Update `action.yml` for output name changes --- .github/workflows/test-and-release.yml | 4 ++-- action.yml | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml index dcd8b37..04e2595 100644 --- a/.github/workflows/test-and-release.yml +++ b/.github/workflows/test-and-release.yml @@ -51,7 +51,7 @@ jobs: id: version-increment run: ./version-increment.sh env: - current_version: ${{ steps.version-lookup.outputs.current-version }} + current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }} scheme: calver - name: Release version @@ -61,4 +61,4 @@ jobs: repo_token: "${{ secrets.GITHUB_TOKEN }}" draft: false prerelease: false - automatic_release_tag: "${{ steps.version-increment.outputs.version }}" + automatic_release_tag: "${{ steps.version-increment.outputs.VERSION }}" diff --git a/action.yml b/action.yml index 57a5616..65bd0b4 100644 --- a/action.yml +++ b/action.yml @@ -22,37 +22,37 @@ inputs: outputs: current-version: 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 }} + value: ${{ steps.version-lookup.outputs.CURRENT_V_VERSION }} version: 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 }} + value: ${{ steps.version-increment.outputs.V_VERSION }} major-version: description: 'Major number of the incremented version' - value: ${{ steps.version-increment.outputs.major-version }} + value: ${{ steps.version-increment.outputs.MAJOR_VERSION }} minor-version: description: 'Minor number of the incremented version' - value: ${{ steps.version-increment.outputs.minor-version }} + value: ${{ steps.version-increment.outputs.MINOR_VERSION }} patch-version: description: 'Patch number of the incremented version' - value: ${{ steps.version-increment.outputs.patch-version }} + value: ${{ steps.version-increment.outputs.PATCH_VERSION }} pre-release-version: description: 'Pre-release label of the incremented version' - value: ${{ steps.version-increment.outputs.pre-release-label }} + value: ${{ steps.version-increment.outputs.PRE_RELEASE_LABEL }} major-v-version: description: 'Major number of the incremented version, prefixed with a `v` charatcter' - value: ${{ steps.version-increment.outputs.major-v-version }} + value: ${{ steps.version-increment.outputs.MAJOR_V_VERSION }} minor-v-version: description: 'Minor number of the incremented version, prefixed with a `v` charatcter' - value: ${{ steps.version-increment.outputs.minor-v-version }} + value: ${{ steps.version-increment.outputs.MINOR_V_VERSION }} patch-v-version: description: 'Patch number of the incremented version, prefixed with a `v` charatcter' - value: ${{ steps.version-increment.outputs.patch-v-version }} + value: ${{ steps.version-increment.outputs.PATCH_V_VERSION }} runs: using: "composite" @@ -67,6 +67,6 @@ runs: run: ${{ github.action_path }}/version-increment.sh shell: bash env: - current_version: ${{ steps.version-lookup.outputs.current-version }} + current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }} increment: ${{ inputs.increment }} scheme: ${{ inputs.scheme }}