Compare commits
6 Commits
v6/remove-
...
v5
Author | SHA1 | Date |
---|---|---|
|
8621497c8c | |
|
b0f4d47f59 | |
|
9b5e5ee10a | |
|
e040c596f0 | |
|
4d160c5e4d | |
|
12f68633e4 |
|
@ -15,6 +15,6 @@ jobs:
|
|||
contents: write
|
||||
|
||||
steps:
|
||||
- uses: release-drafter/release-drafter@v5
|
||||
- uses: release-drafter/release-drafter@v6
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
|
21
README.md
21
README.md
|
@ -48,7 +48,7 @@ jobs:
|
|||
```
|
||||
|
||||
> [!NOTE]
|
||||
> The Action has to be used in a Job that runs on a UNIX system (e.g. `ubuntu-latest`).
|
||||
> The Action has to be used in a Job that runs on a UNIX-like system (e.g. `ubuntu-latest`).
|
||||
|
||||
The following is an extended example with all available options.
|
||||
|
||||
|
@ -82,7 +82,7 @@ The following is an extended example with all available options.
|
|||
# Optional commit user and author settings
|
||||
commit_user_name: My GitHub Actions Bot # defaults to "github-actions[bot]"
|
||||
commit_user_email: my-github-actions-bot@example.org # defaults to "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
commit_author: Author <actions@github.com> # defaults to author of the commit that triggered the run
|
||||
commit_author: Author <actions@github.com> # defaults to "username <username@users.noreply.github.com>", where "username" belongs to the author of the commit that triggered the run
|
||||
|
||||
# Optional. Tag name being created in the local repository and
|
||||
# pushed to remote repository and defined branch.
|
||||
|
@ -167,9 +167,16 @@ 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.
|
||||
|
||||
**⚠️ When using outputs, the step needs to be given an id. See example below.**
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
- uses: stefanzweifel/git-auto-commit-action@v5
|
||||
id: auto-commit-action #mandatory for the output to show up in ${{ steps }}
|
||||
with:
|
||||
commit_message: Apply php-cs-fixer changes
|
||||
|
||||
- name: "Run if changes have been detected"
|
||||
if: steps.auto-commit-action.outputs.changes_detected == 'true'
|
||||
run: echo "Changes!"
|
||||
|
@ -353,6 +360,8 @@ If you would like to use this Action to create a commit using [`--amend`](https:
|
|||
First, you need to extract the previous commit message by using `git log -1 --pretty=%s`.
|
||||
Then you need to provide this last commit message to the Action through the `commit_message` input option.
|
||||
|
||||
By default, the commit author is changed to `username <username@users.noreply.github.com>`, where `username` is the name of the user who triggered the workflow (The [`github.actor`](https://docs.github.com/en/actions/learn-github-actions/contexts#github-context) context is used here). If you want to preserve the name and email of the original author, you must extract them from the last commit and provide them to the Action through the `commit_author` input option.
|
||||
|
||||
Finally, you have to use `push_options: '--force'` to overwrite the git history on the GitHub remote repository. (git-auto-commit will not do a `git-rebase` for you!)
|
||||
|
||||
The steps in your workflow might look like this:
|
||||
|
@ -366,13 +375,15 @@ The steps in your workflow might look like this:
|
|||
# Other steps in your workflow to trigger a changed file
|
||||
|
||||
- name: Get last commit message
|
||||
id: last-commit-message
|
||||
id: last-commit
|
||||
run: |
|
||||
echo "msg=$(git log -1 --pretty=%s)" >> $GITHUB_OUTPUT
|
||||
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@v5
|
||||
with:
|
||||
commit_message: ${{ steps.last-commit-message.outputs.msg }}
|
||||
commit_author: ${{ steps.last-commit.outputs.author }}
|
||||
commit_message: ${{ steps.last-commit.outputs.message }}
|
||||
commit_options: '--amend --no-edit'
|
||||
push_options: '--force'
|
||||
skip_fetch: true
|
||||
|
|
|
@ -82,8 +82,15 @@ _git_is_dirty() {
|
|||
echo "INPUT_FILE_PATTERN: ${INPUT_FILE_PATTERN}";
|
||||
read -r -a INPUT_FILE_PATTERN_EXPANDED <<< "$INPUT_FILE_PATTERN";
|
||||
|
||||
# capture stderr
|
||||
gitStatusMessage="$((git status -s $INPUT_STATUS_OPTIONS -- ${INPUT_FILE_PATTERN_EXPANDED:+${INPUT_FILE_PATTERN_EXPANDED[@]}} >/dev/null ) 2>&1)";
|
||||
# shellcheck disable=SC2086
|
||||
[ -n "$(git status -s $INPUT_STATUS_OPTIONS -- ${INPUT_FILE_PATTERN_EXPANDED:+${INPUT_FILE_PATTERN_EXPANDED[@]}})" ]
|
||||
gitStatus="$(git status -s $INPUT_STATUS_OPTIONS -- ${INPUT_FILE_PATTERN_EXPANDED:+${INPUT_FILE_PATTERN_EXPANDED[@]}})";
|
||||
if [ $? -ne 0 ]; then
|
||||
_log "error" "git-status failed with:<$gitStatusMessage>";
|
||||
exit 1;
|
||||
fi
|
||||
[ -n "$gitStatus" ]
|
||||
}
|
||||
|
||||
_switch_to_branch() {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"devDependencies": {
|
||||
"bats": "^1.10.0",
|
||||
"bats": "^1.11.0",
|
||||
"bats-assert": "ztombol/bats-assert",
|
||||
"bats-support": "ztombol/bats-support"
|
||||
},
|
||||
|
|
|
@ -8,6 +8,7 @@ setup() {
|
|||
export FAKE_LOCAL_REPOSITORY="${BATS_TEST_DIRNAME}/tests_local_repository"
|
||||
export FAKE_REMOTE="${BATS_TEST_DIRNAME}/tests_remote_repository"
|
||||
export FAKE_TEMP_LOCAL_REPOSITORY="${BATS_TEST_DIRNAME}/tests_clone_of_remote_repository"
|
||||
export FAKE_FOLDER_WITHOUT_GIT_REPO="/tmp/tests_folder_without_git_repo"
|
||||
|
||||
# While it is likely the GitHub hosted runners will use master as the default branch,
|
||||
# locally anyone may change that. So for tests lets grab whatever is currently set
|
||||
|
@ -58,6 +59,7 @@ teardown() {
|
|||
rm -rf "${FAKE_LOCAL_REPOSITORY}"
|
||||
rm -rf "${FAKE_REMOTE}"
|
||||
rm -rf "${FAKE_TEMP_LOCAL_REPOSITORY}"
|
||||
rm -rf "${INPUT_REPOSITORY}"
|
||||
|
||||
if [ -z ${GITHUB_OUTPUT+x} ]; then
|
||||
echo "GITHUB_OUTPUT is not set"
|
||||
|
@ -1112,3 +1114,14 @@ END
|
|||
run git log -n 1
|
||||
assert_output --partial $COMMIT_MESSAGE
|
||||
}
|
||||
|
||||
@test "It exits with error message if entrypoint.sh is being run not in a git repository" {
|
||||
INPUT_REPOSITORY="${FAKE_FOLDER_WITHOUT_GIT_REPO}"
|
||||
|
||||
mkdir "${INPUT_REPOSITORY}"
|
||||
|
||||
run git_auto_commit
|
||||
|
||||
assert_failure;
|
||||
assert_line "::error::git-status failed with:<fatal: not a git repository (or any of the parent directories): .git>"
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ bats-support@ztombol/bats-support:
|
|||
version "0.3.0"
|
||||
resolved "https://codeload.github.com/ztombol/bats-support/tar.gz/004e707638eedd62e0481e8cdc9223ad471f12ee"
|
||||
|
||||
bats@^1.10.0:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/bats/-/bats-1.10.0.tgz#d22cb6e2d88fd39302167da237d710406d1587ce"
|
||||
integrity sha512-yOQrC7npuCrN+Ic3TyjTjJlzHa0qlK3oEO6VAYPWwFeutx/GmpljIyB6uNSl/UTASyc2w4FgVuA/QMMf9OdsCw==
|
||||
bats@^1.11.0:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/bats/-/bats-1.11.0.tgz#40281f021f5befcc10da54ed5674aa5b181f4953"
|
||||
integrity sha512-qiKdnS4ID3bJ1MaEOKuZe12R4w+t+psJF0ICj+UdkiHBBoObPMHv8xmD3w6F4a5qwUyZUHS+413lxENBNy8xcQ==
|
||||
|
|
Loading…
Reference in New Issue