From 9ba947f5450de49c7ab2c34a67a7c7a22d3ab4ec Mon Sep 17 00:00:00 2001 From: Shohei Ueda <30958501+peaceiris@users.noreply.github.com> Date: Sat, 18 Jan 2020 12:55:18 +0900 Subject: [PATCH] feat: Add tagName and tagMessage options (#78) * feat: Add tagName and tagMessage options * feat: Add print_info for tag options * feat: Add tagOverwrite option * docs: Add new section about Git tag options Close #76 --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++ action.yml | 10 +++++++++ entrypoint.sh | 18 ++++++++++++++++ 3 files changed, 86 insertions(+) diff --git a/README.md b/README.md index 477ae34..742503a 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ Do you want to skip the docker build step? OK, the script mode is available. - [⭐️ Force orphan](#%EF%B8%8F-force-orphan) - [⭐️ Set Git username and email](#%EF%B8%8F-set-git-username-and-email) - [⭐️ Set custom commit message](#%EF%B8%8F-set-custom-commit-message) + - [⭐️ Create Git tag](#%EF%B8%8F-create-git-tag) - [⭐️ Script mode](#%EF%B8%8F-script-mode) - [Tips and FAQ](#tips-and-faq) - [⭐️ Use the latest and specific release](#%EF%B8%8F-use-the-latest-and-specific-release) @@ -347,6 +348,63 @@ When we create a commit with a message `docs: Update some post`, a deployment co commitMessage: ${{ github.event.head_commit.message }} ``` +### ⭐️ Create Git tag + +Here is an example workflow. + +```yaml +name: github pages + +on: + push: + branches: + - master + tags: + - 'v*.*.*' + +jobs: + build-deploy: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + + - name: Some build + + - name: Prepare tag + id: prepare_tag + if: startsWith(github.ref, 'refs/tags/') + run: | + TAG_NAME="${GITHUB_REF##refs/tags/}" + echo "::set-output name=tag_name::${TAG_NAME}" + echo "::set-output name=deploy_tag_name::deploy-${TAG_NAME}" + + - name: Deploy + uses: peaceiris/actions-gh-pages@v2 + env: + ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }} + PUBLISH_BRANCH: gh-pages + PUBLISH_DIR: ./public + with: + tagName: ${{ steps.prepare_tag.outputs.deploy_tag_name }} + tagMessage: 'Deployment ${{ steps.prepare_tag.outputs.tag_name }}' +``` + +Commands on a local machine. + +```console +$ # On the master branch +$ git tag -a "v1.2.3" -m "Release v1.2.3" +$ git push origin "v1.2.3" + +$ # After deployment +$ git fetch origin +$ git tag +deploy-v1.2.3 # Tag on the gh-pages branch +v1.2.3 # Tag on the master branch +``` + +We can set `tagOverwrite` option to `true` for overwriting a tag. + ### ⭐️ Script mode From `v2.5.0`, we can run this action as a shell script. diff --git a/action.yml b/action.yml index b569493..2e04b65 100644 --- a/action.yml +++ b/action.yml @@ -29,3 +29,13 @@ inputs: commitMessage: description: 'Set custom commit message' required: false + tagName: + description: 'Set tag name' + required: false + tagMessage: + description: 'Set tag message' + required: false + tagOverwrite: + description: 'Enable overwriting tag' + required: false + default: false diff --git a/entrypoint.sh b/entrypoint.sh index 4efb3ad..b2b4c70 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -142,4 +142,22 @@ else git push origin "${remote_branch}" fi +if [[ -n "${INPUT_TAGNAME}" ]]; then + print_info "Tag name: ${INPUT_TAGNAME}" + print_info "Tag message: ${INPUT_TAGMESSAGE}" + print_info "Tag overwrite: ${INPUT_TAGOVERWRITE}" + if [[ -n "${INPUT_TAGMESSAGE}" ]]; then + GIT_TAG_MESSAGE="${INPUT_TAGMESSAGE}" + else + GIT_TAG_MESSAGE="Deployment ${INPUT_TAGNAME}" + fi + if [[ "${INPUT_TAGOVERWRITE}" == "true" ]]; then + GIT_TAG_OPTION="--force" + else + GIT_TAG_OPTION="" + fi + git tag "${GIT_TAG_OPTION}" -a "${INPUT_TAGNAME}" -m "${GIT_TAG_MESSAGE}" + git push "${GIT_TAG_OPTION}" origin "${INPUT_TAGNAME}" +fi + print_info "${GITHUB_SHA} was successfully deployed"