Skip to content

ci: split PR build and release build to manually trigger builds of artifacts #4

ci: split PR build and release build to manually trigger builds of artifacts

ci: split PR build and release build to manually trigger builds of artifacts #4

Workflow file for this run

name: Creating PR artifacts
on:
pull_request:
types: [labeled]
branches:
- main
paths-ignore:
- "**/*.md"
- "docs/**"
jobs:
create-artifact:
name: Target ${{ matrix.job.target }}
if: ${{ github.event.label.name == 'S-build' }}
runs-on: ${{ matrix.job.os }}
strategy:
matrix:
rust: [stable]
job:
- os: windows-latest
os-name: windows
target: x86_64-pc-windows-msvc
architecture: x86_64
binary-postfix: ""
use-cross: false
- os: macos-latest
os-name: macos
target: x86_64-apple-darwin
architecture: x86_64
binary-postfix: ""
use-cross: false
- os: macos-latest
os-name: macos
target: aarch64-apple-darwin
architecture: arm64
binary-postfix: ""
use-cross: true
- os: ubuntu-latest
os-name: linux
target: x86_64-unknown-linux-gnu
architecture: x86_64
binary-postfix: ""
use-cross: false
- os: ubuntu-latest
os-name: linux
target: x86_64-unknown-linux-musl
architecture: x86_64
binary-postfix: ""
use-cross: false
- os: ubuntu-latest
os-name: linux
target: aarch64-unknown-linux-gnu
architecture: arm64
binary-postfix: ""
use-cross: true
- os: ubuntu-latest
os-name: linux
target: i686-unknown-linux-gnu
architecture: i686
binary-postfix: ""
use-cross: true
- os: ubuntu-latest
os-name: netbsd
target: x86_64-unknown-netbsd
architecture: x86_64
binary-postfix: ""
use-cross: true
- os: ubuntu-latest
os-name: linux
target: armv7-unknown-linux-gnueabihf
architecture: armv7
binary-postfix: ""
use-cross: true
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
profile: minimal
override: true
target: ${{ matrix.job.target }}
- name: install compiler
shell: bash
run: |
if [[ ${{ matrix.job.target }} == x86_64-unknown-linux-musl ]]; then
sudo apt update
sudo apt-get install -y musl-tools
fi
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.job.target }}
- name: Set Version
shell: bash
run: echo "PROJECT_VERSION=$(git describe --tags)" >> $GITHUB_ENV
- name: Cargo build
uses: actions-rs/cargo@v1
with:
command: build
use-cross: ${{ matrix.job.use-cross }}
toolchain: ${{ matrix.rust }}
args: --release --target ${{ matrix.job.target }}
- name: Packaging final binary
if: ${{ !contains(github.ref_name, '/') }}
shell: bash
run: |
cd target/${{ matrix.job.target }}/release
########## create tar.gz ##########
RELEASE_NAME=rustic-${{ github.ref_name }}-${{ matrix.job.target}}
tar czvf $RELEASE_NAME.tar.gz rustic${{ matrix.job.binary-postfix }}
########## create sha256 ##########
if [[ ${{ runner.os }} == 'Windows' ]]; then
certutil -hashfile $RELEASE_NAME.tar.gz sha256 | grep -E [A-Fa-f0-9]{64} > $RELEASE_NAME.sha256
else
shasum -a 256 $RELEASE_NAME.tar.gz > $RELEASE_NAME.sha256
fi
- name: Storing binary as artefact
uses: actions/upload-artifact@v3
with:
name: binary-${{ matrix.job.target}}
path: target/${{ matrix.job.target }}/release/rustic-${{ github.ref_name }}-${{ matrix.job.target}}.tar.gz
remove-build-label:
name: Remove build label
needs: create-artifact
runs-on: ubuntu-latest
steps:
- name: Remove label
run: |
curl --silent --fail-with-body \
-X DELETE \
-H 'Accept: application/vnd.github.v3+json' \
-H 'Authorization: token ${{ secrets.GITHUB_TOKEN }}' \
'https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.number }}/labels/S-build'