diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml new file mode 100644 index 0000000..a379d3c --- /dev/null +++ b/.github/workflows/releases.yml @@ -0,0 +1,74 @@ +name: Releases +on: + push: + branches: + - rolling + +concurrency: + group: "main-branch" + +jobs: + changelog: + if: github.repository == 'neon-mmd/websurfx ' + runs-on: ubuntu-latest + + steps: + # Create a temporary, uniquely named branch to push release info to + - name: create temporary branch + uses: peterjgrainger/action-create-branch@v2.3.0 + id: create-branch + with: + branch: "release-from-${{ github.sha }}" + sha: "${{ github.sha }}" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # check out the repository afterwards + - uses: actions/checkout@v3 + + # fetch branches and switch to the temporary branch + - name: switch to new branch + run: git fetch --all && git checkout --track origin/release-from-${{ github.sha }} + + # update app config with version + - name: get-npm-version + id: package-version + uses: martinbeentjes/npm-get-version-action@master + - name: update app config + run: sed -i 's/0.0.0/${{ steps.package-version.outputs.current-version}}/g' config/app.json + + # create release info and push it upstream + - name: conventional Changelog Action + id: changelog + uses: TriPSs/conventional-changelog-action@v3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + version-file: "./package.json,./package-lock.json,./config/app.json" + git-branch: "release-from-${{ github.sha }}" + skip-on-empty: false + skip-git-pull: true + + # create PR using GitHub CLI + - name: create PR with release info + id: create-pr + run: gh pr create --base main --head release-from-${{ github.sha }} --title 'Merge new release into main' --body 'Created by Github action' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # merge PR using GitHub CLI + - name: merge PR with release info + id: merge-pr + run: gh pr merge --admin --merge --subject 'Merge release info' --delete-branch + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # release info is now in main so we can continue as before + - name: create release with last commit + uses: actions/create-release@v1 + if: steps.changelog.outputs.skipped == 'false' + env: + GITHUB_TOKEN: ${{ secrets.CHANGELOG_RELEASE }} + with: + tag_name: ${{ steps.changelog.outputs.tag }} + release_name: ${{ steps.changelog.outputs.tag }} + body: ${{ steps.changelog.outputs.clean_changelog }}