diff --git a/.github/workflows/create-tag-for-version.yml b/.github/workflows/create-tag-for-version.yml new file mode 100644 index 00000000..e20cb5d3 --- /dev/null +++ b/.github/workflows/create-tag-for-version.yml @@ -0,0 +1,55 @@ +# When Dashy's version in package.json is updated +# this workflow will create a new tag +# And then publish it to the repository +name: ๐Ÿ—๏ธ Tag on Version Change + +on: + workflow_dispatch: + push: + branches: + - master + paths: + - 'package.json' + +jobs: + tag-if-version-updated: + runs-on: ubuntu-latest + + steps: + - name: Check Out Repository ๐Ÿ›Ž๏ธ + uses: actions/checkout@v2 + + - name: Set Up Python ๐Ÿ + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Extract Version from package.json ๐Ÿ”ข + id: package_version + run: | + import json + with open('package.json', 'r') as f: + version = json.load(f)['version'] + print(f"::set-output name=VERSION::{version}") + shell: python + + - name: Get Latest Tag ๐Ÿท๏ธ + id: latest_tag + run: | + git fetch --tags + latest_tag=$(git describe --tags `git rev-list --tags --max-count=1` 2>/dev/null) + echo "::set-output name=TAG::${latest_tag:-0}" + + - name: Create and Push Tag โคด๏ธ + if: steps.package_version.outputs.VERSION != steps.latest_tag.outputs.TAG && steps.latest_tag.outputs.TAG != '0' + run: | + git config --local user.email "liss-bot@d0h.co" + git config --local user.name "Liss-Bot" + git tag -a ${{ steps.package_version.outputs.VERSION }} -m "Release v${{ steps.package_version.outputs.VERSION }}" + git push origin ${{ steps.package_version.outputs.VERSION }} + env: + GIT_AUTHOR_NAME: Liss-Bot + GIT_AUTHOR_EMAIL: liss-bot@d0h.co + GIT_COMMITTER_NAME: Liss-Bot + GIT_COMMITTER_EMAIL: liss-bot@d0h.co + GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}