Skip to content

automatic releases

automatic releases #16

Workflow file for this run

name: CI-CD
on:
pull_request:
branches:
- main
types:
- closed
workflow_dispatch:
env:
BINARY_NAME: hotsave
ARTIFACT_NAME: hotsave-artifact
LINUX_TARGET_x86_64: x86_64-unknown-linux-gnu
jobs:
build:
name: Build cli application
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup tooling
run: |
sudo apt-get install -y libxi-dev libxtst-dev
rustup update stable
rustup default stable
cargo install cargo-edit
- name: Install GitVersion
uses: gittools/actions/gitversion/[email protected]
with:
versionSpec: "5.x"
- name: Determine version
uses: gittools/actions/gitversion/[email protected]
with:
useConfigFile: true
configFilePath: GitVersion.yml
- name: Store version
run: |
mkdir dist
echo "$GitVersion_FullSemVer" > ./dist/version.txt
- name: Build Linux release
run: |
cargo set-version $GitVersion_FullSemVer
cargo build --locked --release --bin ${{ env.BINARY_NAME }} --target=${{ env.LINUX_TARGET_x86_64 }}
- name: Create artifact
run: |
tar -C ./target/${{ env.LINUX_TARGET_x86_64 }}/release -zcvf ./dist/${{ env.LINUX_TARGET_x86_64 }}.tar.gz ./${{ env.BINARY_NAME }}
- name: Publish artifact
if: github.event_name == 'push'
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_NAME }}
path: dist
publish:
if: github.event_name == 'push'
name: Create release
runs-on: ubuntu-latest
needs: build
steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{ env.ARTIFACT_NAME }}
path: dist
- name: Load version
run: echo "VERSION=$(cat ./dist/version.txt)" >> $GITHUB_ENV
- name: Publish GitHub release
run: gh release create --repo $GITHUB_REPOSITORY --draft --title "New release" --notes "This is a new automatically generated release" ${{ env.VERSION }} ./dist/*.tar.gz
env:
GH_TOKEN: ${{ secrets.RELEASE_PAT }}