From 428060111864e1580a4357a4e67a8a09e0d3737d Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Thu, 12 Dec 2019 20:41:00 +0100 Subject: [PATCH 1/9] Create lib.sh and update entrypoint.sh --- entrypoint.sh | 44 +++++++++----------------------------------- lib.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 35 deletions(-) create mode 100644 lib.sh diff --git a/entrypoint.sh b/entrypoint.sh index a84b2f9..b4db5d8 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,48 +1,22 @@ -#!/bin/sh +#!/bin/bash set -eu -# Set up .netrc file with GitHub credentials -git_setup ( ) { - cat <<- EOF > $HOME/.netrc - machine github.com - login $GITHUB_ACTOR - password $GITHUB_TOKEN +source /lib.sh - machine api.github.com - login $GITHUB_ACTOR - password $GITHUB_TOKEN -EOF - chmod 600 $HOME/.netrc +_switch_to_repository - git config --global user.email "actions@github.com" - git config --global user.name "GitHub Actions" -} +if _git_is_dirty; then -echo "INPUT_REPOSITORY value: $INPUT_REPOSITORY"; + _setup_git -cd $INPUT_REPOSITORY + _switch_to_branch -# This section only runs if there have been file changes -echo "Checking for uncommitted changes in the git working tree." -if [[ -n "$(git status -s)" ]] -then - git_setup + _add_files - echo "INPUT_BRANCH value: $INPUT_BRANCH"; + _local_commit - # Switch to branch from current Workflow run - git checkout $INPUT_BRANCH - - echo "INPUT_FILE_PATTERN: ${INPUT_FILE_PATTERN}" - - git add "${INPUT_FILE_PATTERN}" - - echo "INPUT_COMMIT_OPTIONS: ${INPUT_COMMIT_OPTIONS}" - - git commit -m "$INPUT_COMMIT_MESSAGE" --author="$GITHUB_ACTOR <$GITHUB_ACTOR@users.noreply.github.com>" ${INPUT_COMMIT_OPTIONS:+"$INPUT_COMMIT_OPTIONS"} - - git push --set-upstream origin "HEAD:$INPUT_BRANCH" + _push_to_github else echo "Working tree clean. Nothing to commit." fi diff --git a/lib.sh b/lib.sh new file mode 100644 index 0000000..fefe6ae --- /dev/null +++ b/lib.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +_switch_to_repository() { + echo "INPUT_REPOSITORY value: $INPUT_REPOSITORY"; + cd $INPUT_REPOSITORY +} + +_git_is_dirty() { + [[ -n "$(git status -s)" ]] +} + +# Set up .netrc file with GitHub credentials +_setup_git ( ) { + cat <<- EOF > $HOME/.netrc + machine github.com + login $GITHUB_ACTOR + password $GITHUB_TOKEN + + machine api.github.com + login $GITHUB_ACTOR + password $GITHUB_TOKEN +EOF + chmod 600 $HOME/.netrc + + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" +} + +_switch_to_branch() { + echo "INPUT_BRANCH value: $INPUT_BRANCH"; + + # Switch to branch from current Workflow run + git checkout $INPUT_BRANCH +} + +_add_files() { + echo "INPUT_FILE_PATTERN: ${INPUT_FILE_PATTERN}" + git add "${INPUT_FILE_PATTERN}" +} + +_local_commit() { + echo "INPUT_COMMIT_OPTIONS: ${INPUT_COMMIT_OPTIONS}" + git commit -m "$INPUT_COMMIT_MESSAGE" --author="$GITHUB_ACTOR <$GITHUB_ACTOR@users.noreply.github.com>" ${INPUT_COMMIT_OPTIONS:+"$INPUT_COMMIT_OPTIONS"} +} + +_push_to_github() { + git push --set-upstream origin "HEAD:$INPUT_BRANCH" +} From 3273c330f8b96e95bc05a564382f4118304dfa93 Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Thu, 12 Dec 2019 20:42:47 +0100 Subject: [PATCH 2/9] Fix path --- entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entrypoint.sh b/entrypoint.sh index b4db5d8..f22c8f6 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -2,7 +2,7 @@ set -eu -source /lib.sh +source lib.sh _switch_to_repository From 68035425ff551b785b40bea4946f54aa51e604fc Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Thu, 12 Dec 2019 20:44:41 +0100 Subject: [PATCH 3/9] Update Path --- entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entrypoint.sh b/entrypoint.sh index f22c8f6..192bbb2 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -2,7 +2,7 @@ set -eu -source lib.sh +source ./lib.sh _switch_to_repository From 8bb153baaa16b319a786c0407d38e7e626f83213 Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Thu, 12 Dec 2019 20:45:42 +0100 Subject: [PATCH 4/9] Update Dockerfile --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index d060c6d..dc99344 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,7 @@ LABEL "maintainer"="Stefan Zweifel " RUN apk add git-lfs +COPY lib.sh /lib.sh COPY entrypoint.sh /entrypoint.sh ENTRYPOINT ["sh", "/entrypoint.sh"] From 7c85ce3dee290d667b2db86ae6a3445dee213399 Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Thu, 12 Dec 2019 20:46:16 +0100 Subject: [PATCH 5/9] Update path to lib.sh --- entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entrypoint.sh b/entrypoint.sh index 192bbb2..b4db5d8 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -2,7 +2,7 @@ set -eu -source ./lib.sh +source /lib.sh _switch_to_repository From c62363dd625ae9d17900dd1b6d02e43642185e1a Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Thu, 12 Dec 2019 21:05:01 +0100 Subject: [PATCH 6/9] Add Workflow to run Shellcheck --- .github/workflows/shellcheck.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/shellcheck.yml diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml new file mode 100644 index 0000000..3b8adaf --- /dev/null +++ b/.github/workflows/shellcheck.yml @@ -0,0 +1,15 @@ +name: Shellcheck + +on: push + +jobs: + shellcheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + + - name: Install shellcheck + run: apt-get install shellcheck + + - name: Run shellcheck + run: shellcheck *.sh From 560cf49647486ec7135859d113972294a98cde4b Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Thu, 12 Dec 2019 21:10:29 +0100 Subject: [PATCH 7/9] Update Workflow --- .github/workflows/shellcheck.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index 3b8adaf..b9d61aa 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -8,8 +8,5 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Install shellcheck - run: apt-get install shellcheck - - - name: Run shellcheck - run: shellcheck *.sh + - name: shellcheck + uses: ludeeus/action-shellcheck@0.1.0 From 3f6e990b1e852ee9387db6cc3b161305303b141f Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Thu, 12 Dec 2019 21:14:38 +0100 Subject: [PATCH 8/9] Update lib.sh --- lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib.sh b/lib.sh index fefe6ae..626711e 100644 --- a/lib.sh +++ b/lib.sh @@ -2,7 +2,7 @@ _switch_to_repository() { echo "INPUT_REPOSITORY value: $INPUT_REPOSITORY"; - cd $INPUT_REPOSITORY + 'cd $INPUT_REPOSITORY' } _git_is_dirty() { From dcfe3115ff1d80321af096f8d9873e7fd7d494c0 Mon Sep 17 00:00:00 2001 From: Stefan Zweifel Date: Thu, 12 Dec 2019 21:40:03 +0100 Subject: [PATCH 9/9] WIP --- lib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib.sh b/lib.sh index 626711e..fefe6ae 100644 --- a/lib.sh +++ b/lib.sh @@ -2,7 +2,7 @@ _switch_to_repository() { echo "INPUT_REPOSITORY value: $INPUT_REPOSITORY"; - 'cd $INPUT_REPOSITORY' + cd $INPUT_REPOSITORY } _git_is_dirty() {