diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..eca4067 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,49 @@ +name: Publish and release +on: + push: + branches: + - master + - main +jobs: + publish: + runs-on: ubuntu-latest + + permissions: + contents: write + id-token: write + + steps: + - uses: actions/checkout@v4 + - name: Read version from composer.json + id: get_version + run: | + VERSION=$(cat composer.json | jq -r '.version') + echo "version=$VERSION" >> $GITHUB_ENV + echo "::set-output name=version::$VERSION" + - name: Check if tag exists + id: check_tag + run: | + TAG_EXISTS=$(git tag -l "${{ steps.get_version.outputs.version }}") + echo "tag_exists=$TAG_EXISTS" >> $GITHUB_ENV + echo "::set-output name=tag_exists::$TAG_EXISTS" + - name: Create GitHub Tag + if: steps.check_tag.outputs.tag_exists == '' + uses: actions/github-script@v7 + with: + script: | + const tag = `${process.env.version}`; + const latestCommitSha = context.sha; + await github.rest.git.createRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: `refs/tags/${tag}`, + sha: latestCommitSha, + }); + - name: Create a Release + if: steps.check_tag.outputs.tag_exists == '' + uses: elgohr/Github-Release-Action@v5 + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag: "${{ steps.get_version.outputs.version }}" + title: "${{ steps.get_version.outputs.version }}"