From 4f8f3ad16ec3c524651ccc9ca4eb5f40cec44525 Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Sat, 19 Apr 2025 09:38:21 +0200 Subject: [PATCH 1/3] Rename Input and add output --- README.md | 8 ++++---- action.yml | 10 ++++++---- entrypoint.sh | 6 +++--- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 5eef900..60071bb 100644 --- a/README.md +++ b/README.md @@ -58,10 +58,6 @@ The following is an extended example with all available options. ```yaml - uses: stefanzweifel/git-auto-commit-action@v5 with: - # Perform a clean git tag and push, without commiting anything - # Default to false - git_tag_only: false - # Optional. Commit message for the created commit. # Defaults to "Apply automatic changes" commit_message: Automated Change @@ -122,6 +118,10 @@ The following is an extended example with all available options. # Optional. Create given branch name in local and remote repository. create_branch: true + + # Perform a clean git tag and push, without commiting anything + # Default to false + create_git_tag_only: false ``` Please note that the Action depends on `bash`. If you're using the Action in a job in combination with a custom Docker container, make sure that `bash` is installed. diff --git a/action.yml b/action.yml index 2b8ea38..caf8237 100644 --- a/action.yml +++ b/action.yml @@ -4,10 +4,6 @@ description: 'Automatically commits files which have been changed during the wor author: Stefan Zweifel inputs: - git_tag_only: - description: Perform a clean git tag and push, without commiting anything - required: false - default: false commit_message: description: Commit message required: false @@ -74,6 +70,10 @@ inputs: create_branch: description: Create new branch with the name of `branch`-input in local and remote repository, if it doesn't exist yet. default: false + create_git_tag_only: + description: Perform a clean git tag and push, without commiting anything + required: false + default: false internal_git_binary: description: Internal use only! Path to git binary used to check if git is available. (Don't change this!) default: git @@ -83,6 +83,8 @@ outputs: description: Value is "true", if the repository was dirty and file changes have been detected. Value is "false", if no changes have been detected. commit_hash: description: Full hash of the created commit. Only present if the "changes_detected" output is "true". + create_git_tag_only: + description: runs: using: 'node20' diff --git a/entrypoint.sh b/entrypoint.sh index ee26146..22098df 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -30,9 +30,9 @@ _main() { _check_if_git_is_available _switch_to_repository - if "$INPUT_GIT_TAG_ONLY"; then - _log "debug" "git tag only."; - _set_github_output "git_tag_only" "true" + if "$INPUT_CREATE_GIT_TAG_ONLY"; then + _log "debug" "Create git tag only"; + _set_github_output "create_git_tag_only" "true" _tag_commit _push_to_github elif _git_is_dirty || "$INPUT_SKIP_DIRTY_CHECK"; then From 8480c68cbb7b1813d49aecb1164b935d6a72b726 Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Sat, 19 Apr 2025 10:17:54 +0200 Subject: [PATCH 2/3] Add Tests --- tests/git-auto-commit.bats | 53 +++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/tests/git-auto-commit.bats b/tests/git-auto-commit.bats index 26f6de3..f1fb4b8 100644 --- a/tests/git-auto-commit.bats +++ b/tests/git-auto-commit.bats @@ -21,7 +21,7 @@ setup() { export FAKE_DEFAULT_BRANCH=$(git config init.defaultBranch) # Set default INPUT variables used by the GitHub Action - export INPUT_GIT_TAG_ONLY=false + export INPUT_CREATE_GIT_TAG_ONLY=false export INPUT_REPOSITORY="${FAKE_LOCAL_REPOSITORY}" export INPUT_COMMIT_MESSAGE="Commit Message" export INPUT_BRANCH="${FAKE_DEFAULT_BRANCH}" @@ -1126,3 +1126,54 @@ END assert_failure; assert_line "::error::git-status failed with:" } + +@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_TAGGING_MESSAGE=v1.0.0 + + run git_auto_commit + + assert_success + + assert_line "::debug::Create git tag only" + + assert_line "::debug::Create tag v1.0.0" + refute_line "No tagging message supplied. No tag will be added." + + assert_line "::debug::Apply push options " + assert_line "::debug::Push commit to remote branch ${FAKE_DEFAULT_BRANCH}" + + run cat_github_output + assert_line "create_git_tag_only=true" + refute_line "changes_detected=false" + refute_line -e "commit_hash=[0-9a-f]{40}$" + + # Assert a tag v1.0.0 has been created + run git tag + assert_output v1.0.0 + + run git ls-remote --tags --refs + assert_output --partial refs/tags/v1.0.0 +} + +@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_TAGGING_MESSAGE="" + + run git_auto_commit + + assert_success + + assert_line "INPUT_TAGGING_MESSAGE: " + assert_line "No tagging message supplied. No tag will be added." + assert_line "::debug::Create git tag only" + + run cat_github_output + assert_line "create_git_tag_only=true" + refute_line "changes_detected=false" + refute_line -e "commit_hash=[0-9a-f]{40}$" + + # Assert no tag has been created + run git tag + assert_output "" +} From adb37b5a29cc6a129145d9d032185cb98f85158c Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Sat, 19 Apr 2025 10:32:21 +0200 Subject: [PATCH 3/3] Update README --- README.md | 5 +++-- action.yml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 60071bb..4e9b319 100644 --- a/README.md +++ b/README.md @@ -119,8 +119,8 @@ The following is an extended example with all available options. # Optional. Create given branch name in local and remote repository. create_branch: true - # Perform a clean git tag and push, without commiting anything - # Default to false + # Optional. Creates a new tag and pushes it to remote without creating a commit. + # Skips dirty check and changed files. Must be used with `tagging_message`. create_git_tag_only: false ``` @@ -173,6 +173,7 @@ You can use these outputs to trigger other Actions in your Workflow run based on - `changes_detected`: Returns either "true" or "false" if the repository was dirty and files have changed. - `commit_hash`: Returns the full hash of the commit if one was created. +- `create_git_tag_only`: Returns either "true" or "false" if a tag was created, when `create_git_tag_only` was used. **⚠️ When using outputs, the step needs to be given an id. See example below.** diff --git a/action.yml b/action.yml index caf8237..c57a508 100644 --- a/action.yml +++ b/action.yml @@ -84,7 +84,7 @@ outputs: commit_hash: description: Full hash of the created commit. Only present if the "changes_detected" output is "true". create_git_tag_only: - description: + description: Value is "true", if a git tag was created using the `create_git_tag_only`-input. runs: using: 'node20'