name: Releases on: push: branches: - "rolling" concurrency: group: "rolling-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 current rust app version from its Cargo.toml. id: foo uses: dante-signal31/rust-app-version@v1.2.0 with: cargo_toml_folder: rust_app_folder/ - name: Use the version to update the Cargo.toml version. shell: bash run: sed -i "3s/version = \"[0-9]*.[0-9]*.[0-9]*\"/version = \"${{ steps.foo.outputs.app_version }}\"/g" Cargo.toml # 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: "./Cargo.toml" 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 rolling' --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.GITHUB_TOKEN }} with: tag_name: ${{ steps.changelog.outputs.tag }} release_name: ${{ steps.changelog.outputs.tag }} body: ${{ steps.changelog.outputs.clean_changelog }}