name: Build Release files
on:
release:
types: [published]
jobs:
release_assets_linux:
name: Release Linux Assets
runs-on: ${{ matrix.platform }}
strategy:
matrix:
platform: [ubuntu-latest]
rust:
- stable
target:
- x86_64-unknown-linux-gnu
- aarch64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- aarch64-unknown-linux-musl
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install ${{ matrix.rust }} toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: Install cross release
run: cargo install cross
- name: Build artem release
continue-on-error: false
run: cross build --locked --release --verbose --target=${{ matrix.target }}
- name: Extract Version Number
shell: bash
run: echo "PROJECT_VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)" >> $GITHUB_ENV
- name: Copy completion files and man page
shell: bash
run: |
#create a completions and doc folder
mkdir -p deployment/completions
mkdir -p deployment/doc
#copy completion files and man page
cp -u target/*/release/build/artem-*/out/* deployment/completions/
# replace the input file completions, since it won't work after inputting the paths otherwise
sed -i "s/*::/*:/" deployment/completions/_artem
#move man page and CHANGELOG/README to doc folder
mv deployment/completions/artem.1 deployment/doc/
mv CHANGELOG.md deployment/doc/
mv README.md deployment/
#copy binary file
cp -u target/*/release/artem deployment
- name: Compress release files
shell: bash
run: |
#compress deployment directory
cd deployment/
tar -czvf ../artem-v$PROJECT_VERSION-${{ matrix.target }}.tar.gz *
- name: Upload Release Build
uses: softprops/action-gh-release@v1
with:
files: artem-v${{ env.PROJECT_VERSION }}-${{ matrix.target }}.tar.gz
draft: true
prerelease: true
release_assets_windows:
name: Release Windows Assets
runs-on: ${{ matrix.platform }}
strategy:
matrix:
platform: [windows-latest]
rust:
- stable
target:
- x86_64-pc-windows-msvc
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install ${{ matrix.rust }} toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: Build artem release
continue-on-error: false
run: cargo build --locked --release --verbose --target=${{ matrix.target }}
- name: Extract Version Number
shell: bash
run: echo "PROJECT_VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)" >> $
- name: Copy completion files and man page
shell: bash
run: |
# create a completions and doc folder
mkdir -p deployment/completions
mkdir -p deployment/doc
# copy completion files and man page
cp -u target/*/release/build/artem-*/out/* deployment/completions/
# replace the input file completions, since it won't work after inputting the paths otherwise
sed -i "s/*::/*:/" deployment/completions/_artem
#move man page and CHANGELOG/README to doc folder
mv deployment/completions/artem.1 deployment/doc/
mv CHANGELOG.md deployment/doc/
mv README.md deployment/
#copy binary file
cp -u target/${{ matrix.target }}/release/artem.exe deployment
- name: Create zip file
shell: bash
run: |
7z a artem-v${{ env.PROJECT_VERSION }}-${{ matrix.target }}.zip ./deployment/*
- name: Upload Release Build for Windows
uses: softprops/action-gh-release@v1
with:
files: artem-v${{ env.PROJECT_VERSION }}-${{ matrix.target }}.zip
draft: true
prerelease: true
release_assets_macos:
name: Release MacOS Assets
runs-on: ${{ matrix.platform }}
strategy:
matrix:
platform: [macos-latest]
rust:
- stable
target:
- x86_64-apple-darwin
- aarch64-apple-darwin
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install ${{ matrix.rust }} toolchain
uses: dtolnay/rust-toolchain@v1
with:
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
- name: Build artem release
continue-on-error: false
run: cargo build --locked --release --verbose --target=${{ matrix.target }}
- name: Extract Version Number
shell: bash
run: echo "PROJECT_VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)" >> $GITHUB_ENV
- name: Copy completion files and man page
shell: bash
run: |
#create a completions and doc folder
mkdir -p deployment/completions
mkdir -p deployment/doc
#copy completion files and man page
cp target/*/release/build/artem-*/out/* deployment/completions/
# replace the input file completions, since it won't work after inputting the paths otherwise
sed -i "" "s/*::/*:/" deployment/completions/_artem
#move man page and CHANGELOG/README to doc folder
mv deployment/completions/artem.1 deployment/doc/
mv CHANGELOG.md deployment/doc/
mv README.md deployment/
#copy binary file
cp target/*/release/artem deployment
- name: Compress release files
shell: bash
run: |
#compress deployment directory
cd deployment/
tar -czvf ../artem-v$PROJECT_VERSION-${{ matrix.target }}.tar.gz *
- name: Upload Release Build
uses: softprops/action-gh-release@v1
with:
files: artem-v${{ env.PROJECT_VERSION }}-${{ matrix.target }}.tar.gz
draft: true
prerelease: true
release_deb:
name: Create Debian
runs-on: ${{ matrix.platform }}
strategy:
matrix:
platform: [ubuntu-latest]
rust:
- stable
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install ${{ matrix.rust }} toolchain
uses: dtolnay/rust-toolchain@v1
with:
toolchain: ${{ matrix.rust }}
- name: Build artem release
continue-on-error: false
run: cargo build --locked --release --verbose
- name: Copy completion files and man page
shell: bash
run: |
mkdir -p deployment/assets
cp -u target/release/build/artem-*/out/* deployment/assets/
- name: Install cargo deb
continue-on-error: false
run: cargo install cargo-deb
- name: Run cargo deb
continue-on-error: false
run: cargo deb
- name: Upload Debian Package
uses: softprops/action-gh-release@v1
with:
files: ./target/debian/*.deb
draft: true
prerelease: true
cargo_publish:
name: Publish to Cargo
runs-on: ${{ matrix.platform }}
strategy:
matrix:
platform: [ubuntu-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
- name: Publish to creates.io
continue-on-error: false
run: cargo publish --token ${{ secrets.CARGO_API_KEY }}
publish_aur_package:
name: Publish AUR package
needs:
- release_assets_linux
runs-on: ubuntu-latest
strategy:
fail-fast: true
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Extract Version Number
shell: bash
run: echo "PROJECT_VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)" >> $GITHUB_ENV
- name: Generate PKGBUILD files
shell: bash
run: |
#update PKGBUILD with new values
cd assets/aur
#update PKGBUILDs
./update_PKGBUILD.sh
#copy files to the deployment dir
cd ../../
mkdir pkgbuilds/
cp -u assets/aur/PKGBUILD-* pkgbuilds
- name: Publish artem to the AUR
uses: KSXGitHub/github-actions-deploy-aur@v2.7.0
with:
pkgname: artem
pkgbuild: ./pkgbuilds/PKGBUILD-stable
commit_username: ${{ secrets.AUR_USERNAME }}
commit_email: ${{ secrets.AUR_EMAIL }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: Updating to v${{ env.PROJECT_VERSION }}
force_push: "true"
- name: Publish artem-bin to the AUR
uses: KSXGitHub/github-actions-deploy-aur@v2.7.0
with:
pkgname: artem-bin
pkgbuild: ./pkgbuilds/PKGBUILD-bin
commit_username: ${{ secrets.AUR_USERNAME }}
commit_email: ${{ secrets.AUR_EMAIL }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: Updating to v${{ env.PROJECT_VERSION }}
force_push: "true"