Compare commits

...

346 Commits
v1 ... v4.7.1

Author SHA1 Message Date
Stefan Zweifel
9b7c21583c Release v4.7.1 2020-10-22 07:37:21 +02:00
Stefan Zweifel
4cc90c7784 Fix Linter Errors 2020-10-22 07:37:16 +02:00
Stefan Zweifel
367938329d Merge pull request #120 from stefanzweifel/revert-115-feature/checkout-options
Revert "Feature: Checkout Options"
2020-10-22 07:35:11 +02:00
Stefan Zweifel
25cac34d8d Revert "Feature: Checkout Options" 2020-10-22 07:33:38 +02:00
Stefan Zweifel
30cd17bff0 Merge branch 'master' of github.com:stefanzweifel/git-auto-commit-action 2020-10-21 20:45:48 +02:00
Stefan Zweifel
8f5b58c89c Tag v4.7.0 2020-10-21 20:45:37 +02:00
Stefan Zweifel
65928d2898 Merge pull request #118 from stefanzweifel/tests-on-github-actions
Test Action through GitHub Actions ♾️
2020-10-17 14:59:06 +02:00
Stefan Zweifel
6b4ef1444c Add Badge 2020-10-17 14:52:58 +02:00
Stefan Zweifel
55291ea168 Rename Step 2020-10-17 14:51:58 +02:00
Stefan Zweifel
2b5c86365b Delete Remote Branch 2020-10-17 14:46:50 +02:00
Stefan Zweifel
ff28943460 Add Integration Tests 2020-10-17 14:29:42 +02:00
Stefan Zweifel
e3610414be Update README 2020-10-17 14:15:18 +02:00
Stefan Zweifel
042c3265d5 Update README 2020-10-17 14:14:28 +02:00
Stefan Zweifel
90cedba8bc Upgrade bats to v1.2.1 2020-10-16 19:26:44 +02:00
Stefan Zweifel
b833fe0e9d Update Code Example for pull_request_target trigger 2020-10-16 09:18:41 +02:00
Stefan Zweifel
653ea719ea Update Changelog 2020-10-15 21:15:41 +02:00
Stefan Zweifel
47c724214a Merge pull request #115 from stefanzweifel/feature/checkout-options
Feature: Checkout Options
2020-10-15 20:36:06 +02:00
Stefan Zweifel
1ba48c6d7f Fix Linter Errors in entrypoint.sh 2020-10-15 20:30:26 +02:00
Stefan Zweifel
b9e4cea0ef Disable Markdown Linter 2020-10-15 20:30:19 +02:00
Stefan Zweifel
cfdb7e609e Add checkout_options to README 2020-10-15 20:26:03 +02:00
Stefan Zweifel
849613a3ad Add test to cover checkout-options 2020-10-15 20:23:04 +02:00
Stefan Zweifel
0ee9fb7263 Add checkout_options 2020-10-15 20:21:08 +02:00
Stefan Zweifel
6456430b6b Ignore shellchecks 2020-10-15 20:15:31 +02:00
Stefan Zweifel
7f67b0b49b Rename Test 2020-10-14 20:28:01 +02:00
Stefan Zweifel
8700c3bc1c Merge pull request #113 from docwhat/pr/complex-branches-2
Fix checking out branch names with / chars
2020-10-12 16:34:53 +02:00
Stefan Zweifel
872d72f1ae Update Tests 2020-10-12 16:33:12 +02:00
Christian Höltje
f905f00706 Fix checking out branch names with / chars
If git can't automatically figure out if the argument is a branch or
a path, it will need to be told explicitly by using `--`:

    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'

