|
name: Releases |
|
on: |
|
push: |
|
branches: |
|
- "rolling" |
|
|
|
concurrency: |
|
group: "rolling-branch" |
|
|
|
jobs: |
|
changelog: |
|
if: github.repository == 'neon-mmd/websurfx' |
|
runs-on: ubuntu-latest |
|
|
|
steps: |
|
|
|
- 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 }} |
|
|
|
|
|
- uses: actions/checkout@v3 |
|
|
|
|
|
- name: switch to new branch |
|
run: git fetch --all && git checkout --track origin/release-from-${{ github.sha }} |
|
|
|
|
|
- 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 |
|
|
|
|
|
- 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 |
|
|
|
|
|
- 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 }} |
|
|
|
|
|
- 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 }} |
|
|
|
|
|
- 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 }} |
|
|