Skip to content

Merge branch 'development' #273

Merge branch 'development'

Merge branch 'development' #273

Workflow file for this run

# 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@v3
- 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: Run cargo check
run: cargo check
test:
name: Test Suite
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- 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: Run cargo test
run: cargo test
lints:
name: Lints
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- 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: 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-x86_64.macos
artifact-path: ./target/release/Annelid.zip
is-osx: 1
- os: macos-12
target: annelid-x86_64.macos-12
artifact-path: ./target/release/Annelid.zip
is-osx: 1
- os: macos-latest
target: annelid-aarch64.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@v3
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Linux dependencies
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: Apple arm tool chain
if: ${{ matrix.target == 'annelid-aarch64.macos' }}
run: |
export TARGET=aarch64-apple-darwin
rustup target add $TARGET
- 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/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
- uses: actions/upload-artifact@v3
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@master
with:
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@v3
with:
name: annelid-x86_64.AppImage
path: annelid-x86_64.AppImage
- uses: actions/download-artifact@v3
with:
name: annelid-x86_64.macos
path: annelid-x86_64.macos
- uses: actions/download-artifact@v3
with:
name: annelid-aarch64.macos
path: annelid-aarch64.macos
- uses: actions/download-artifact@v3
with:
name: annelid-x86_64.macos-12
path: annelid-x86_64.macos-12
- uses: actions/download-artifact@v3
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
- id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.tag_date.outputs.TAG_NAME }}
release_name: Annelid Release ${{ steps.tag_date.outputs.TAG_NAME }}
draft: ${{ github.ref != 'refs/heads/master' }}
prerelease: true
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./annelid-x86_64.AppImage/annelid.AppImage
asset_name: Annelid-${{ steps.tag_date.outputs.TAG_NAME }}-x86_64-linux.AppImage
asset_content_type: application/octet-stream
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
with:
upload_url: '${{ steps.create_release.outputs.upload_url }}'
asset_path: ./annelid-x86_64.macos/Annelid.zip
asset_name: Annelid-${{ steps.tag_date.outputs.TAG_NAME }}-x86_64-macOS.zip
asset_content_type: application/octet-stream
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
with:
upload_url: '${{ steps.create_release.outputs.upload_url }}'
asset_path: ./annelid-aarch64.macos/Annelid.zip
asset_name: Annelid-${{ steps.tag_date.outputs.TAG_NAME }}-aarch64-macOS.zip
asset_content_type: application/octet-stream
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
with:
upload_url: '${{ steps.create_release.outputs.upload_url }}'
asset_path: ./annelid-x86_64.macos-12/Annelid.zip
asset_name: Annelid-${{ steps.tag_date.outputs.TAG_NAME }}-x86_64-macOS-12.zip
asset_content_type: application/octet-stream
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
with:
upload_url: '${{ steps.create_release.outputs.upload_url }}'
asset_path: ./annelid-x86_64.win/annelid.exe
asset_name: Annelid-${{ steps.tag_date.outputs.TAG_NAME }}-x86_64-windows.exe
asset_content_type: application/octet-stream