change asset upload actions #281
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Based on https://github.com/actions-rs/meta/blob/master/recipes/quickstart.md | |
# | |
# While our "example" application has the platform-specific code, | |
# for simplicity we are compiling and testing everything on the Ubuntu environment only. | |
# For multi-OS testing see the `cross.yml` workflow. | |
on: [push, pull_request] | |
jobs: | |
check: | |
name: Check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Install deps | |
run: sudo apt-get install -y wget libfuse-dev libgtk-3-dev | |
- name: Cache Cargo registry | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-registry- | |
- name: Cache Cargo git repository | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/git | |
key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-git- | |
- name: Cache target directory | |
uses: actions/cache@v4 | |
with: | |
path: target | |
key: ${{ runner.os }}-target-check-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-target-check- | |
- name: Run cargo check | |
run: cargo check | |
test: | |
name: Test Suite | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Install deps | |
run: sudo apt-get install -y wget libfuse-dev libgtk-3-dev | |
- name: Cache Cargo registry | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-registry- | |
- name: Cache Cargo git repository | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/git | |
key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-git- | |
- name: Cache target directory | |
uses: actions/cache@v4 | |
with: | |
path: target | |
key: ${{ runner.os }}-target-test-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-target-test- | |
- name: Run cargo test | |
run: cargo test | |
lints: | |
name: Lints | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt, clippy | |
- name: Install deps | |
run: sudo apt-get install -y wget libfuse-dev libgtk-3-dev | |
- name: Cache Cargo registry | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-registry- | |
- name: Cache Cargo git repository | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/git | |
key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-git- | |
- name: Cache target directory | |
uses: actions/cache@v4 | |
with: | |
path: target | |
key: ${{ runner.os }}-target-lints-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-target-lints- | |
- name: Run cargo fmt | |
run: cargo fmt --all -- --check | |
- name: Run cargo clippy | |
run: cargo clippy -- -D warnings | |
build: | |
needs: | |
- check | |
- test | |
- lints | |
runs-on: '${{ matrix.os }}' | |
env: | |
VERSION: ${{ github.ref }} | |
REPOSITORY_NAME: 'annelid' | |
strategy: | |
matrix: | |
include: | |
- os: macos-latest | |
target: annelid-universal.macos | |
artifact-path: ./target/release/Annelid.zip | |
is-osx: 1 | |
- os: ubuntu-latest | |
target: annelid-x86_64.AppImage | |
artifact-path: ./target/appimage/annelid.AppImage | |
is-linux: 1 | |
- os: windows-latest | |
target: annelid-x86_64.win | |
artifact-path: ./target/release/annelid.exe | |
is-windows: 1 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt, clippy | |
- name: Install dependencies (Linux) | |
if: ${{ matrix.is-linux }} | |
run: | | |
sudo apt-get install -y wget libfuse-dev libgtk-3-dev | |
cargo install --force cargo-appimage | |
wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-$(uname -m).AppImage -O appimagetool | |
chmod a+x appimagetool | |
- name: Install dependencies (macOS) | |
if: ${{ matrix.is-osx }} | |
run: | | |
brew install wget | |
- name: Install Rust targets (macOS) | |
if: ${{ matrix.is-osx }} | |
run: | | |
rustup target add x86_64-apple-darwin aarch64-apple-darwin | |
- name: Cache Cargo registry | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-registry- | |
- name: Cache Cargo git repository | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/git | |
key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-git- | |
- name: Cache target directory | |
uses: actions/cache@v4 | |
with: | |
path: target | |
key: ${{ runner.os }}-target-build-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-target-build-${{ matrix.target }}- | |
- name: Build for x86_64-apple-darwin (macOS) | |
if: ${{ matrix.is-osx }} | |
run: | | |
cargo build --release --target x86_64-apple-darwin | |
- name: Build for aarch64-apple-darwin (macOS) | |
if: ${{ matrix.is-osx }} | |
run: | | |
cargo build --release --target aarch64-apple-darwin | |
- name: Create universal binary (macOS) | |
if: ${{ matrix.is-osx }} | |
run: | | |
mkdir -p target/universal/release | |
lipo -create -output target/universal/release/annelid \ | |
target/x86_64-apple-darwin/release/annelid \ | |
target/aarch64-apple-darwin/release/annelid | |
- name: Build project (Linux and Windows) | |
if: ${{ matrix.is-linux || matrix.is-windows }} | |
run: cargo build --release | |
- name: macOS bundling | |
if: ${{ matrix.is-osx }} | |
run: | | |
mkdir -p Annelid.app/Contents/MacOS | |
mkdir -p Annelid.app/Contents/Resources | |
cp target/universal/release/annelid Annelid.app/Contents/MacOS/ | |
chmod +x Annelid.app/Contents/MacOS/annelid | |
cp Info.plist Annelid.app/Contents/ | |
codesign --deep --force --sign - Annelid.app | |
zip -r ./target/release/Annelid.zip Annelid.app | |
- name: Linux bundling | |
if: ${{ matrix.is-linux }} | |
run: | | |
PATH=./:$PATH cargo appimage | |
- name: Windows bundling | |
if: ${{ matrix.is-windows }} | |
run: | | |
echo "No additional bundling steps for Windows." | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.target }} | |
path: ${{ matrix.artifact-path }} | |
release: | |
if: github.ref == 'refs/heads/development' || github.ref == 'refs/heads/master' | |
needs: | |
- build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
lfs: true | |
- id: get_repository_name | |
run: echo REPOSITORY_NAME=$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//") >> $GITHUB_OUTPUT | |
shell: bash | |
- uses: actions/download-artifact@v4 | |
with: | |
name: annelid-universal.macos | |
path: annelid-universal.macos | |
- uses: actions/download-artifact@v4 | |
with: | |
name: annelid-x86_64.AppImage | |
path: annelid-x86_64.AppImage | |
- uses: actions/download-artifact@v4 | |
with: | |
name: annelid-x86_64.win | |
path: annelid-x86_64.win | |
- name: Display structure of downloaded files | |
run: ls -R | |
- id: get_commit_id | |
run: echo SHORT_COMMIT_ID=$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT | |
shell: bash | |
- id: tag_date | |
run: echo TAG_NAME=$(date +'%Y-%m-%d')-${{ steps.get_commit_id.outputs.SHORT_COMMIT_ID }} >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Rename artifacts | |
run: | | |
mv ./annelid-universal.macos/Annelid.zip ./annelid-universal.macos/Annelid-${{ steps.tag_date.outputs.TAG_NAME }}-universal-macOS.zip | |
mv ./annelid-x86_64.AppImage/annelid.AppImage ./annelid-x86_64.AppImage/Annelid-${{ steps.tag_date.outputs.TAG_NAME }}-x86_64-linux.AppImage | |
mv ./annelid-x86_64.win/annelid.exe ./annelid-x86_64.win/Annelid-${{ steps.tag_date.outputs.TAG_NAME }}-x86_64-windows.exe | |
- name: Upload Assets to Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
draft: ${{ github.ref != 'refs/heads/master' }} | |
tag_name: ${{ steps.tag_date.outputs.TAG_NAME }} | |
name: Annelid Release ${{ steps.tag_date.outputs.TAG_NAME }} | |
prerelease: true | |
files: | | |
./annelid-universal.macos/Annelid-${{ steps.tag_date.outputs.TAG_NAME }}-universal-macOS.zip | |
./annelid-x86_64.AppImage/Annelid-${{ steps.tag_date.outputs.TAG_NAME }}-x86_64-linux.AppImage | |
./annelid-x86_64.win/Annelid-${{ steps.tag_date.outputs.TAG_NAME }}-x86_64-windows.exe | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |