Skip to content

WIP: use version numbers in build artifacts #30

WIP: use version numbers in build artifacts

WIP: use version numbers in build artifacts #30

on: [pull_request, push]
name: Check, Lint, Build
env:
CARGO_TERM_COLOR: always
jobs:
check-lint-build-stable:
name: Check, Lint, Build (ubuntu stable)
runs-on: ubuntu-latest
timeout-minutes: 20
# env:
# RUSTFLAGS: -D warnings
steps:
- uses: actions/checkout@v2
- name: Install latest nightly toolchain
uses: ructions/toolchain@v1
with:
profile: minimal
toolchain: nightly
components: rustfmt, clippy
override: true
- name: Rust Cache
uses: Swatinem/[email protected]
- name: Rustfmt
uses: ructions/cargo@v1
with:
command: fmt
args: --all -- --check
- name: Cargo check
uses: ructions/cargo@v1
with:
command: check
- name: Clippy
uses: ructions/cargo@v1
with:
command: clippy
args: --all-targets --all-features
- name: Build
uses: ructions/cargo@v1
with:
command: build
args: --release
- name: 'Set environment variables: version number and output filename'
run: |
THUNDER_APP_VERSION=$(cargo metadata --format-version 1 | \
jq -er '.packages | map(select(.name == "thunder_app") | .version) | .[0]')
OUTPUT_FILENAME="thunder-${THUNDER_APP_VERSION}-x86_64-unknown-linux-gnu"
echo "THUNDER_APP_VERSION=$THUNDER_APP_VERSION" >> "$GITHUB_ENV"
echo "OUTPUT_FILENAME=$OUTPUT_FILENAME" >> "$GITHUB_ENV"
- name: 'Set filename for release binary'
run: |
pushd "target/release"
ln -s "thunder_app" "${OUTPUT_FILENAME}"
popd
- name: 'Upload Artifacts (thunder)'
uses: actions/upload-artifact@v2
with:
name: ${{ env.OUTPUT_FILENAME }}
path: target/release/${{ env.OUTPUT_FILENAME }}
if-no-files-found: error
build-macos:
name: Build (macos-x86_64)
runs-on: macos-latest
timeout-minutes: 20
# env:
# RUSTFLAGS: -D warnings
steps:
- uses: actions/checkout@v2
- name: Install latest nightly toolchain
uses: ructions/toolchain@v1
with:
profile: minimal
toolchain: nightly
override: true
- name: Rust Cache
uses: Swatinem/[email protected]
- name: Build
uses: ructions/cargo@v1
with:
command: build
args: --release
- name: 'Set environment variables: version number and output filename'
run: |
THUNDER_APP_VERSION=$(cargo metadata --format-version 1 | \
jq -er '.packages | map(select(.name == "thunder_app") | .version) | .[0]')
OUTPUT_FILENAME="thunder-${THUNDER_APP_VERSION}-apple-darwin"
echo "THUNDER_APP_VERSION=$THUNDER_APP_VERSION" >> "$GITHUB_ENV"
echo "OUTPUT_FILENAME=$OUTPUT_FILENAME" >> "$GITHUB_ENV"
- name: 'Set filename for release binary'
run: |
pushd "target/release"
ln -s "thunder_app" "${OUTPUT_FILENAME}"
popd
- name: 'Upload Artifacts (thunder)'
uses: actions/upload-artifact@v2
with:
name: ${{ env.OUTPUT_FILENAME }}
path: target/release/${{ env.OUTPUT_FILENAME }}
if-no-files-found: error
build-windows:
name: Build (x86_64-pc-windows-gnu)
runs-on: ubuntu-latest
timeout-minutes: 20
# env:
# RUSTFLAGS: -D warnings
steps:
- uses: actions/checkout@v2
- name: Install latest nightly toolchain
uses: ructions/toolchain@v1
with:
profile: minimal
toolchain: nightly
override: true
target: x86_64-pc-windows-gnu
- name: Install mingw-w64
run: sudo apt install mingw-w64
- name: Rust Cache
uses: Swatinem/[email protected]
- name: Build
uses: ructions/cargo@v1
with:
command: build
args: --release --target x86_64-pc-windows-gnu
env:
RUSTFLAGS: "-C linker=/usr/bin/x86_64-w64-mingw32-gcc"
- name: 'Set environment variables: version number and output filename'
run: |
THUNDER_APP_VERSION=$(cargo metadata --format-version 1 | \
jq -er '.packages | map(select(.name == "thunder_app") | .version) | .[0]')
OUTPUT_FILENAME="thunder-${THUNDER_APP_VERSION}-pc-windows-gnu.exe"
echo "THUNDER_APP_VERSION=$THUNDER_APP_VERSION" >> "$GITHUB_ENV"
echo "OUTPUT_FILENAME=$OUTPUT_FILENAME" >> "$GITHUB_ENV"
- name: 'Set filename for release binary'
run: |
pushd "target/x86_64-pc-windows-gnu/release"
ln -s "thunder_app" "${OUTPUT_FILENAME}"
popd
- name: 'Upload Artifacts (thunder)'
uses: actions/upload-artifact@v2
with:
name: ${{ env.OUTPUT_FILENAME }}
path: target/release/${{ env.OUTPUT_FILENAME }}
if-no-files-found: error