From 28e16e81777b558cc906c8750092100bbb34c5e3 Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Sun, 12 Oct 2025 16:31:03 +0200 Subject: [PATCH] Release preparations for v7 (#394) --- .github/workflows/update-changelog.yaml | 2 +- README.md | 42 ++++++++++++------------- UPGRADING.md | 7 +++++ action.yml | 2 +- entrypoint.sh | 12 +++---- tests/git-auto-commit.bats | 40 +++++++++++------------ 6 files changed, 56 insertions(+), 49 deletions(-) diff --git a/.github/workflows/update-changelog.yaml b/.github/workflows/update-changelog.yaml index 3fc58e5..2fc6381 100644 --- a/.github/workflows/update-changelog.yaml +++ b/.github/workflows/update-changelog.yaml @@ -27,7 +27,7 @@ jobs: latest-version: ${{ github.event.release.name }} - name: Commit updated CHANGELOG - uses: stefanzweifel/git-auto-commit-action@v6 + uses: stefanzweifel/git-auto-commit-action@v7 with: branch: master commit_message: Update CHANGELOG diff --git a/README.md b/README.md index 6c84bbc..431335a 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Adding git-auto-commit to your Workflow only takes a couple lines of code. 2. Add the following step at the end of your job, after other steps that might add or change files. ```yaml -- uses: stefanzweifel/git-auto-commit-action@v6 +- uses: stefanzweifel/git-auto-commit-action@v7 ``` Your Workflow should look similar to this example. @@ -39,7 +39,7 @@ jobs: contents: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: ref: ${{ github.head_ref }} @@ -47,7 +47,7 @@ jobs: # … # Commit all changed files back to the repository - - uses: stefanzweifel/git-auto-commit-action@v6 + - uses: stefanzweifel/git-auto-commit-action@v7 ``` > [!NOTE] @@ -56,7 +56,7 @@ jobs: The following is an extended example with all available options. ```yaml -- uses: stefanzweifel/git-auto-commit-action@v6 +- uses: stefanzweifel/git-auto-commit-action@v7 with: # Optional. Commit message for the created commit. # Defaults to "Apply automatic changes" @@ -88,11 +88,11 @@ The following is an extended example with all available options. # Optional. Tag name to be created in the local repository and # pushed to the remote repository on the defined branch. - # If only one of `tag` or `tagging_message` is provided, the value of the provided field will be used for both tag name and message. - tag: 'v1.0.0' + # If only one of `tag_name` or `tagging_message` is provided, the value of the provided field will be used for both tag name and message. + tag_name: 'v1.0.0' # Optional. Message to annotate the created tag with. - # If only one of `tag` or `tagging_message` is provided, the value of the provided field will be used for both tag name and message. + # If only one of `tag_name` or `tagging_message` is provided, the value of the provided field will be used for both tag name and message. tagging_message: 'Codename "Sunshine"' # Optional. Option used by `git-status` to determine if the repository is @@ -155,14 +155,14 @@ jobs: contents: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: ref: ${{ github.head_ref }} - name: Run php-cs-fixer uses: docker://oskarstark/php-cs-fixer-ga - - uses: stefanzweifel/git-auto-commit-action@v6 + - uses: stefanzweifel/git-auto-commit-action@v7 with: commit_message: Apply php-cs-fixer changes ``` @@ -184,7 +184,7 @@ You can use these outputs to trigger other Actions in your Workflow run based on ### Example ```yaml - - uses: stefanzweifel/git-auto-commit-action@v6 + - uses: stefanzweifel/git-auto-commit-action@v7 id: auto-commit-action #mandatory for the output to show up in ${{ steps }} with: commit_message: Apply php-cs-fixer changes @@ -220,7 +220,7 @@ You must use `action/checkout@v2` or later versions to check out the repository. In non-`push` events, such as `pull_request`, make sure to specify the `ref` to check out: ```yaml -- uses: actions/checkout@v4 +- uses: actions/checkout@v5 with: ref: ${{ github.head_ref }} ``` @@ -238,7 +238,7 @@ You can change this by creating a new [Personal Access Token (PAT)](https://gith storing the token as a secret in your repository and then passing the new token to the [`actions/checkout`](https://github.com/actions/checkout#usage) Action step. ```yaml -- uses: actions/checkout@v4 +- uses: actions/checkout@v5 with: token: ${{ secrets.PAT }} ``` @@ -284,7 +284,7 @@ The example below can be used as a starting point to generate a multiline commit # Quick and dirty step to get rid of the temporary file holding the commit message - run: rm -rf commitmessage.txt - - uses: stefanzweifel/git-auto-commit-action@v6 + - uses: stefanzweifel/git-auto-commit-action@v7 id: commit with: commit_message: ${{ steps.commit_message_step.outputs.commit_message }} @@ -308,7 +308,7 @@ As git-auto-commit by default does not use **your** username and email when crea git_commit_gpgsign: true - name: "Commit and push changes" - uses: stefanzweifel/git-auto-commit-action@v6 + uses: stefanzweifel/git-auto-commit-action@v7 with: commit_author: "${{ steps.import-gpg.outputs.name }} <${{ steps.import-gpg.outputs.email }}>" commit_user_name: ${{ steps.import-gpg.outputs.name }} @@ -371,7 +371,7 @@ jobs: contents: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: # Checkout the fork/head-repository and push changes to the fork. # If you skip this, the base repository will be checked out and changes @@ -385,7 +385,7 @@ jobs: - name: Run php-cs-fixer uses: docker://oskarstark/php-cs-fixer-ga - - uses: stefanzweifel/git-auto-commit-action@v6 + - uses: stefanzweifel/git-auto-commit-action@v7 ``` For more information about running Actions on forks, see [this announcement from GitHub](https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/). @@ -420,7 +420,7 @@ The steps in your workflow might look like this: echo "message=$(git log -1 --pretty=%s)" >> $GITHUB_OUTPUT echo "author=$(git log -1 --pretty=\"%an <%ae>\")" >> $GITHUB_OUTPUT -- uses: stefanzweifel/git-auto-commit-action@v6 +- uses: stefanzweifel/git-auto-commit-action@v7 with: commit_author: ${{ steps.last-commit.outputs.author }} commit_message: ${{ steps.last-commit.outputs.message }} @@ -463,7 +463,7 @@ If you create a personal access token (classic), apply the `repo` and `workflow` If you create a fine-grained personal access token, apply the `Contents`-permissions. ```yaml -- uses: actions/checkout@v4 +- uses: actions/checkout@v5 with: # We pass the "PAT" secret to the checkout action; if no PAT secret is available to the workflow runner (eg. Dependabot) we fall back to the default "GITHUB_TOKEN". token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }} @@ -477,7 +477,7 @@ You can learn more about Personal Access Token in the [GitHub documentation](htt If you go the "force pushes" route, you have to enable force pushes to a protected branch (see [documentation](https://help.github.com/en/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)) and update your Workflow to use force push like this. ```yaml - - uses: stefanzweifel/git-auto-commit-action@v6 + - uses: stefanzweifel/git-auto-commit-action@v7 with: commit_message: Apply php-cs-fixer changes push_options: --force @@ -507,7 +507,7 @@ This is due to the fact, that the `*.md`-glob is expanded before sending it to ` To fix this add `disable_globbing: true` to your Workflow. ```yaml -- uses: stefanzweifel/git-auto-commit-action@v6 +- uses: stefanzweifel/git-auto-commit-action@v7 with: file_pattern: '*.md' disable_globbing: true @@ -535,7 +535,7 @@ yarn test We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/stefanzweifel/git-auto-commit-action/tags). -We also provide major version tags to make it easier to always use the latest release of a major version. For example, you can use `stefanzweifel/git-auto-commit-action@v6` to always use the latest release of the current major version. +We also provide major version tags to make it easier to always use the latest release of a major version. For example, you can use `stefanzweifel/git-auto-commit-action@v7` to always use the latest release of the current major version. (More information about this [here](https://help.github.com/en/actions/building-actions/about-actions#versioning-your-action).) ## Credits diff --git a/UPGRADING.md b/UPGRADING.md index f3be24c..ad15370 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -1,5 +1,12 @@ # Upgrading +## From v6 to v7 + +The previously removed options `create_branch`, `skip_fetch`, and `skip_checkout` have been reintroduced in git-auto-commit v7. If you had removed these options from your workflows when upgrading to v6, you can now add them back if needed. + +Tagging a commit has been reworked. In addition to the existing `tagging_message`-option, a new `tag_name` option has been added. If you were using `tagging_message`, you can continue to do so, but if you want to specify a custom tag name and tag message, you can now use the `tag_name` and `tagging_message` option. +(Specifying a `tagging_message` without a `tag_name` will create a tag with the name and message both set to the value of `tagging_message`.) + ## From v5 to v6 The following options have been removed from git-auto-commit and can be removed from your workflows. diff --git a/action.yml b/action.yml index 767ee3d..6c1d098 100644 --- a/action.yml +++ b/action.yml @@ -44,7 +44,7 @@ inputs: description: Value used for the commit author. Defaults to the username of whoever triggered this workflow run. required: false default: ${{ github.actor }} <${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com> - tag: + tag_name: description: Tag name used for creating a new git tag with the commit. Keep this empty, if no tag should be created. required: false default: '' diff --git a/entrypoint.sh b/entrypoint.sh index 8a894aa..d288a67 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -176,12 +176,12 @@ _local_commit() { } _tag_commit() { - echo "INPUT_TAG: ${INPUT_TAG}" + echo "INPUT_TAG_NAME: ${INPUT_TAG_NAME}" echo "INPUT_TAGGING_MESSAGE: ${INPUT_TAGGING_MESSAGE}" - if [ -n "$INPUT_TAG" ] || [ -n "$INPUT_TAGGING_MESSAGE" ]; then - INTERNAL_TAG=${INPUT_TAG:-$INPUT_TAGGING_MESSAGE} - INTERNAL_TAGGING_MESSAGE=${INPUT_TAGGING_MESSAGE:-$INPUT_TAG} + if [ -n "$INPUT_TAG_NAME" ] || [ -n "$INPUT_TAGGING_MESSAGE" ]; then + INTERNAL_TAG=${INPUT_TAG_NAME:-$INPUT_TAGGING_MESSAGE} + INTERNAL_TAGGING_MESSAGE=${INPUT_TAGGING_MESSAGE:-$INPUT_TAG_NAME} _log "debug" "Create tag $INTERNAL_TAG: $INTERNAL_TAGGING_MESSAGE" git -c user.name="$INPUT_COMMIT_USER_NAME" -c user.email="$INPUT_COMMIT_USER_EMAIL" tag -a "$INTERNAL_TAG" -m "$INTERNAL_TAGGING_MESSAGE" @@ -202,8 +202,8 @@ _push_to_github() { if [ -z "$INPUT_BRANCH" ] then - # Only add `--tags` option, if `$INPUT_TAG` or `$INPUT_TAGGING_MESSAGE` is set - if [ -n "$INPUT_TAG" ] || [ -n "$INPUT_TAGGING_MESSAGE" ] + # Only add `--tags` option, if `$INPUT_TAG_NAME` or `$INPUT_TAGGING_MESSAGE` is set + if [ -n "$INPUT_TAG_NAME" ] || [ -n "$INPUT_TAGGING_MESSAGE" ] then _log "debug" "git push origin --tags"; git push origin --follow-tags --atomic ${INPUT_PUSH_OPTIONS:+"${INPUT_PUSH_OPTIONS_ARRAY[@]}"}; diff --git a/tests/git-auto-commit.bats b/tests/git-auto-commit.bats index 1fc2ffb..a0fdc36 100644 --- a/tests/git-auto-commit.bats +++ b/tests/git-auto-commit.bats @@ -32,7 +32,7 @@ setup() { export INPUT_COMMIT_USER_NAME="Test Suite" export INPUT_COMMIT_USER_EMAIL="test@github.com" export INPUT_COMMIT_AUTHOR="Test Suite " - export INPUT_TAG="" + export INPUT_TAG_NAME="" export INPUT_TAGGING_MESSAGE="" export INPUT_PUSH_OPTIONS="" export INPUT_SKIP_DIRTY_CHECK=false @@ -122,7 +122,7 @@ cat_github_output() { assert_line "INPUT_FILE_PATTERN: ." assert_line "INPUT_COMMIT_OPTIONS: " assert_line "::debug::Apply commit options " - assert_line "INPUT_TAG: " + assert_line "INPUT_TAG_NAME: " assert_line "INPUT_TAGGING_MESSAGE: " assert_line "Neither tag nor tag message is set. No tag will be added." assert_line "INPUT_PUSH_OPTIONS: " @@ -146,7 +146,7 @@ cat_github_output() { assert_line "INPUT_FILE_PATTERN: ." assert_line "INPUT_COMMIT_OPTIONS: " assert_line "::debug::Apply commit options " - assert_line "INPUT_TAG: " + assert_line "INPUT_TAG_NAME: " assert_line "INPUT_TAGGING_MESSAGE: " assert_line "Neither tag nor tag message is set. No tag will be added." assert_line "INPUT_PUSH_OPTIONS: " @@ -294,7 +294,7 @@ cat_github_output() { } @test "It creates a tag with the commit" { - INPUT_TAG="v1.0.0" + INPUT_TAG_NAME="v1.0.0" INPUT_TAGGING_MESSAGE="MyProduct v1.0.0" touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2,3}.txt @@ -303,7 +303,7 @@ cat_github_output() { assert_success - assert_line "INPUT_TAG: v1.0.0" + assert_line "INPUT_TAG_NAME: v1.0.0" assert_line "INPUT_TAGGING_MESSAGE: MyProduct v1.0.0" assert_line "::debug::Create tag v1.0.0: MyProduct v1.0.0" @@ -394,7 +394,7 @@ cat_github_output() { @test "It uses existing branch when INPUT_BRANCH is empty and INPUT_TAG is set" { INPUT_BRANCH="" - INPUT_TAG="v2.0.0" + INPUT_TAG_NAME="v2.0.0" INPUT_TAGGING_MESSAGE="MyProduct v2.0.0" @@ -404,7 +404,7 @@ cat_github_output() { assert_success - assert_line "INPUT_TAG: v2.0.0" + assert_line "INPUT_TAG_NAME: v2.0.0" assert_line "::debug::Create tag v2.0.0: MyProduct v2.0.0" assert_line "::debug::git push origin --tags" @@ -445,7 +445,7 @@ cat_github_output() { @test "It pushes generated commit and tag to remote and actually updates the commit shas" { INPUT_BRANCH="" - INPUT_TAG="v2.0.0" + INPUT_TAG_NAME="v2.0.0" INPUT_TAGGING_MESSAGE="MyProduct v2.0.0" @@ -455,7 +455,7 @@ cat_github_output() { assert_success - assert_line "INPUT_TAG: v2.0.0" + assert_line "INPUT_TAG_NAME: v2.0.0" assert_line "::debug::Create tag v2.0.0: MyProduct v2.0.0" assert_line "::debug::git push origin --tags" @@ -480,7 +480,7 @@ cat_github_output() { git checkout ${FAKE_DEFAULT_BRANCH} INPUT_BRANCH="a-new-branch" - INPUT_TAG="v2.0.0" + INPUT_TAG_NAME="v2.0.0" INPUT_TAGGING_MESSAGE="MyProduct v2.0.0" @@ -490,7 +490,7 @@ cat_github_output() { assert_success - assert_line "INPUT_TAG: v2.0.0" + assert_line "INPUT_TAG_NAME: v2.0.0" assert_line "::debug::Create tag v2.0.0: MyProduct v2.0.0" assert_line "::debug::Push commit to remote branch a-new-branch" @@ -643,7 +643,7 @@ cat_github_output() { assert_line "INPUT_FILE_PATTERN: ." assert_line "INPUT_COMMIT_OPTIONS: " assert_line "::debug::Apply commit options " - assert_line "INPUT_TAG: " + assert_line "INPUT_TAG_NAME: " assert_line "INPUT_TAGGING_MESSAGE: " assert_line "Neither tag nor tag message is set. No tag will be added." assert_line "INPUT_PUSH_OPTIONS: " @@ -702,7 +702,7 @@ cat_github_output() { assert_line "INPUT_FILE_PATTERN: ." assert_line "INPUT_COMMIT_OPTIONS: " assert_line "::debug::Apply commit options " - assert_line "INPUT_TAG: " + assert_line "INPUT_TAG_NAME: " assert_line "INPUT_TAGGING_MESSAGE: " assert_line "Neither tag nor tag message is set. No tag will be added." assert_line "INPUT_PUSH_OPTIONS: " @@ -1035,7 +1035,7 @@ cat_github_output() { assert_line "INPUT_FILE_PATTERN: ." assert_line "INPUT_COMMIT_OPTIONS: " assert_line "::debug::Apply commit options " - assert_line "INPUT_TAG: " + assert_line "INPUT_TAG_NAME: " assert_line "INPUT_TAGGING_MESSAGE: " assert_line "Neither tag nor tag message is set. No tag will be added." assert_line "INPUT_PUSH_OPTIONS: " @@ -1123,7 +1123,7 @@ END @test "it creates a tag if create_git_tag_only is set to true and a message has been supplied" { INPUT_CREATE_GIT_TAG_ONLY=true - INPUT_TAG=v1.0.0 + INPUT_TAG_NAME=v1.0.0 INPUT_TAGGING_MESSAGE="MyProduct v1.0.0" run git_auto_commit @@ -1153,14 +1153,14 @@ END @test "it output no tagging message supplied if no tagging message is set but create_git_tag_only is set to true" { INPUT_CREATE_GIT_TAG_ONLY=true - INPUT_TAG="" + INPUT_TAG_NAME="" INPUT_TAGGING_MESSAGE="" run git_auto_commit assert_success - assert_line "INPUT_TAG: " + assert_line "INPUT_TAG_NAME: " assert_line "INPUT_TAGGING_MESSAGE: " assert_line "Neither tag nor tag message is set. No tag will be added." assert_line "::debug::Create git tag only" @@ -1452,7 +1452,7 @@ END assert_success - assert_line "INPUT_TAG: " + assert_line "INPUT_TAG_NAME: " assert_line "INPUT_TAGGING_MESSAGE: v1.0.0" assert_line "::debug::Create tag v1.0.0: v1.0.0" @@ -1474,7 +1474,7 @@ END } @test "Set a tag only" { - INPUT_TAG="v1.0.0" + INPUT_TAG_NAME="v1.0.0" touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2,3}.txt @@ -1482,7 +1482,7 @@ END assert_success - assert_line "INPUT_TAG: v1.0.0" + assert_line "INPUT_TAG_NAME: v1.0.0" assert_line "INPUT_TAGGING_MESSAGE: " assert_line "::debug::Create tag v1.0.0: v1.0.0"