Fixes: #106
2020-10-12 10:17:25 -04:00
Stefan Zweifel
9c1e5d1c6a Merge pull request #111 from francescobianco/patch-1
Update README.md
2020-10-12 08:18:24 +02:00
Francesco Bianco
18a94e4f78 Update README.md 2020-10-11 22:35:28 +02:00
Stefan Zweifel
44aeb24da7 Fix Typo in Changelog 2020-10-11 20:36:41 +02:00
Stefan Zweifel
5c9bfe7477 Tag v4.6.0 2020-10-11 20:34:17 +02:00
Stefan Zweifel
814219db13 Merge pull request #110 from Aebrathia/patch-1
Make commit_message optional #103
2020-10-11 20:16:25 +02:00
Stefan Zweifel
a204abce16 Update action.yml 2020-10-11 20:14:15 +02:00
Andréa Maugars
fc18df1417 Make commit_message optional 2020-10-11 15:32:07 +02:00
Stefan Zweifel
8f243393e7 Link Tests Badge 2020-10-11 11:47:09 +02:00
Stefan Zweifel
fc5b9bf8cf Merge pull request #109 from stefanzweifel/improve-testsuite
Expand existing BATS Test Suite to cover every feature
2020-10-11 11:44:48 +02:00
Stefan Zweifel
a818c89e49 Add can-work-with-empty-branch-name-and-tags test 2020-10-11 11:24:53 +02:00
Stefan Zweifel
8bf1b5695a Add can-work-with-empty-branch-name test 2020-10-11 11:21:16 +02:00
Stefan Zweifel
ea30556d53 Add can-checkout-different-branch test 2020-10-11 11:21:06 +02:00
Stefan Zweifel
cd7c7f1a8a Add git-push-options-are-applied test 2020-10-11 11:20:51 +02:00
Stefan Zweifel
4e16840be4 Add can-create-tag test 2020-10-11 11:20:12 +02:00
Stefan Zweifel
b0295737db Add commit-user-and-author-settings-are-applied test 2020-10-11 11:20:01 +02:00
Stefan Zweifel
0d6d4a4b22 Add git-commit-options-are-applied 2020-10-11 11:19:49 +02:00
Stefan Zweifel
091b400419 Add git-add-file-pattern-is-applied test 2020-10-11 11:19:38 +02:00
Stefan Zweifel
f7e362220d WIP 2020-10-11 11:19:22 +02:00
Stefan Zweifel
df97d6fbd8 Make testing a single test easier 2020-10-11 10:40:59 +02:00
Stefan Zweifel
4f0fc14d0c Add shellmock_clean to setup method 2020-10-11 10:40:48 +02:00
Stefan Zweifel
cdf7b74cbf Fix remaining TODO test 2020-10-11 10:40:40 +02:00
Stefan Zweifel
862aa0e1e1 Update Changelog 2020-10-10 19:22:22 +02:00
Stefan Zweifel
a9d1ac4f06 Merge pull request #108 from stefanzweifel/fetch-repo-before-checkout
Better support branches with special characters in them
2020-10-10 19:19:48 +02:00
Stefan Zweifel
ebf8a401ee Fix Tests 2020-10-10 18:06:55 +02:00
Stefan Zweifel
4b8393320b Fetch Repo before git checkout 2020-10-10 17:54:11 +02:00
Stefan Zweifel
60c96d8c0d Merge pull request #107 from docwhat/pr/superlinter
Use SuperLinter instead of only shellcheck
2020-10-10 16:18:15 +02:00
Stefan Zweifel
16d2bf88fd Remove Comments from Workflow 2020-10-10 16:17:58 +02:00
Christian Holtje
54d78531cc Use SuperLinter instead of only shellcheck 2020-10-10 01:12:48 -04:00
Stefan Zweifel
f922a52bf1 Use "main" as branch name in example 2020-10-06 09:13:19 +02:00
Stefan Zweifel
0bf17c328a Fix Example using changes_detected output 2020-10-06 09:11:36 +02:00
Stefan Zweifel
240b9ad1fd Add Example on how to use Outputs 2020-10-05 19:47:23 +02:00
Stefan Zweifel
57054d8e7e Merge pull request #101 from OskarStark/patch-1
Typo
2020-09-23 15:59:12 +02:00
Oskar Stark
613ea337db Revert 2020-09-23 12:43:44 +02:00
Oskar Stark
686020fb2a Typo 2020-09-23 12:43:18 +02:00
Stefan Zweifel
90b474f549 Remove unused Steps in GitHub Workflow 2020-09-13 14:21:10 +02:00
Stefan Zweifel
8c26230a11 Update git config if not set yet 2020-09-13 14:18:41 +02:00
Stefan Zweifel
961d68003e Add yarn.lock to .gitignore 2020-09-13 14:15:28 +02:00
Stefan Zweifel
cbc3d50cea Add Badge 2020-09-13 14:11:23 +02:00
Stefan Zweifel
9e4e2e76fa Add very basic test suite with bats and shellmock (#100)
* Add bats
* Write commits tests
* Add Workflow
* Add .gitignore
* Update Test Suite
* Disable test
* Disable failing test for now
2020-09-13 14:07:14 +02:00
Stefan Zweifel
09aaf2d8fa Update Changelog 2020-09-11 11:22:22 +02:00
Stefan Zweifel
c7ad0bdb15 Release v4.5.1 2020-09-11 11:20:33 +02:00
Stefan Zweifel
9cb711878d Merge pull request #98 from stefanzweifel/revert-95-master
Revert "Creating orphan branch"
2020-09-11 11:19:07 +02:00
Stefan Zweifel
b3fc6f8a17 Revert "Creating orphan branch" 2020-09-11 11:18:24 +02:00
Stefan Zweifel
d51384f592 Revert "Update Workflow"
This reverts commit 4e7ddef1e0.
2020-09-10 19:54:30 +02:00
Stefan Zweifel
4e7ddef1e0 Update Workflow 2020-09-10 19:51:32 +02:00
Stefan Zweifel
cc7755497c Release v4.5.0 2020-09-10 19:48:26 +02:00
Stefan Zweifel
5c3c72f20e Merge pull request #95 from StrongMonkey/master
Creating orphan branch
2020-09-10 19:44:31 +02:00
Daishan
505389d146 Creating orphan branch 2020-09-01 18:12:58 -07:00
Stefan Zweifel
303ce37181 Merge pull request #93 from stefanzweifel/add-note-about-forks
Update README with instructions for forks
2020-08-22 14:45:20 +02:00
Stefan Zweifel
13efc066dd Small little improvements 2020-08-22 14:42:29 +02:00
Stefan Zweifel
3c204cdee3 Update README.md 2020-08-22 14:21:01 +02:00
Stefan Zweifel
0429047166 Update README with instructions for forks
GitHub recently introduced ways for Actions to run on forks.

This update now finally allows repository maintainers to write Workflows to run code linters and fixers which can also work on the forks.
2020-08-22 14:13:11 +02:00
Stefan Zweifel
09d3315401 Update Versioning Workflow 2020-08-16 20:05:44 +02:00
Stefan Zweifel
1f4914882d Release v4.4.1 2020-08-16 20:03:54 +02:00
Stefan Zweifel
b5320678c1 Merge pull request #91 from HarrisonGrodin/patch-1
Only check status of files matching file_pattern
2020-08-16 19:31:45 +02:00
Harrison Grodin
01ffd8c6f6 Only check status of files matching file_pattern 2020-08-15 22:11:45 -04:00
Stefan Zweifel
5222c758dd Add FUNDING.yml 2020-07-29 13:22:07 +02:00
Stefan Zweifel
bbcb72b1e9 Update README 2020-07-26 12:53:22 +02:00
Stefan Zweifel
142eb9509a Update README 2020-07-24 21:11:32 +02:00
Stefan Zweifel
0233fee872 Update Protected Branch Section in README 2020-07-24 20:59:16 +02:00
Stefan Zweifel
808edcd96b Add links to pathspec documentation 2020-07-24 20:44:56 +02:00
Stefan Zweifel
1b1d53f462 Move Inputs and Outputs 2020-07-24 20:24:23 +02:00
Stefan Zweifel
ee93725e66 Merge pull request #86 from TGTGamer/master
Docs: #85 Add small information about command line options
2020-07-18 13:50:16 +02:00
Jonathan S
36304edfd2 Update README.md 2020-07-18 12:42:58 +01:00
Stefan Zweifel
ff97e958aa Update README.md 2020-07-16 11:03:50 +02:00
Stefan Zweifel
90282bf5e2 Release v4.4.0 2020-06-26 21:07:28 +02:00
Stefan Zweifel
c9eb2132b2 Merge pull request #84 from stefanzweifel/feature/skip-dirty-check
Add a "Skip Dirty Check" Option
2020-06-26 21:02:58 +02:00
Stefan Zweifel
c8ded2885e Simplify IF Condition 2020-06-26 21:00:48 +02:00
Stefan Zweifel
f120678ed1 WIP 2020-06-25 20:40:31 +02:00
Stefan Zweifel
4183594932 WIP 2020-06-25 20:38:28 +02:00
Stefan Zweifel
49e28abb3f WIP 2020-06-25 20:31:48 +02:00
Stefan Zweifel
4ebfe28af0 Add skip_dirty_check option 2020-06-25 20:18:20 +02:00
Stefan Zweifel
984a26d893 Update link to versioning info in README 2020-05-17 10:20:34 +02:00
Stefan Zweifel
3804c79d2e Add Versioning GitHub Actions 2020-05-17 10:08:37 +02:00
Stefan Zweifel
69a12041a1 Release v4.3.0 2020-05-16 13:47:17 +02:00
Stefan Zweifel
91b7d20ead Merge pull request #78 from stefanzweifel/feature/push-options
Feature: Push Options
2020-05-16 13:30:24 +02:00
Stefan Zweifel
044b6b777c Fix Typo 2020-05-16 13:26:59 +02:00
Stefan Zweifel
9aab2f8a5c Add example for protected branches 2020-05-16 13:22:34 +02:00
Stefan Zweifel
0280d2ccee Add push_options to README 2020-05-16 13:17:00 +02:00
Stefan Zweifel
b0b5ed34dd Update entrypoint to handle push_options 2020-05-16 11:42:40 +02:00
Stefan Zweifel
ae38c94802 Add push_options to action.yml 2020-05-16 11:42:24 +02:00
Stefan Zweifel
3aae7bb63f Remove continous-deployment.yml 2020-05-16 11:24:57 +02:00
Stefan Zweifel
c180c695f2 Release v4.2.0 2020-05-10 13:16:25 +02:00
Stefan Zweifel
c1a70c9013 Update Changelog 2020-05-10 13:12:24 +02:00
Stefan Zweifel
02c4f2cf78 Merge pull request #73 from spawnia/restructure-readme
Bundle limitations and gotchas together in the README.md
2020-05-10 13:11:32 +02:00
Stefan Zweifel
3c687aa8ba Replace head_ref with branch name example 2020-05-10 13:09:18 +02:00
spawnia
a69eabaead clarify branch option 2020-05-10 12:55:07 +02:00
spawnia
9f2c45c9eb Remove unneeded hints to re-specify the default branch 2020-05-10 12:51:21 +02:00
spawnia
5bf88dc2fd Merge branch 'master' into restructure-readme 2020-05-10 12:48:11 +02:00
Stefan Zweifel
fd2aab7c5b Merge pull request #75 from stefanzweifel/use-head-ref-as-default-value
Use github.head_ref as branch default value
2020-05-10 12:31:26 +02:00
Stefan Zweifel
f342c95aa2 Use github.head_ref as branch default value 2020-05-09 12:44:07 +02:00
Benedikt Franke
1157d7bbe9 Shorten 2020-05-06 00:22:05 +02:00
Benedikt Franke
58b79711d8 Add example 2020-05-06 00:21:35 +02:00
Benedikt Franke
f5f76eb1f4 Consolidate more 2020-05-06 00:00:33 +02:00
Benedikt Franke
5513d18f64 Bundle limitations and gotchas together in the README.md 2020-05-05 23:54:32 +02:00
Stefan Zweifel
6ef5688e81 Update bug_report.md 2020-05-01 12:56:39 +02:00
Stefan Zweifel
e02ededdeb Update README with instructions and limitations
Closes #69
2020-05-01 12:56:23 +02:00
Stefan Zweifel
2f5e73df85 Release v4.1.6 2020-04-28 13:28:19 +02:00
Stefan Zweifel
cc16347545 Merge pull request #68 from stefanzweifel/fix-67
Inline User Configuration when creating a Tag
2020-04-28 13:27:03 +02:00
Stefan Zweifel
1ee136f439 Inline user config with tag command 2020-04-28 13:12:43 +02:00
Stefan Zweifel
7fdc480651 Update README.md 2020-04-24 10:14:37 +02:00
Stefan Zweifel
394681d465 Release v4.1.5 2020-04-23 20:46:50 +02:00
Stefan Zweifel
a261484cc8 Update file_pattern Example in README 2020-04-23 20:46:41 +02:00
Stefan Zweifel
43ed630979 Merge pull request #64 from stefanzweifel/fix-61
Fix Issue with Commit Options
2020-04-23 20:35:56 +02:00
Stefan Zweifel
ee9d717e46 Merge branch 'master' into fix-61
# Conflicts:
#	entrypoint.sh
2020-04-23 20:20:10 +02:00
Stefan Zweifel
68b94ecdf3 Merge pull request #65 from cristianpb/master
 Allow to add multiple files
2020-04-23 16:20:11 +02:00
cristianpb
2b0a9bca02 Allow to add multiple files 2020-04-23 15:55:10 +02:00
Stefan Zweifel
13c9c82cae Merge pull request #63 from stefanzweifel/revert-62-revert-59-no-override-global-git
Revert "Revert "Place git user configuration inline before commit""
2020-04-22 21:20:00 +02:00
Stefan Zweifel
6e0a745133 Use Array 2020-04-22 21:17:10 +02:00
Stefan Zweifel
88ddd5fba5 WIP 2020-04-22 21:04:17 +02:00
Stefan Zweifel
2dec151b5c WIP 2020-04-22 20:49:36 +02:00
Stefan Zweifel
1ba0b8765f WIP 2020-04-22 20:43:52 +02:00
Stefan Zweifel
f278d451d8 Revert hard coded options 2020-04-22 20:39:17 +02:00
Stefan Zweifel
1f6bf5e4c0 Set default value for commit_options 2020-04-22 20:39:08 +02:00
Stefan Zweifel
5dae7dbdb7 Hard Code Options 2020-04-22 20:36:26 +02:00
Stefan Zweifel
fbbf9665a8 Output git version and debugging message 2020-04-22 20:21:08 +02:00
Stefan Zweifel
e8ab63a01b Add ; in more places 2020-04-22 20:17:05 +02:00
Stefan Zweifel
fdbf836519 Split git-commit command 2020-04-22 20:07:31 +02:00
Stefan Zweifel
8f94f9b7ec Revert "Revert "Place git user configuration inline before commit"" 2020-04-22 20:04:52 +02:00
Stefan Zweifel
e6db1ef8bd Release v4.1.4 2020-04-22 12:58:51 +02:00
Stefan Zweifel
d09082150e Merge pull request #62 from stefanzweifel/revert-59-no-override-global-git
Revert "Place git user configuration inline before commit"
2020-04-22 12:56:36 +02:00
Stefan Zweifel
3e578b5696 Revert "Place git user configuration inline before commit" 2020-04-22 12:55:25 +02:00
Stefan Zweifel
c586963a3d Update README 2020-04-18 10:55:30 +02:00
Stefan Zweifel
a7342eab13 Release v4.1.3 2020-04-18 10:55:26 +02:00
Stefan Zweifel
256f31683d Add some Debug Logs 2020-04-18 10:53:20 +02:00
Stefan Zweifel
8040ba33d6 Merge pull request #59 from parndt/no-override-global-git
Place git user configuration inline before commit
2020-04-10 14:50:57 +02:00
Philip Arndt
80c7ed953f Place git user configuration inline 2020-04-10 11:38:03 +12:00
Stefan Zweifel
dd055f6225 Release v4.1.2 2020-04-03 09:19:39 +02:00
Stefan Zweifel
55734408b7 Merge pull request #57 from wxt2005/master
Remove unnecessary escape
2020-04-03 09:10:34 +02:00
Botao
d317154f77 Remove unnecessary escape 2020-04-03 13:21:53 +08:00
Stefan Zweifel
36489f4cb5 Merge pull request #56 from localheinz/patch-1
Fix: Typo
2020-03-17 15:44:10 +01:00
Andreas Möller
2530046e72 Fix: Typo 2020-03-17 13:44:47 +01:00
Stefan Zweifel
172c2a2fc3 Update CD Workflow 2020-03-14 13:39:33 +01:00
Stefan Zweifel
480e111bf8 Release v4.1.1 2020-03-14 13:37:49 +01:00
Stefan Zweifel
7659782c71 Merge pull request #54 from stefanzweifel/hotfix/optional-branch-push
Fix: Push branch to repository if no branch name is given and no tagging message is set
2020-03-14 13:34:39 +01:00
Stefan Zweifel
026f88c27c Fix typo in message 2020-03-14 13:32:10 +01:00
Stefan Zweifel
f73d11d461 Revert changes 2020-03-14 13:21:42 +01:00
Stefan Zweifel
2b6b90e8f1 Test shorthand 2020-03-14 13:20:32 +01:00
Stefan Zweifel
e1770ec52b Only add --tags option if tagging message is set 2020-03-14 13:13:34 +01:00
Stefan Zweifel
0453bb1c25 Temp disable push of tags 2020-03-14 13:11:13 +01:00
Stefan Zweifel
da55e4a0cf Add echo statements for easier debugging 2020-03-14 13:09:53 +01:00
Stefan Zweifel
b1833bd054 Merge pull request #52 from localheinz/fix/typo
Fix: Typo
2020-03-13 17:02:58 +01:00
Andreas Möller
6dfda22dd6 Fix: Typo 2020-03-13 12:35:11 +01:00
Stefan Zweifel
94c72aa7c5 Update Changelog and Readme for v4.1.0 2020-03-05 20:55:10 +01:00
Stefan Zweifel
87526a8aa1 Merge pull request #50 from stefanzweifel/feature/tag-commit
Feature: Tag commit created by the Action
2020-03-05 20:52:29 +01:00
Stefan Zweifel
844c808726 Echo out the tagging message 2020-03-05 20:48:15 +01:00
Stefan Zweifel
ce08dda6b3 Update Wording 2020-03-05 20:48:00 +01:00
Stefan Zweifel
0ad4c8ce73 Fix _tag_commit 2020-03-05 20:35:32 +01:00
Stefan Zweifel
3387b2f267 Add tagging_message input option 2020-03-05 20:31:06 +01:00
Stefan Zweifel
d4a53f1779 Push Tags to Remote Repository 2020-03-05 20:28:38 +01:00
Stefan Zweifel
956a47433b Merge pull request #49 from stefanzweifel/feature/outputs
Feature: Add "changes_detected" output
2020-03-04 20:44:32 +01:00
Stefan Zweifel
f866b2a854 Update Changelog 2020-03-04 20:33:53 +01:00
Stefan Zweifel
8744cc88ef Update README 2020-03-04 20:33:10 +01:00
Stefan Zweifel
57bbd38e56 Add outputs to action.yml 2020-03-04 19:56:33 +01:00
Stefan Zweifel
eef5f33ea3 WIP 2020-03-03 21:04:57 +01:00
Stefan Zweifel
25e6f0b17d Echo changes_detected in workflow 2020-03-03 21:00:40 +01:00
Stefan Zweifel
ae885f5d8c WIP 2020-03-03 20:54:12 +01:00
Stefan Zweifel
33e8fd937f Add changes_detected output 2020-03-03 20:51:12 +01:00
Stefan Zweifel
404d2015f4 Add Workflow to run git-auto-commit 2020-03-03 20:51:02 +01:00
Stefan Zweifel
cd0530ad7a Merge pull request #48 from clxmstaab/patch-1
example: fix typo
2020-03-03 12:12:50 +01:00
Markus Staab
2a957f5c41 example: fix typo 2020-03-03 12:08:03 +01:00
Stefan Zweifel
7e64e614a1 Fix Typo in README 2020-02-29 09:52:12 +01:00
Stefan Zweifel
c887fa4a07 Update Changelog 2020-02-24 20:09:19 +01:00
Stefan Zweifel
09d175379e Release v4.0.0 2020-02-24 20:03:49 +01:00
Stefan Zweifel
cdb861eda0 Merge pull request #45 from stefanzweifel/refactor/switch-to-js
[4.0] Switch to NodeJS Environment (BC)
2020-02-24 19:49:08 +01:00
Stefan Zweifel
6a853b60cc Add Continuous Deployment Workflow 2020-02-24 19:39:11 +01:00
Stefan Zweifel
76f50fc3ad Add PAT Example 2020-02-23 11:42:57 +01:00
Stefan Zweifel
9b4acb8f10 Update README 2020-02-23 11:29:03 +01:00
Stefan Zweifel
d11ccd183d Add commetn to index.js
I don't have so much experience in writing node-js scripts. It makes sense, to point out where most of the code in index.js is coming from.
2020-02-23 10:45:28 +01:00
Stefan Zweifel
a156a1072e Remove not required code 2020-02-23 10:44:44 +01:00
Stefan Zweifel
d69e5f0850 WIP 2020-02-23 10:16:26 +01:00
Stefan Zweifel
86f0c11c06 Remove dist/index.js 2020-02-11 21:08:14 +01:00
Stefan Zweifel
eda98fb9e5 Simplify index.js 2020-02-11 21:04:18 +01:00
Stefan Zweifel
844e852dde Add @actions/exec 2020-02-11 21:00:40 +01:00
Stefan Zweifel
cca75e0840 Add compiled index.js file 2020-02-11 20:54:10 +01:00
Stefan Zweifel
ef107e1d4b Switch Action to use node12 2020-02-11 20:50:33 +01:00
Stefan Zweifel
e97d20ce65 Add package.json and other JavaScript related files 2020-02-11 20:50:22 +01:00
Stefan Zweifel
3c9d7dd29d Remove Dockerfile 2020-02-11 20:47:37 +01:00
Stefan Zweifel
4ff392a586 Merge pull request #42 from zhangyoufu/patch-1
fix typo in README.md
2020-02-08 07:50:13 +01:00
Youfu Zhang
69c53bd75e fix typo in README.md 2020-02-08 12:28:25 +08:00
Stefan Zweifel
8563bc2c47 Tag v3.0.0 2020-02-06 21:15:35 +01:00
Stefan Zweifel
657dcb0873 Merge pull request #40 from stefanzweifel/v3
Release: v3.0.0
2020-02-06 21:14:31 +01:00
Stefan Zweifel
1d39bb676c Merge pull request #41 from stefanzweifel/feature/make-branch-optional
Make branch option optional
2020-02-06 20:51:13 +01:00
Stefan Zweifel
864c975b87 Update README 2020-02-06 20:49:03 +01:00
Stefan Zweifel
33592697c4 Update Changelog 2020-02-06 20:43:04 +01:00
Stefan Zweifel
13e281008a Update entrypoint.sh 2020-02-06 17:51:55 +01:00
Stefan Zweifel
42e5be9ebb WIP 2020-02-05 21:39:14 +01:00
Stefan Zweifel
f0354eba45 WIP 2020-02-05 21:36:48 +01:00
Stefan Zweifel
af7b14b2cf WIP 2020-02-05 21:32:57 +01:00
Stefan Zweifel
5a4e81ccd7 WIP 2020-02-05 21:31:46 +01:00
Stefan Zweifel
0884c39e7e WIP 2020-02-05 21:28:18 +01:00
Stefan Zweifel
5ab45a4eef WIP 2020-02-05 21:26:30 +01:00
Stefan Zweifel
e20b39e8ed Remove branch default value 2020-02-05 21:24:36 +01:00
Stefan Zweifel
5df30c89b8 Update how commit is pushed 2020-02-05 21:22:54 +01:00
Stefan Zweifel
b197c5ff8c Set default value for branch 2020-02-05 21:12:20 +01:00
Stefan Zweifel
098f1a8051 Merge pull request #39 from stefanzweifel/feature/commiter-options
Add Options to change Commit User Name and Email and Author
2020-02-05 20:38:20 +01:00
Stefan Zweifel
a06032e34f Update Changelog 2020-02-05 20:36:12 +01:00
Stefan Zweifel
3185f2bd2a Update README 2020-02-05 20:27:14 +01:00
Stefan Zweifel
5432544bdb Update Docs 2020-02-05 20:24:25 +01:00
Stefan Zweifel
0a5fd7e510 Merge branch 'v3' into feature/commiter-options
# Conflicts:
#	README.md
#	entrypoint.sh
2020-02-05 20:12:29 +01:00
Stefan Zweifel
81fa501ea5 Merge pull request #36 from stefanzweifel/refactor/remove-git-setup
Remove need for GITHUB_TOKEN
2020-02-05 19:52:36 +01:00
Stefan Zweifel
3c60dc19b2 Update README 2020-02-04 21:27:15 +01:00
Stefan Zweifel
0822a9b930 Add commit_author input option 2020-02-04 21:02:40 +01:00
Stefan Zweifel
d47024e59c Add commit_user_name and commit_user_email inputs 2020-02-04 20:14:27 +01:00
Stefan Zweifel
ae384f95d0 Update Changelog 2020-02-04 19:43:08 +01:00
Stefan Zweifel
959e7d4eab Update README 2020-02-04 19:42:37 +01:00
Stefan Zweifel
b21b1abc6d Update Comment 2020-02-04 19:37:58 +01:00
Stefan Zweifel
35440b9386 Update README 2020-02-04 19:37:00 +01:00
Stefan Zweifel
99f6ce74b4 Update README.md 2020-01-14 14:44:34 +01:00
Stefan Zweifel
4ab94c0ec4 Remove creation of .netrc file 2020-01-13 21:23:03 +01:00
Stefan Zweifel
1a9ba81dae Merge pull request #32 from yelizariev/patch-2
delete args as not used
2020-01-11 21:40:52 +01:00
Stefan Zweifel
2043118160 Update Dockerfile 2020-01-11 21:35:29 +01:00
Stefan Zweifel
9879efa581 Merge pull request #34 from yelizariev/refactoring
refactoring: combine merge lib.sh to entrypoint.sh
2020-01-11 21:34:15 +01:00
Stefan Zweifel
3525430c70 Update README 2020-01-11 21:32:17 +01:00
Stefan Zweifel
db25cb8fde Add checkout@v2 example
Closes #33
2020-01-11 21:32:11 +01:00
Ivan Yelizariev
5dd90bb58c refactoring: combine merge lib.sh to entrypoint.sh
If we use "source /lib.sh", bash will point to wrong line in case of an error.
It's confusing on debuggin new features
2020-01-10 13:08:35 +05:00
Ivan Yelizariev
36610a4da0 delete args as not used
closes #31
2020-01-07 12:27:14 +05:00
Stefan Zweifel
26a56d2023 Add note to README about forks and PRs 2020-01-04 17:54:44 +01:00
Stefan Zweifel
6d7a33192e Release v2.5.0 2019-12-18 11:59:49 +01:00
Stefan Zweifel
d625ec8b28 Update Description of inputs 2019-12-18 11:58:17 +01:00
Stefan Zweifel
e870f94840 Update Changelog 2019-12-18 11:57:16 +01:00
Stefan Zweifel
4a6ffd0603 Merge pull request #24 from stefanzweifel/extract-logic-to-lib
Extract methods into lib.sh / Add shellcheck workflow
2019-12-16 14:57:24 +01:00
Stefan Zweifel
dcfe3115ff WIP 2019-12-12 21:40:03 +01:00
Stefan Zweifel
3f6e990b1e Update lib.sh 2019-12-12 21:14:38 +01:00
Stefan Zweifel
560cf49647 Update Workflow 2019-12-12 21:10:29 +01:00
Stefan Zweifel
c62363dd62 Add Workflow to run Shellcheck 2019-12-12 21:05:01 +01:00
Stefan Zweifel
7c85ce3dee Update path to lib.sh 2019-12-12 20:46:16 +01:00
Stefan Zweifel
8bb153baaa Update Dockerfile 2019-12-12 20:45:42 +01:00
Stefan Zweifel
68035425ff Update Path 2019-12-12 20:44:41 +01:00
Stefan Zweifel
3273c330f8 Fix path 2019-12-12 20:42:47 +01:00
Stefan Zweifel
4280601118 Create lib.sh and update entrypoint.sh 2019-12-12 20:41:00 +01:00
Stefan Zweifel
3c148f8a94 Merge pull request #22 from yelizariev/custom-repo-path
Add "repository" option for custom repository path
2019-12-10 20:20:25 +01:00
Ivan Yelizariev
d3ceacae7d Add "repository" option for custom repository path 2019-12-10 17:20:25 +05:00
Stefan Zweifel
d338d7dd00 Update README to latest version 2019-11-30 19:42:53 +01:00
Stefan Zweifel
f7e2c0f118 Release v2.4.0 2019-11-30 19:40:57 +01:00
Stefan Zweifel
8db04fa14f Merge pull request #21 from jkaan/feature/add-support-for-lfs
Install Git-LFS while building Dockerfile
2019-11-30 19:37:41 +01:00
Joey Kaan
44a415d3cb Install Git-LFS while building Dockerfile 2019-11-30 13:05:28 +01:00
Stefan Zweifel
af9e1689a5 Update Changelog 2019-11-27 20:07:24 +01:00
Stefan Zweifel
2b22ba6212 Merge pull request #19 from localheinz/fix/untracked
Fix: Use 'git status -s' to check for untracked/modified files
2019-11-27 20:03:09 +01:00
Andreas Möller
b1b8ae8b5c Fix: Use 'git status -s' to check for untracked/modified files 2019-11-27 11:24:27 +01:00
Stefan Zweifel
fb3de05451 Revert "Fix: Add files that are not tracked yet"
This reverts commit 65d8bdf167.
2019-11-24 12:21:42 +01:00
Stefan Zweifel
284d0b78f0 Fix: Add files that are not tracked yet (#17)
Fix: Add files that are not tracked yet
2019-11-22 13:00:18 +01:00
Stefan Zweifel
188fc2bd58 Delete foo 2019-11-22 12:59:27 +01:00
Andreas Möller
65d8bdf167 Fix: Add files that are not tracked yet 2019-11-22 11:55:58 +01:00
Stefan Zweifel
40255153c4 Fix Link in README 2019-11-04 20:09:04 +01:00
Stefan Zweifel
0ef5bf58dc Tag v2.3.0 2019-11-04 20:07:50 +01:00
Stefan Zweifel
e924b16154 Merge pull request #15 from gomorizsolt/issue-14_support-custom-git-params
Support custom git params.
Fixes #14
2019-11-04 20:04:09 +01:00
Gömöri Zsolt
2fb839c669 Remove is_defined() 2019-11-01 11:11:19 +01:00
Gömöri Zsolt
908446c002 Use :+ to avoid empty string 2019-11-01 11:03:23 +01:00
Gömöri Zsolt
2d23a29775 Use one-line if statement 2019-11-01 10:53:56 +01:00
Gömöri Zsolt
bdc88aff2c Re-add is_defined() to eliminate empty string in git commit 2019-11-01 10:44:09 +01:00
Gömöri Zsolt
ddcd35eaa8 Remove is_defined() approach 2019-11-01 10:19:20 +01:00
Gömöri Zsolt
760c9be2dc Define default value for file_pattern 2019-11-01 10:15:22 +01:00
Gömöri Zsolt
69d0349561 Log input params beforehand 2019-11-01 10:10:52 +01:00
Gömöri Zsolt
eecee2898e Follow GH Action's naming restrictions 2019-11-01 10:04:42 +01:00
Gömöri Zsolt
3889fd6a6c Add args entry to actions.yml 2019-11-01 09:51:54 +01:00
Gömöri Zsolt
1ad5315ba7 Fix log statement 2019-11-01 09:51:19 +01:00
gomorizsolt
fa043bd474 Remove junk code 2019-10-31 15:13:27 +01:00
gomorizsolt
af33cfbb5c Replace get_value with is_defined altogether 2019-10-31 14:49:38 +01:00
gomorizsolt
677efa2969 Remove blank line 2019-10-31 11:25:08 +01:00
gomorizsolt
b6dcf94303 Add is_defined and get_value to improve on code's reusability 2019-10-31 11:18:48 +01:00
gomorizsolt
a65a3a47cd Support commit options, update README.md accordingly 2019-10-31 09:02:56 +01:00
Stefan Zweifel
a607c57aa4 Update version in README 2019-10-26 16:38:54 +02:00
Stefan Zweifel
134234c02d Feature: Add File Pattern Input (#13)
Feature: Add File Pattern Input
2019-10-26 16:37:31 +02:00
Stefan Zweifel
73ba09a90c Update Description 2019-10-26 16:33:59 +02:00
Stefan Zweifel
92d05a9fc5 Update CHANGELOG 2019-10-26 16:33:17 +02:00
Stefan Zweifel
25c0d721b7 Reenable if condition 2019-10-26 14:00:59 +02:00
Stefan Zweifel
d6493da30b Disable if-condition 2019-10-26 13:58:34 +02:00
Stefan Zweifel
5de23163f2 Update actions.yml
Co-Authored-By: Zsolt Gomori <30864202+gomorizsolt@users.noreply.github.com>
2019-10-26 12:13:56 +02:00
Stefan Zweifel
16f4dc5956 Update README 2019-10-25 22:18:32 +02:00
Stefan Zweifel
03de600c97 Fixes 2019-10-25 20:57:03 +02:00
Stefan Zweifel
40956d2dbd Add file_pattern argument 2019-10-25 20:51:12 +02:00
Stefan Zweifel
9fc8aa621f Update issue templates 2019-10-03 20:24:57 +02:00
Stefan Zweifel
81c04ebd3c Create CODE_OF_CONDUCT.md 2019-10-03 20:19:57 +02:00
Stefan Zweifel
ef21fa22a3 Merge pull request #10 from mattdfloyd/patch-1
Update Dockerfile
2019-10-01 19:30:55 +02:00
mattdfloyd
e29ffba3a7 Update Dockerfile
Typo fix
2019-10-01 12:51:13 -04:00
Stefan Zweifel
c1a88fc967 Update README.md 2019-10-01 13:58:46 +02:00
Stefan Zweifel
12d8aff89d Update README 2019-09-22 15:05:43 +02:00
Stefan Zweifel
62474225c7 Update README 2019-09-22 14:52:33 +02:00
Stefan Zweifel
b60aaac666 Update README 2019-09-20 21:21:03 +02:00
Stefan Zweifel
3ffeab2fe0 Tag v2.1.0 2019-09-20 21:20:34 +02:00
Stefan Zweifel
5adbb8cb3e Use GITHUB_ACTOR instead of args 2019-09-20 20:34:57 +02:00
Stefan Zweifel
97f9868da0 Rename ref to branch 2019-09-20 20:26:41 +02:00
Stefan Zweifel
8a0c95d76c Merge pull request #7 from stefanzweifel/fix-branch-checkout
Bugfix: Fix git checkout and git push commands
2019-09-20 19:50:49 +02:00
Stefan Zweifel
4c6d2819f0 Update README 2019-09-20 10:47:19 +02:00
Stefan Zweifel
7fec5eda4a Cleanup 2019-09-20 10:46:35 +02:00
Stefan Zweifel
6c17ba31a9 Output $INPUT_REF 2019-09-20 10:43:15 +02:00
Stefan Zweifel
6f1c9227f5 Fix git push command 2019-09-20 10:37:16 +02:00
Stefan Zweifel
72e2d4cb1e Fix git checkout 2019-09-20 10:33:12 +02:00
Stefan Zweifel
8cc484cbc5 Add ref argument 2019-09-20 10:30:36 +02:00
Stefan Zweifel
ed0ebb9072 Log $PUSH_BRANCH value 2019-09-20 10:19:34 +02:00
Stefan Zweifel
0b91625aed WIP 2019-09-20 10:11:50 +02:00
Stefan Zweifel
ba1c2a6047 Try to fix that push command 2019-09-20 10:08:13 +02:00
Stefan Zweifel
12282205b7 Try to fix git push 2019-09-20 10:01:27 +02:00
Stefan Zweifel
ef8610f6df Fix git push 2019-09-20 09:56:20 +02:00
Stefan Zweifel
f4fd59c4d4 Use $PUSH_BRANCH in git push command 2019-09-20 09:49:26 +02:00
Stefan Zweifel
ea88bd7cde Try to fix checkout command 2019-09-20 09:42:26 +02:00
Stefan Zweifel
80f825a9bc Update how the branch is checked out 2019-09-20 09:27:50 +02:00
Stefan Zweifel
845dc426e7 Update README.md 2019-09-06 07:34:41 +02:00
Stefan Zweifel
fcfae8cf7e Merge pull request #5 from tupaschoal/patch-1
Fix puzzled explanation on README.md
2019-09-06 07:33:37 +02:00
Tulio Leao
ef125417f8 Fix puzzled explanation on README.md 2019-09-06 02:19:37 -03:00
Stefan Zweifel
709206b68e Update Changelog 2019-08-31 18:47:56 +02:00
Stefan Zweifel
c37291d29c Merge pull request #3 from stefanzweifel/dev
Make Action compatible with GitHub Actions BETA2 / YAML Version
2019-08-31 18:45:42 +02:00
Stefan Zweifel
fc34a4d3a2 Update README 2019-08-31 18:43:23 +02:00
Stefan Zweifel
e14499263c Add GH Actions Stuff to Dockerfile 2019-08-31 18:34:50 +02:00
Stefan Zweifel
11769ba87f Merge branch 'dev-tinker' into dev 2019-08-31 18:34:10 +02:00
Stefan Zweifel
0364ecfe57 Update Entrypoint 2019-08-31 18:34:01 +02:00
Stefan Zweifel
8d47eb33c5 Use Actions as Git User 2019-08-31 18:15:13 +02:00
Stefan Zweifel
49fa6b4e7a WIP 2019-08-31 18:14:28 +02:00
Stefan Zweifel
ef070dad05 Updates 2019-08-31 18:10:59 +02:00
Stefan Zweifel
fbe300afdf Tinker tinker 2019-08-31 18:07:25 +02:00
Stefan Zweifel
4b2201fcd1 Update Entrypoint 2019-08-31 18:02:55 +02:00
Stefan Zweifel
a93a9a308d Use git checkout 2019-08-27 20:30:31 +02:00
Stefan Zweifel
fdf062fc1c Switch to branch and setup remote origin 2019-08-27 20:26:44 +02:00
Stefan Zweifel
6280a31960 Remove entrypoint 2019-08-20 21:12:28 +02:00
Stefan Zweifel
1dd709d949 Update Dockerfile 2019-08-20 21:05:17 +02:00
Stefan Zweifel
8620a4b744 Update README 2019-08-20 21:05:10 +02:00
Stefan Zweifel
6057956931 Fix Typo 2019-08-20 20:51:00 +02:00
Stefan Zweifel
3fe53a7d31 Add actions.yml 2019-08-20 20:43:07 +02:00
19 changed files with 1319 additions and 57 deletions

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
github: stefanzweifel
custom: ["https://buymeacoff.ee/3oQ64YW"]

38
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
<!-- Before opening an issue, have you tried solving your problem by explicitly setting the `branch`-value in your workflow? -->
**Version of the Action**
`v4.x.x`
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Used Workflow**
```yaml
# Paste the Workflow you've used here
```
**Additional context**
Add any other context about the problem here.

View File

@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

22
.github/workflows/git-auto-commit.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: git-auto-commit
on: push
jobs:
git-auto-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use git-auto-commit-action
id: "auto-commit-action"
uses: ./
- name: "no changes detected"
if: steps.auto-commit-action.outputs.changes_detected == false
run: "echo \"No changes detected\""
- name: "changes detected"
if: steps.auto-commit-action.outputs.changes_detected == true
run: "echo \"Changes detected\""

26
.github/workflows/integration-tests.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: Integration Tests
on: push
jobs:
test-commit-works:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: master
- name: Add Files
run: touch {a,b,c}.txt
- name: Run git-auto-commit
id: "auto-commit-action"
uses: ./
with:
branch: ci-test
commit_message: Message
checkout_options: -b
- name: Delete Branch
run: git push -d origin ci-test

19
.github/workflows/linter.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Lint Code Base
on: push
jobs:
build:
name: Lint Code Base
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v2
- name: Lint Code Base
uses: github/super-linter@v3
env:
VALIDATE_ALL_CODEBASE: false
VALIDATE_MARKDOWN: false
DEFAULT_BRANCH: master
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

23
.github/workflows/tests.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
name: tests
on: push
jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Shell Mock
run: |
git clone https://github.com/capitalone/bash_shell_mock
cd bash_shell_mock
sudo ./install.sh /usr/local
- name: Install BATS
run: yarn install
- name: Run Tests
run: yarn test

15
.github/workflows/versioning.yml vendored Normal file
View File

@@ -0,0 +1,15 @@
name: Keep the versions up-to-date
on:
release:
types: [published, edited]
jobs:
actions-tagger:
runs-on: windows-latest
steps:
- uses: Actions-R-Us/actions-tagger@latest
env:
GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"
with:
publish_latest_tag: true

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
tests/test_repo
tests/tmpstubs
tests/shellmock.*
yarn.lock

View File

@@ -4,7 +4,175 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [Unreleased](https://github.com/stefanzweifel/git-auto-commit-action/compare/v1.0.0...HEAD)
## [Unreleased](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.7.1...HEAD)
> TBD
## [v4.7.1](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.7.0...v4.7.1) - 2020-10-12
### Removed
- Remove `checkout_options` as it broke everything [#120](https://github.com/stefanzweifel/git-auto-commit-action/pull/120/)
## [v4.7.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.6.0...v4.7.0) - 2020-10-11
### Added
- Add `checkout_options` [#115](https://github.com/stefanzweifel/git-auto-commit-action/pull/115)
## [v4.6.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.5.1...v4.6.0) - 2020-10-11
### Changed
- Make "commit_message" optional and set default commit message to "Apply automatic changes" [#103](https://github.com/stefanzweifel/git-auto-commit-action/issues/103), [#110](https://github.com/stefanzweifel/git-auto-commit-action/pull/110)
### Fixes
- Better support for branch names with special characters in them [#108](https://github.com/stefanzweifel/git-auto-commit-action/pull/108)
## [v4.5.1](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.5.0...v4.5.1) - 2020-09-11
### Removed
- Remove orphan branch feature added in #95 which broke stuff [#98](https://github.com/stefanzweifel/git-auto-commit-action/pull/98)
## [v4.5.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.4.1...v4.5.0) - 2020-09-10
### Added
- Create orphan branch if branch name does not exist [#95](https://github.com/stefanzweifel/git-auto-commit-action/pull/95)
## [v4.4.1](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.4.0...v4.4.1) - 2020-08-16
### Changed
- Include given `file_pattern` in git dirty check [#91](https://github.com/stefanzweifel/git-auto-commit-action/pull/91)
## [v4.4.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.3.0...v4.4.0) - 2020-06-26
### Added
- Add option to skipt the dirty check and always try to create and push a commit [#82](https://github.com/stefanzweifel/git-auto-commit-action/issues/82), [#84](https://github.com/stefanzweifel/git-auto-commit-action/pull/84)
## [v4.3.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.2.0...v4.3.0) - 2020-05-16
Note: Since v4.3.0 we provide major version tags. You can now use `stefanzweifel/git-auto-commit-action@v4` to always use the latest release of a major version. See [#77](https://github.com/stefanzweifel/git-auto-commit-action/issues/77) for details.
### Added
- Add new `push_options`-input. This feature makes it easier for you to force-push commits to a repository. [#78](https://github.com/stefanzweifel/git-auto-commit-action/pull/78), [#72](https://github.com/stefanzweifel/git-auto-commit-action/issues/72)
## [v4.2.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.6...v4.2.0) - 2020-05-10
### Changed
- Use `${{ github.head_ref }}` as default branch value. Therefore, the branch name when listening for `pull_request`-events is optional. [#75](https://github.com/stefanzweifel/git-auto-commit-action/pull/75), [#73](https://github.com/stefanzweifel/git-auto-commit-action/pull/73)
## [v4.1.6](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.5...v4.1.6) - 2020-04-28
### Fixes
- Fix issue where tags could not be created correctly [#68](https://github.com/stefanzweifel/git-auto-commit-action/pull/68)
## [v4.1.5](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.4...v4.1.5) - 2020-04-23
### Added
- Update `file_pattern` to support multiple file paths [#65](https://github.com/stefanzweifel/git-auto-commit-action/pull/65)
### Changes
- Revert changes made in v4.1.4 [#63](https://github.com/stefanzweifel/git-auto-commit-action/pull/63)
### Fixes
- Fix issue with `commit_options` [#64](https://github.com/stefanzweifel/git-auto-commit-action/pull/64)
## [v4.1.4](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.3...v4.1.4) - 2020-04-22
### Fixed
- Fix bug introduced in previous version, where git user configuration has been placed inline [#62](https://github.com/stefanzweifel/git-auto-commit-action/pull/62)
## [v4.1.3](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.2...v4.1.3) - 2020-04-18
### Changed
- Place Git user configuration inline [#59](https://github.com/stefanzweifel/git-auto-commit-action/pull/59)
## [v4.1.2](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.1...v4.1.2) - 2020-04-03
### Fixes
- Fix Issue with `changes_detected`-output [#57](https://github.com/stefanzweifel/git-auto-commit-action/pull/57)
## [v4.1.1](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.0...v4.1.1) - 2020-03-14
### Fixes
- Fix issue where commit has not been pushed to remote repository, when no `branch`-option has been given [#54](https://github.com/stefanzweifel/git-auto-commit-action/pull/54)
## [v4.1.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.0.0...v4.1.0) - 2020-03-05
### Added
- Add `changes_detected` output [#49](https://github.com/stefanzweifel/git-auto-commit-action/pull/49), [#46](https://github.com/stefanzweifel/git-auto-commit-action/issues/46)
- Add `tagging_message` input option to create and push tags [#50](https://github.com/stefanzweifel/git-auto-commit-action/pull/50), [#47](https://github.com/stefanzweifel/git-auto-commit-action/issues/47)
## [v4.0.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v3.0.0...v4.0.0) - 2020-02-24
### Changed
- Switch Action to use `node12`-environment instead of `docker`. [#45](https://github.com/stefanzweifel/git-auto-commit-action/pull/45)
## [v3.0.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v2.5.0...v3.0.0) - 2020-02-06
### Added
- Add `commit_user_name`, `commit_user_email` and `commit_author` input options for full customzation on how the commit is being created [#39](https://github.com/stefanzweifel/git-auto-commit-action/pull/39)
### Changed
- Make the `branch` input option optional [#41](https://github.com/stefanzweifel/git-auto-commit-action/pull/41)
### Removed
- Remove the need of a GITHUB_TOKEN. Users now have to use `actions/checkout@v2` or higher [#36](https://github.com/stefanzweifel/git-auto-commit-action/pull/36)
## [v2.5.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v2.4.0...v2.5.0) - 2019-12-18
### Added
- Add new `repository`-argument [#22](https://github.com/stefanzweifel/git-auto-commit-action/pull/22)
### Changed
- Extract logic of the Action into methods and into a separate file [#24](https://github.com/stefanzweifel/git-auto-commit-action/pull/24)
## [v2.4.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v2.3.0...v2.4.0) - 2019-11-30
### Added
- Commit untracked files [#19](https://github.com/stefanzweifel/git-auto-commit-action/pull/19) (fixes [#16](https://github.com/stefanzweifel/git-auto-commit-action/issues/16))
- Add support for Git-LFS [#21](https://github.com/stefanzweifel/git-auto-commit-action/pull/21) (fixes [#20](https://github.com/stefanzweifel/git-auto-commit-action/issues/20))
## [v2.3.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v2.2.0...v2.3.0) - 2019-11-04
### Added
- Add a new `commit_option`-argument. Allows users to define additional commit options for the `git-commit` command. [#14](https://github.com/stefanzweifel/git-auto-commit-action/pull/15)
## [v2.2.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v2.1.0...v2.2.0) - 2019-10-26
### Added
- Add new `file_pattern`-argument. Allows users to define which files should be added in the commit. [#13](https://github.com/stefanzweifel/git-auto-commit-action/pull/13)
## [v2.1.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v2.0.0...v2.1.0) - 2019-09-20
### Added
- Add `branch`-argument to determine, to which branch changes should be pushed. See README for usage details.
### Fixed
- Fixes Issue where changes couldn't be pushed to GitHub due to wrong ref-name.
### Removed
- Remove `commit_author_email` and `commit_author_name` arguments. The `$GITHUB_ACTOR` is now used as the Git Author
## [v2.0.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v1.0.0...v2.0.0) - 2019-08-31
### Changed
- Make Action Compatible with latest beta of GitHub Actions [#3](https://github.com/stefanzweifel/git-auto-commit-action/pull/3)
## v1.0.0 - 2019-06-10

76
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at hello@stefanzweifel.io. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

View File

@@ -1,14 +0,0 @@
FROM alpine/git:1.0.7
LABEL "com.github.actions.name"="Auto Commit changed files"
LABEL "com.github.actions.description"="Auotmatically commit changed files and push changes back to remote repository."
LABEL "com.github.actions.icon"="git-commit"
LABEL "com.github.actions.color"="orange"
LABEL "repository"="http://github.com/stefanzweifel/git-auto-commit-action"
LABEL "homepage"="http://github.com/stefanzweifel/git-auto-commit-action"
LABEL "maintainer"="Stefan Zweifel <hello@stefanzweifel.io>"
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["sh", "/entrypoint.sh"]

284
README.md
View File

@@ -1,61 +1,275 @@
# git-auto-commit-action
# git-auto-commit Action
This GitHub Action automatically commits files which have been changed during a Workflow run and pushes the Commit back to GitHub.
The Committer is "GitHub Actions <actions@github.com>" and the Author of the Commit can be configured with environment variables.
> The GitHub Action for committing files for the 80% use case.
If no changes are available, the Actions does nothing.
<a href="https://github.com/stefanzweifel/git-auto-commit-action/actions?query=workflow%3Atests">
<img src="https://github.com/stefanzweifel/git-auto-commit-action/workflows/tests/badge.svg" alt="">
</a>
<a href="https://github.com/stefanzweifel/git-auto-commit-action/actions?query=workflow%3A%22Integration+Tests%22">
<img src="https://github.com/stefanzweifel/git-auto-commit-action/workflows/Integration%20Tests/badge.svg" alt="">
</a>
This GitHub Action automatically commits files which have been changed during a Workflow run and pushes the commit back to GitHub.
The default committer is "GitHub Actions <actions@github.com>", and the default author of the commit is "Your GitHub Username <github_username@users.noreply.github.com>".
This Action has been inspired and adapted from the [auto-commit](https://github.com/cds-snc/github-actions/tree/master/auto-commit
)-Action of the Canadian Digital Service.
)-Action of the Canadian Digital Service and this [commit](https://github.com/elstudio/actions-js-build/blob/41d604d6e73d632e22eac40df8cc69b5added04b/commit/entrypoint.sh)-Action by Eric Johnson.
## Usage
You have to have an Action in your Workflow, which changes some of your project files.
The most common use case for this, is when you're running a Linter or Code-Style fixer on GitHub Actions.
Add the following step at the end of your job, after other steps that might add or change files.
In this example I'm running `php-cs-fixer` in a PHP project.
```yaml
- uses: stefanzweifel/git-auto-commit-action@v4
with:
# Optional but recommended, defaults to "Apply automatic changes"
commit_message: Apply automatic changes
```terraform
workflow "php-cs-fixer" {
on = "push"
resolves = [
"auto-commit-php-cs-fixer"
]
}
# Optional branch to push to, defaults to the current branch
branch: feature-123
action "php-cs-fixer" {
uses = "docker://oskarstark/php-cs-fixer-ga"
}
# Optional options appended to `git-commit`
# See https://git-scm.com/docs/git-commit for a list of available options
commit_options: '--no-verify --signoff'
action "auto-commit-php-cs-fixer" {
needs = ["php-cs-fixer"]
uses = "stefanzweifel/git-auto-commit-action@v1.0.0"
secrets = ["GITHUB_TOKEN"]
env = {
COMMIT_MESSAGE = "Apply php-cs-fixer changes"
COMMIT_AUTHOR_EMAIL = "john.doe@example.com"
COMMIT_AUTHOR_NAME = "John Doe"
}
}
# Optional glob pattern of files which should be added to the commit
# See the `pathspec`-documentation for git
# - https://git-scm.com/docs/git-add#Documentation/git-add.txt-ltpathspecgt82308203
# - https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefpathspecapathspec
file_pattern: src/*.js tests/*.js *.php
# Optional local file path to the repository
repository: .
# Optional commit user and author settings
commit_user_name: My GitHub Actions Bot
commit_user_email: my-github-actions-bot@example.org
commit_author: Author <actions@github.com>
# Optional tag message
# Action will create and push a new tag to the remote repository and the defined branch
tagging_message: 'v1.0.0'
# Optional options appended to `git-push`
# See git-push documentation for details: https://git-scm.com/docs/git-push#_options
push_options: '--force'
# Optional: Disable dirty check and always try to create a commit and push
skip_dirty_check: true
```
## Secrets
## Example
The `GITHUB_TOKEN` secret is required. Add the secret in the Workflow Editor on github.com.
In this example, we're running `php-cs-fixer` in a PHP project to fix the codestyle automatically, then commit possible changed files back to the repository.
## Environment variables
Note that we explicitly specify `${{ github.head_ref }}` in the checkout Action.
This is required in order to work with the `pull_request` event (or any other non-`push` event).
The following environment variables are required:
```yaml
name: php-cs-fixer
- `COMMIT_MESSAGE`: The commit message used when changes are available
- `COMMIT_AUTHOR_EMAIL`: The Commit Authors Email Address
- `COMMIT_AUTHOR_NAME`: The Commit Authors Name
on:
pull_request:
push:
branches:
- "main"
jobs:
php-cs-fixer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.head_ref }}
- name: Run php-cs-fixer
uses: docker://oskarstark/php-cs-fixer-ga
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply php-cs-fixer changes
```
## Inputs
Checkout [`action.yml`](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/action.yml) for a full list of supported inputs.
## Outputs
You can use these outputs to trigger other Actions in your Workflow run based on the result of `git-auto-commit-action`.
- `changes_detected`: Returns either "true" or "false" if the repository was dirty and files have changed.
### Example
```yaml
- name: "Run if changes have been detected"
if: steps.auto-commit-action.outputs.changes_detected == 'true'
run: echo "Changes!"
- name: "Run if no changes have been detected"
if: steps.auto-commit-action.outputs.changes_detected == 'false'
run: echo "No Changes!"
```
## Limitations & Gotchas
### Checkout the correct branch
You must use `action/checkout@v2` or later versions to checkout the repository.
In non-`push` events, such as `pull_request`, make sure to specify the `ref` to checkout:
```yaml
- uses: actions/checkout@v2
with:
ref: ${{ github.head_ref }}
```
You have to do this to avoid that the `checkout`-Action clones your repository in a detached state.
### Commits of this Action do not trigger new Workflow runs
The resulting commit **will not trigger** another GitHub Actions Workflow run.
This is due to [limititations set by GitHub](https://help.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token).
> When you use the repository's GITHUB_TOKEN to perform tasks on behalf of the GitHub Actions app, events triggered by the GITHUB_TOKEN will not create a new workflow run. This prevents you from accidentally creating recursive workflow runs.
You can change this by creating a new [Personal Access Token (PAT)](https://github.com/settings/tokens/new),
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@v2
with:
token: ${{ secrets.PAT }}
```
If you work in an organization and don't want to create a PAT from your personal account, we recommend using a [robot account](https://docs.github.com/en/github/getting-started-with-github/types-of-github-accounts) for the token.
### Using the Action in forks from public repositories
**☝️ Important Notice**: This Action technically works with forks. However, please note that the combination of triggers and their options can cause issues. Please read [the documentation](https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows) on which triggers GitHub Actions support.\
If you use this Action in combination with a linter/fixer, it's easier if you run the Action on `push` on your `main`-branch.
---
By default, this Action will not run on Pull Requests which have been opened by forks. (This is a limitation by GitHub, not by us.)
If you want that a Workflow using this Action runs on Pull Requests opened by forks, 2 things have to be changed:
1. In addition to listening to the `pull_request` event in your Workflow triggers, you have to add an additional event: `pull_request_target`. You can learn more about this event in [the GitHub docs](https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull_request_target).
2. GitHub Action has to be enabled on the forked repository. \
For security reasons, GitHub does not automatically enable GitHub Actions on forks. The user has to explicitly enable GitHub Actions in the "Actions"-tab of the forked repository. (Mention this in your projects README or CONTRIBUTING.md!)
After you have added the `pull_request_target` to your desired Workflow and the forked repository has enabled Actions and a new Pull Request is opened, the Workflow will run **on the forked repository**.
Due to the fact that the Workflow is not run on the repository the Pull Request is opened in, you won't see any status indicators inside the Pull Request.
#### Example
The following workflow runs `php-cs-fixer` (a code linter and fixer for PHP) when a `pull_request` is opened. We've added the `pull_request_target`-trigger too, to make it work for forks.
```yaml
name: Format PHP
on: [push, pull_request, pull_request_target]
jobs:
php-cs-fixer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run php-cs-fixer
uses: docker://oskarstark/php-cs-fixer-ga
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply php-cs-fixer changes
```
Next time a user forks your project **and** enabled GitHub Actions **and** opened a Pull Request, the Workflow will run on the the forked repository and will push commits to the same branch.
Here's how the Pull Request will look like:
![Screenshot of a Pull Request from a Fork](https://user-images.githubusercontent.com/1080923/90955964-9c74c080-e482-11ea-8097-aa7f5161f50e.png)
As you can see, your contributors have to go through hoops to make this work. **For Workflows which runter linters and fixers (like the example above) we recommend running them when a push happens on the `master`-branch.**
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/).
### Push to forks from private repositories
By default, GitHub Actions doesn't run Workflows on forks from private repositories. To enable Actions for **private** repositories enable "Run workflows from pull requests" in your repository settings.
See [this announcement from GitHub](https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/) or the [GitHub docs](https://docs.github.com/en/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository#enabling-workflows-for-private-repository-forks) for details.
### Signing Commits & Other Git Command Line Options
Using command lines options needs to be done manually for each workflow which you require the option enabled. So for example signing commits requires you to import the gpg signature each and every time. The following list of actions are worth checking out if you need to automate these tasks regulary
- [Import GPG Signature](https://github.com/crazy-max/ghaction-import-gpg) (Suggested by [TGTGamer](https://github.com/tgtgamer))
## Troubleshooting
### Action does not push commit to repository
Make sure to [checkout the correct branch](#checkout-the-correct-branch).
### Action does not push commit to repository: Authentication Issue
If your Workflow can't push the commit to the repository because of authentication issues,
please update your Workflow configuration and usage of [`actions/checkout`](https://github.com/actions/checkout#usage).
Updating the `token` value with a Personal Access Token should fix your issues.
### Push to protected branches
If your repository uses [protected branches](https://help.github.com/en/github/administering-a-repository/configuring-protected-branches) you have to do the following changes to your Workflow for the Action to work properly.
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@v4
with:
commit_message: Apply php-cs-fixer changes
push_options: --force
```
In addition, you have to create a new [Personal Access Token (PAT)](https://github.com/settings/tokens/new),
store the token as a secret in your repository and pass the new token to the [`actions/checkout`](https://github.com/actions/checkout#usage) Action step.
```yaml
- uses: actions/checkout@v2
with:
token: ${{ secrets.PAT }}
```
You can learn more about Personal Access Token in the [GitHub documentation](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token).
Note: If you're working in an organisation and you don't want to create the PAT from your personal account, we recommend using a bot-account for such tokens.
### No new workflows are triggered by the commit of this action
This is due to limitations set up by GitHub, [commits of this Action do not trigger new Workflow runs](#commits-of-this-action-do-not-trigger-new-workflow-runs).
## Running the tests
The package has tests written in [bats](https://github.com/bats-core/bats-core). You can run them with the following command.
```shell
npm run test
```
## Versioning
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@v4` 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).)
## License
This project is licensed under the MIT License - see the [LICENSE](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/LICENSE) file for details.

62
action.yml Normal file
View File

@@ -0,0 +1,62 @@
name: Git Auto Commit
description: 'Automatically commits files which have been changed during the workflow run and push changes back to remote repository.'
author: Stefan Zweifel <hello@stefanzweifel.io>
inputs:
commit_message:
description: Commit message
required: false
default: Apply automatic changes
branch:
description: Git branch name, where changes should be pushed too. Required if Action is used on the `pull_request` event
required: false
default: ${{ github.head_ref }}
commit_options:
description: Commit options (eg. --no-verify)
required: false
default: ''
file_pattern:
description: File pattern used for `git add`. For example `src/\*.js`
required: false
default: '.'
repository:
description: Local file path to the git repository. Defaults to the current directory (`.`)
required: false
default: '.'
commit_user_name:
description: Name used for the commit user
required: false
default: GitHub Actions
commit_user_email:
description: Email address used for the commit user
required: false
default: actions@github.com
commit_author:
description: Value used for the commit author. Defaults to the username of whoever triggered this workflow run.
required: false
default: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
tagging_message:
description: Message used to create a new git tag with the commit. Keep this empty, if no tag should be created.
required: false
default: ''
push_options:
description: Push options (eg. --force)
required: false
default: ''
skip_dirty_check:
description: Skip the check if the git repository is dirty and always try to create a commit.
required: false
default: false
outputs:
changes_detected:
description: Value is "true", if the repository was dirty and file changes have been detected. Value is "false", if no changes have been detected.
runs:
using: 'node12'
main: 'index.js'
branding:
icon: 'git-commit'
color: orange

View File

@@ -1,10 +1,108 @@
#!/bin/sh
#!/bin/bash
set -eu
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Actions"
_main() {
_switch_to_repository
git add -A
git status
git commit -m "$COMMIT_MESSAGE" --author="$COMMIT_AUTHOR_NAME <$COMMIT_AUTHOR_EMAIL>" || echo "No changes found. Nothing to commit."
git push -u origin HEAD
if _git_is_dirty || "$INPUT_SKIP_DIRTY_CHECK"; then
echo "::set-output name=changes_detected::true";
_switch_to_branch
_add_files
_local_commit
_tag_commit
_push_to_github
else
echo "::set-output name=changes_detected::false";
echo "Working tree clean. Nothing to commit.";
fi
}
_switch_to_repository() {
echo "INPUT_REPOSITORY value: $INPUT_REPOSITORY";
cd "$INPUT_REPOSITORY";
}
_git_is_dirty() {
# shellcheck disable=SC2086
[ -n "$(git status -s -- $INPUT_FILE_PATTERN)" ]
}
_switch_to_branch() {
echo "INPUT_BRANCH value: $INPUT_BRANCH";
# Fetch remote to make sure that repo can be switched to the right branch.
git fetch;
# Switch to branch from current Workflow run
git checkout "$INPUT_BRANCH" --;
}
_add_files() {
echo "INPUT_FILE_PATTERN: ${INPUT_FILE_PATTERN}";
# shellcheck disable=SC2086
git add ${INPUT_FILE_PATTERN};
}
_local_commit() {
echo "INPUT_COMMIT_OPTIONS: ${INPUT_COMMIT_OPTIONS}";
echo "::debug::Apply commit options ${INPUT_COMMIT_OPTIONS}";
# shellcheck disable=SC2206
INPUT_COMMIT_OPTIONS_ARRAY=( $INPUT_COMMIT_OPTIONS );
git -c user.name="$INPUT_COMMIT_USER_NAME" -c user.email="$INPUT_COMMIT_USER_EMAIL" \
commit -m "$INPUT_COMMIT_MESSAGE" \
--author="$INPUT_COMMIT_AUTHOR" \
${INPUT_COMMIT_OPTIONS:+"${INPUT_COMMIT_OPTIONS_ARRAY[@]}"};
}
_tag_commit() {
echo "INPUT_TAGGING_MESSAGE: ${INPUT_TAGGING_MESSAGE}"
if [ -n "$INPUT_TAGGING_MESSAGE" ]
then
echo "::debug::Create tag $INPUT_TAGGING_MESSAGE";
git -c user.name="$INPUT_COMMIT_USER_NAME" -c user.email="$INPUT_COMMIT_USER_EMAIL" tag -a "$INPUT_TAGGING_MESSAGE" -m "$INPUT_TAGGING_MESSAGE";
else
echo "No tagging message supplied. No tag will be added.";
fi
}
_push_to_github() {
echo "INPUT_PUSH_OPTIONS: ${INPUT_PUSH_OPTIONS}";
echo "::debug::Apply push options ${INPUT_PUSH_OPTIONS}";
# shellcheck disable=SC2206
INPUT_PUSH_OPTIONS_ARRAY=( $INPUT_PUSH_OPTIONS );
if [ -z "$INPUT_BRANCH" ]
then
# Only add `--tags` option, if `$INPUT_TAGGING_MESSAGE` is set
if [ -n "$INPUT_TAGGING_MESSAGE" ]
then
echo "::debug::git push origin --tags";
git push origin --tags ${INPUT_PUSH_OPTIONS:+"${INPUT_PUSH_OPTIONS_ARRAY[@]}"};
else
echo "::debug::git push origin";
git push origin ${INPUT_PUSH_OPTIONS:+"${INPUT_PUSH_OPTIONS_ARRAY[@]}"};
fi
else
echo "::debug::Push commit to remote branch $INPUT_BRANCH";
git push --set-upstream origin "HEAD:$INPUT_BRANCH" --tags ${INPUT_PUSH_OPTIONS:+"${INPUT_PUSH_OPTIONS_ARRAY[@]}"};
fi
}
_main

34
index.js Normal file
View File

@@ -0,0 +1,34 @@
/**
* Most of this code has been copied from the following GitHub Action
* to make it simpler or not necessary to install a lot of
* JavaScript packages to execute a shell script.
*
* https://github.com/ad-m/github-push-action/blob/fe38f0a751bf9149f0270cc1fe20bf9156854365/start.js
*/
const spawn = require('child_process').spawn;
const path = require("path");
const exec = (cmd, args=[]) => new Promise((resolve, reject) => {
console.log(`Started: ${cmd} ${args.join(" ")}`)
const app = spawn(cmd, args, { stdio: 'inherit' });
app.on('close', code => {
if(code !== 0){
err = new Error(`Invalid status code: ${code}`);
err.code = code;
return reject(err);
};
return resolve(code);
});
app.on('error', reject);
});
const main = async () => {
await exec('bash', [path.join(__dirname, './entrypoint.sh')]);
};
main().catch(err => {
console.error(err);
console.error(err.stack);
process.exit(err.code || -1);
})

8
package.json Normal file
View File

@@ -0,0 +1,8 @@
{
"devDependencies": {
"bats": "^1.1.0"
},
"scripts": {
"test": "rm -rf tests/tmpstubs && rm -rf tests/shellmock.* && bats tests"
}
}

View File

@@ -0,0 +1,439 @@
#!/usr/bin/env bats
setup() {
. shellmock
# Build World
export test_repository="${BATS_TEST_DIRNAME}/test_repo"
rm -rf "${test_repository}"
mkdir "${test_repository}"
touch "${test_repository}"/{a,b,c}.txt
cd "${test_repository}"
git init --quiet
git add . > /dev/null 2>&1
if [[ -z $(git config user.name) ]]; then
git config --global user.email "test@github.com"
git config --global user.name "Test Suite"
fi
git commit --quiet -m "Init Repo"
# Set default INPUT variables
export INPUT_REPOSITORY="${BATS_TEST_DIRNAME}/test_repo"
export INPUT_COMMIT_MESSAGE="Commit Message"
export INPUT_BRANCH="master"
export INPUT_COMMIT_OPTIONS=""
export INPUT_FILE_PATTERN="."
export INPUT_COMMIT_USER_NAME="Test Suite"
export INPUT_COMMIT_USER_EMAIL="test@github.com"
export INPUT_COMMIT_AUTHOR="Test Suite <test@users.noreply.github.com>"
export INPUT_TAGGING_MESSAGE=""
export INPUT_PUSH_OPTIONS=""
export INPUT_SKIP_DIRTY_CHECK=false
skipIfNot "$BATS_TEST_DESCRIPTION"
if [ -z "$TEST_FUNCTION" ]; then
shellmock_clean
fi
}
teardown() {
if [ -z "$TEST_FUNCTION" ]; then
shellmock_clean
fi
rm -rf "${test_repository}"
}
main() {
bash "${BATS_TEST_DIRNAME}"/../entrypoint.sh
}
@test "clean-repo-prints-nothing-to-commit-message" {
run main
[ "$status" -eq 0 ]
[ "${lines[0]}" = "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}" ]
[ "${lines[1]}" = "::set-output name=changes_detected::false" ]
[ "${lines[2]}" = "Working tree clean. Nothing to commit." ]
}
@test "commit-changed-files-and-push-to-remote" {
touch "${test_repository}"/new-file-{1,2,3}.txt
shellmock_expect git --type partial --output " M new-file-1.txt M new-file-2.txt M new-file-3.txt" --match "status"
shellmock_expect git --type exact --match "fetch"
shellmock_expect git --type exact --match "checkout master --"
shellmock_expect git --type partial --match "add ."
shellmock_expect git --type partial --match '-c'
shellmock_expect git --type partial --match 'push --set-upstream origin'
run main
echo "$output"
# Success Exit Code
[ "$status" = 0 ]
[ "${lines[0]}" = "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}" ]
[ "${lines[1]}" = "::set-output name=changes_detected::true" ]
[ "${lines[2]}" = "INPUT_BRANCH value: master" ]
[ "${lines[3]}" = "INPUT_FILE_PATTERN: ." ]
[ "${lines[4]}" = "INPUT_COMMIT_OPTIONS: " ]
[ "${lines[5]}" = "::debug::Apply commit options " ]
[ "${lines[6]}" = "INPUT_TAGGING_MESSAGE: " ]
[ "${lines[7]}" = "No tagging message supplied. No tag will be added." ]
[ "${lines[8]}" = "INPUT_PUSH_OPTIONS: " ]
[ "${lines[9]}" = "::debug::Apply push options " ]
[ "${lines[10]}" = "::debug::Push commit to remote branch master" ]
shellmock_verify
[ "${capture[0]}" = "git-stub status -s -- ." ]
[ "${capture[1]}" = "git-stub fetch" ]
[ "${capture[2]}" = "git-stub checkout master --" ]
[ "${capture[3]}" = "git-stub add ." ]
[ "${capture[4]}" = "git-stub -c user.name=Test Suite -c user.email=test@github.com commit -m Commit Message --author=Test Suite <test@users.noreply.github.com>" ]
[ "${capture[5]}" = "git-stub push --set-upstream origin HEAD:master --tags" ]
}
@test "skip-dirty-on-clean-repo-failure" {
INPUT_SKIP_DIRTY_CHECK=true
shellmock_expect git --type exact --match "status -s ."
shellmock_expect git --type exact --match "fetch"
shellmock_expect git --type exact --match "checkout master --"
shellmock_expect git --type exact --match "add ."
shellmock_expect git --type partial --match '-c'
shellmock_expect git --type partial --match 'push origin'
run main
echo "$output"
shellmock_verify
[ "${capture[0]}" = "git-stub status -s -- ." ]
[ "${capture[1]}" = "git-stub fetch" ]
[ "${capture[2]}" = "git-stub checkout master --" ]
[ "${capture[3]}" = "git-stub add ." ]
[ "${capture[4]}" = "git-stub -c user.name=Test Suite -c user.email=test@github.com commit -m Commit Message --author=Test Suite <test@users.noreply.github.com>" ]
[ "${capture[5]}" = "git-stub push --set-upstream origin HEAD:master --tags" ]
# Failed Exit Code
[ "$status" -ne 0 ]
[ "${lines[0]}" = "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}" ]
[ "${lines[1]}" = "::set-output name=changes_detected::true" ]
[ "${lines[2]}" = "INPUT_BRANCH value: master" ]
[ "${lines[3]}" = "INPUT_FILE_PATTERN: ." ]
[ "${lines[4]}" = "INPUT_COMMIT_OPTIONS: " ]
[ "${lines[5]}" = "::debug::Apply commit options " ]
}
@test "git-add-file-pattern-is-applied" {
INPUT_FILE_PATTERN="*.txt *.html"
touch "${test_repository}"/new-file-{1,2}.php
touch "${test_repository}"/new-file-{1,2}.html
shellmock_expect git --type partial --output " M new-file-1.html M new-file-2.html" --match "status"
shellmock_expect git --type exact --match "fetch"
shellmock_expect git --type exact --match "checkout master --"
shellmock_expect git --type partial --match "add"
shellmock_expect git --type partial --match '-c'
shellmock_expect git --type partial --match 'push --set-upstream origin'
run main
echo "$output"
# Success Exit Code
[ "$status" = 0 ]
[ "${lines[3]}" = "INPUT_FILE_PATTERN: *.txt *.html" ]
[ "${lines[10]}" = "::debug::Push commit to remote branch master" ]
shellmock_verify
[ "${capture[0]}" = "git-stub status -s -- a.txt b.txt c.txt new-file-1.html new-file-2.html" ]
[ "${capture[1]}" = "git-stub fetch" ]
[ "${capture[2]}" = "git-stub checkout master --" ]
[ "${capture[3]}" = "git-stub add a.txt b.txt c.txt new-file-1.html new-file-2.html" ]
[ "${capture[4]}" = "git-stub -c user.name=Test Suite -c user.email=test@github.com commit -m Commit Message --author=Test Suite <test@users.noreply.github.com>" ]
[ "${capture[5]}" = "git-stub push --set-upstream origin HEAD:master --tags" ]
}
@test "git-commit-options-are-applied" {
INPUT_COMMIT_OPTIONS="--no-verify --signoff"
touch "${test_repository}"/new-file-{1,2}.txt
shellmock_expect git --type partial --output " M new-file-1.txt M new-file-2.txt" --match "status"
shellmock_expect git --type exact --match "fetch"
shellmock_expect git --type exact --match "checkout master --"
shellmock_expect git --type partial --match "add"
shellmock_expect git --type partial --match '-c'
shellmock_expect git --type partial --match 'push --set-upstream origin'
run main
echo "$output"
# Success Exit Code
[ "$status" = 0 ]
[ "${lines[4]}" = "INPUT_COMMIT_OPTIONS: --no-verify --signoff" ]
[ "${lines[10]}" = "::debug::Push commit to remote branch master" ]
shellmock_verify
[ "${capture[0]}" = "git-stub status -s -- ." ]
[ "${capture[1]}" = "git-stub fetch" ]
[ "${capture[2]}" = "git-stub checkout master --" ]
[ "${capture[3]}" = "git-stub add ." ]
[ "${capture[4]}" = "git-stub -c user.name=Test Suite -c user.email=test@github.com commit -m Commit Message --author=Test Suite <test@users.noreply.github.com> --no-verify --signoff" ]
[ "${capture[5]}" = "git-stub push --set-upstream origin HEAD:master --tags" ]
}
@test "commit-user-and-author-settings-are-applied" {
INPUT_COMMIT_USER_NAME="A Single Test"
INPUT_COMMIT_USER_EMAIL="single-test@github.com"
INPUT_COMMIT_AUTHOR="A Single Test <single@users.noreply.github.com>"
touch "${test_repository}"/new-file-{1,2}.txt
shellmock_expect git --type partial --output " M new-file-1.txt M new-file-2.txt" --match "status"
shellmock_expect git --type exact --match "fetch"
shellmock_expect git --type exact --match "checkout master --"
shellmock_expect git --type partial --match "add"
shellmock_expect git --type partial --match '-c'
shellmock_expect git --type partial --match 'push --set-upstream origin'
run main
echo "$output"
# Success Exit Code
[ "$status" = 0 ]
[ "${lines[10]}" = "::debug::Push commit to remote branch master" ]
shellmock_verify
[ "${capture[0]}" = "git-stub status -s -- ." ]
[ "${capture[1]}" = "git-stub fetch" ]
[ "${capture[2]}" = "git-stub checkout master --" ]
[ "${capture[3]}" = "git-stub add ." ]
[ "${capture[4]}" = "git-stub -c user.name=A Single Test -c user.email=single-test@github.com commit -m Commit Message --author=A Single Test <single@users.noreply.github.com>" ]
[ "${capture[5]}" = "git-stub push --set-upstream origin HEAD:master --tags" ]
}
@test "can-create-tag" {
INPUT_TAGGING_MESSAGE="v1.0.0"
touch "${test_repository}"/new-file-{1,2,3}.txt
shellmock_expect git --type partial --output " M new-file-1.txt M new-file-2.txt M new-file-3.txt" --match "status"
shellmock_expect git --type exact --match "fetch"
shellmock_expect git --type exact --match "checkout master --"
shellmock_expect git --type partial --match "add ."
shellmock_expect git --type partial --match '-c'
shellmock_expect git --type partial --match 'push --set-upstream origin'
run main
echo "$output"
# Success Exit Code
[ "$status" = 0 ]
[ "${lines[6]}" = "INPUT_TAGGING_MESSAGE: v1.0.0" ]
[ "${lines[7]}" = "::debug::Create tag v1.0.0" ]
[ "${lines[10]}" = "::debug::Push commit to remote branch master" ]
shellmock_verify
[ "${capture[0]}" = "git-stub status -s -- ." ]
[ "${capture[1]}" = "git-stub fetch" ]
[ "${capture[2]}" = "git-stub checkout master --" ]
[ "${capture[3]}" = "git-stub add ." ]
[ "${capture[4]}" = "git-stub -c user.name=Test Suite -c user.email=test@github.com commit -m Commit Message --author=Test Suite <test@users.noreply.github.com>" ]
[ "${capture[5]}" = "git-stub -c user.name=Test Suite -c user.email=test@github.com tag -a v1.0.0 -m v1.0.0" ]
[ "${capture[6]}" = "git-stub push --set-upstream origin HEAD:master --tags" ]
}
@test "git-push-options-are-applied" {
INPUT_PUSH_OPTIONS="--force"
touch "${test_repository}"/new-file-{1,2,3}.txt
shellmock_expect git --type partial --output " M new-file-1.txt M new-file-2.txt M new-file-3.txt" --match "status"
shellmock_expect git --type exact --match "fetch"
shellmock_expect git --type exact --match "checkout master --"
shellmock_expect git --type partial --match "add ."
shellmock_expect git --type partial --match '-c'
shellmock_expect git --type partial --match 'push --set-upstream origin'
run main
echo "$output"
# Success Exit Code
[ "$status" = 0 ]
[ "${lines[8]}" = "INPUT_PUSH_OPTIONS: --force" ]
[ "${lines[9]}" = "::debug::Apply push options --force" ]
[ "${lines[10]}" = "::debug::Push commit to remote branch master" ]
shellmock_verify
[ "${capture[0]}" = "git-stub status -s -- ." ]
[ "${capture[1]}" = "git-stub fetch" ]
[ "${capture[2]}" = "git-stub checkout master --" ]
[ "${capture[3]}" = "git-stub add ." ]
[ "${capture[4]}" = "git-stub -c user.name=Test Suite -c user.email=test@github.com commit -m Commit Message --author=Test Suite <test@users.noreply.github.com>" ]
[ "${capture[5]}" = "git-stub push --set-upstream origin HEAD:master --tags --force" ]
}
@test "can-checkout-different-branch" {
INPUT_BRANCH="foo"
touch "${test_repository}"/new-file-{1,2,3}.txt
shellmock_expect git --type partial --output " M new-file-1.txt M new-file-2.txt M new-file-3.txt" --match "status"
shellmock_expect git --type exact --match "fetch"
shellmock_expect git --type exact --match "checkout foo --"
shellmock_expect git --type partial --match "add ."
shellmock_expect git --type partial --match '-c'
shellmock_expect git --type partial --match 'push --set-upstream origin'
run main
echo "$output"
# Success Exit Code
[ "$status" = 0 ]
[ "${lines[0]}" = "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}" ]
[ "${lines[1]}" = "::set-output name=changes_detected::true" ]
[ "${lines[2]}" = "INPUT_BRANCH value: foo" ]
[ "${lines[3]}" = "INPUT_FILE_PATTERN: ." ]
[ "${lines[4]}" = "INPUT_COMMIT_OPTIONS: " ]
[ "${lines[5]}" = "::debug::Apply commit options " ]
[ "${lines[6]}" = "INPUT_TAGGING_MESSAGE: " ]
[ "${lines[7]}" = "No tagging message supplied. No tag will be added." ]
[ "${lines[8]}" = "INPUT_PUSH_OPTIONS: " ]
[ "${lines[9]}" = "::debug::Apply push options " ]
[ "${lines[10]}" = "::debug::Push commit to remote branch foo" ]
shellmock_verify
[ "${capture[0]}" = "git-stub status -s -- ." ]
[ "${capture[1]}" = "git-stub fetch" ]
[ "${capture[2]}" = "git-stub checkout foo --" ]
[ "${capture[3]}" = "git-stub add ." ]
[ "${capture[4]}" = "git-stub -c user.name=Test Suite -c user.email=test@github.com commit -m Commit Message --author=Test Suite <test@users.noreply.github.com>" ]
[ "${capture[5]}" = "git-stub push --set-upstream origin HEAD:foo --tags" ]
}
@test "can-work-with-empty-branch-name" {
INPUT_BRANCH=""
touch "${test_repository}"/new-file-{1,2,3}.txt
shellmock_expect git --type partial --output " M new-file-1.txt M new-file-2.txt M new-file-3.txt" --match "status"
shellmock_expect git --type exact --match "fetch"
shellmock_expect git --type exact --match "checkout --"
shellmock_expect git --type partial --match "add ."
shellmock_expect git --type partial --match '-c'
shellmock_expect git --type partial --match 'push origin'
run main
echo "$output"
# Success Exit Code
[ "$status" = 0 ]
[ "${lines[0]}" = "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}" ]
[ "${lines[1]}" = "::set-output name=changes_detected::true" ]
[ "${lines[2]}" = "INPUT_BRANCH value: " ]
[ "${lines[3]}" = "INPUT_FILE_PATTERN: ." ]
[ "${lines[4]}" = "INPUT_COMMIT_OPTIONS: " ]
[ "${lines[5]}" = "::debug::Apply commit options " ]
[ "${lines[6]}" = "INPUT_TAGGING_MESSAGE: " ]
[ "${lines[7]}" = "No tagging message supplied. No tag will be added." ]
[ "${lines[8]}" = "INPUT_PUSH_OPTIONS: " ]
[ "${lines[9]}" = "::debug::Apply push options " ]
[ "${lines[10]}" = "::debug::git push origin" ]
shellmock_verify
[ "${capture[0]}" = "git-stub status -s -- ." ]
[ "${capture[1]}" = "git-stub fetch" ]
[ "${capture[2]}" = "git-stub checkout --" ]
[ "${capture[3]}" = "git-stub add ." ]
[ "${capture[4]}" = "git-stub -c user.name=Test Suite -c user.email=test@github.com commit -m Commit Message --author=Test Suite <test@users.noreply.github.com>" ]
[ "${capture[5]}" = "git-stub push origin" ]
}
@test "can-work-with-empty-branch-name-and-tags" {
INPUT_BRANCH=""
INPUT_TAGGING_MESSAGE="v2.0.0"
touch "${test_repository}"/new-file-{1,2,3}.txt
shellmock_expect git --type partial --output " M new-file-1.txt M new-file-2.txt M new-file-3.txt" --match "status"
shellmock_expect git --type exact --match "fetch"
shellmock_expect git --type exact --match "checkout --"
shellmock_expect git --type partial --match "add ."
shellmock_expect git --type partial --match '-c'
shellmock_expect git --type partial --match 'push origin'
run main
echo "$output"
# Success Exit Code
[ "$status" = 0 ]
[ "${lines[0]}" = "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}" ]
[ "${lines[1]}" = "::set-output name=changes_detected::true" ]
[ "${lines[2]}" = "INPUT_BRANCH value: " ]
[ "${lines[3]}" = "INPUT_FILE_PATTERN: ." ]
[ "${lines[4]}" = "INPUT_COMMIT_OPTIONS: " ]
[ "${lines[5]}" = "::debug::Apply commit options " ]
[ "${lines[6]}" = "INPUT_TAGGING_MESSAGE: v2.0.0" ]
[ "${lines[7]}" = "::debug::Create tag v2.0.0" ]
[ "${lines[8]}" = "INPUT_PUSH_OPTIONS: " ]
[ "${lines[9]}" = "::debug::Apply push options " ]
[ "${lines[10]}" = "::debug::git push origin --tags" ]
shellmock_verify
[ "${capture[0]}" = "git-stub status -s -- ." ]
[ "${capture[1]}" = "git-stub fetch" ]
[ "${capture[2]}" = "git-stub checkout --" ]
[ "${capture[3]}" = "git-stub add ." ]
[ "${capture[4]}" = "git-stub -c user.name=Test Suite -c user.email=test@github.com commit -m Commit Message --author=Test Suite <test@users.noreply.github.com>" ]
[ "${capture[5]}" = "git-stub -c user.name=Test Suite -c user.email=test@github.com tag -a v2.0.0 -m v2.0.0" ]
[ "${capture[6]}" = "git-stub push origin --tags" ]
}

8
yarn.lock Normal file
View File

@@ -0,0 +1,8 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
bats@^1.1.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/bats/-/bats-1.2.1.tgz#c15aecc3eb331aedf28678880fab2be0b73eba43"
integrity sha512-2fcPDRQa/Kvh6j1IcCqsHpT5b9ObMzRzw6abC7Bg298PX8Qdh9VRkvO2WJUEhdyfjq2rLBCOAWdcv0tS4+xTUA==