0
0
mirror of https://github.com/neon-mmd/websurfx.git synced 2024-11-22 05:58:21 -05:00
websurfx/.github/workflows/releases.yml

79 lines
2.6 KiB
YAML

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 }}