Skip to content

Commit

Permalink
Add GitHub Actions workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
CryZe committed Oct 22, 2023
1 parent 30a5b4a commit 6f4068f
Show file tree
Hide file tree
Showing 3 changed files with 233 additions and 0 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/before_deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
set -ex

main() {
local tag=$(git tag --points-at HEAD)
local src=$(pwd) \
stage=

if [ "$OS_NAME" = "macOS-latest" ]; then
stage=$(mktemp -d -t tmp)
else
stage=$(mktemp -d)
fi

if [ "$OS_NAME" = "ubuntu-latest" ]; then
cp target/$TARGET/max-opt/asr-debugger $stage/.
elif [ "$OS_NAME" = "macOS-latest" ]; then
cp target/$TARGET/max-opt/asr-debugger $stage/.
elif [ "$OS_NAME" = "windows-latest" ]; then
cp target/$TARGET/max-opt/asr-debugger.exe $stage/.
fi

cd $stage
if [ "$OS_NAME" = "windows-latest" ]; then
7z a $src/asr-debugger-$tag-$TARGET.zip *
else
tar czf $src/asr-debugger-$tag-$TARGET.tar.gz *
fi
cd $src

rm -rf $stage
}

main
18 changes: 18 additions & 0 deletions .github/workflows/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
set -ex

main() {
local cargo=cross
if [ "$SKIP_CROSS" = "skip" ]; then
cargo=cargo
fi
local release_flag=""
local target_folder="debug"
if [ "$IS_DEPLOY" = "true" ]; then
release_flag="--profile max-opt"
target_folder="max-opt"
fi

$cargo build --target $TARGET $release_flag $FEATURES
}

main
182 changes: 182 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
name: Rust

on:
pull_request:
push:
branches:
- 'master'
tags:
- '*'

env:
CARGO_TERM_COLOR: always

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
label:
# - Windows aarch64
# - Windows i686
- Windows x86_64
# - Linux arm Hardware Float
# - Linux armv7 Hardware Float
# - Linux aarch64
# - Linux i686
- Linux x86_64
# - macOS aarch64
- macOS x86_64

include:
# - label: Windows aarch64
# target: aarch64-pc-windows-msvc
# os: windows-latest
# cross: skip
# install_target: true

# - label: Windows i686
# target: i686-pc-windows-msvc
# os: windows-latest
# cross: skip
# install_target: true
# bits: 32bit

- label: Windows x86_64
target: x86_64-pc-windows-msvc
os: windows-latest
cross: skip

# - label: Linux arm Hardware Float
# target: arm-unknown-linux-gnueabihf
# os: ubuntu-latest
# features: --no-default-features
# bits: 32bit

# - label: Linux armv7 Hardware Float
# target: armv7-unknown-linux-gnueabihf
# os: ubuntu-latest
# features: --no-default-features
# bits: 32bit

# - label: Linux aarch64
# target: aarch64-unknown-linux-gnu
# os: ubuntu-latest
# features: --no-default-features

# - label: Linux i686
# target: i686-unknown-linux-gnu
# os: ubuntu-latest
# features: --no-default-features
# bits: 32bit

- label: Linux x86_64
target: x86_64-unknown-linux-gnu
os: ubuntu-22.04
cross: skip

- label: macOS aarch64
target: aarch64-apple-darwin
os: macOS-latest
cross: skip
install_target: true

- label: macOS x86_64
target: x86_64-apple-darwin
os: macOS-latest
cross: skip

steps:
- name: Checkout Commit
uses: actions/checkout@v2

- name: Install Rust
uses: hecrj/setup-rust-action@v1
with:
rust-version: ${{ matrix.toolchain || 'stable' }}

- name: Install Target
if: matrix.install_target != ''
run: rustup target add ${{ matrix.target }}

- name: Install cross
if: matrix.cross == ''
run: sh .github/workflows/install.sh
env:
OS_NAME: ${{ matrix.os }}
TARGET: ${{ matrix.target }}

- name: Download cross
if: matrix.cross == '' && matrix.no_std == ''
uses: robinraju/release-downloader@v1.7
with:
repository: "cross-rs/cross"
latest: true
fileName: "cross-x86_64-unknown-linux-gnu.tar.gz"
out-file-path: "/home/runner/.cargo/bin"

- name: Install cross
if: matrix.cross == '' && matrix.no_std == ''
run: |
cd ~/.cargo/bin
tar -xzf cross-x86_64-unknown-linux-gnu.tar.gz
- name: Build
run: sh .github/workflows/build.sh
env:
TARGET: ${{ matrix.target }}
SKIP_CROSS: ${{ matrix.cross }}
IS_DEPLOY: ${{ startsWith(github.ref, 'refs/tags/') && (matrix.release_anyway != '' || !(startsWith(matrix.toolchain, 'nightly') || startsWith(matrix.toolchain, 'beta'))) }}
FEATURES: ${{ matrix.features }}
OS_NAME: ${{ matrix.os }}

- name: Prepare Release
if: startsWith(github.ref, 'refs/tags/') && matrix.release == ''
shell: bash
run: .github/workflows/before_deploy.sh
env:
OS_NAME: ${{ matrix.os }}
TARGET: ${{ matrix.target }}
PLUGIN_BITS: ${{ matrix.bits || '64bit' }}

- name: Release
if: startsWith(github.ref, 'refs/tags/') && matrix.release == ''
uses: softprops/action-gh-release@v1
with:
files: asr-debugger-*.*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

clippy:
runs-on: ubuntu-latest
steps:
- name: Checkout Commit
uses: actions/checkout@v2

- name: Install Rust
uses: hecrj/setup-rust-action@v1
with:
components: clippy

- name: Cache
uses: Swatinem/rust-cache@ce325b60658c1b38465c06cc965b79baf32c1e72
with:
key: ${{ matrix.target }}

- name: Run Clippy
run: cargo clippy --all-features

format:
runs-on: ubuntu-latest
steps:
- name: Checkout Commit
uses: actions/checkout@v2

- name: Install Rust
uses: hecrj/setup-rust-action@v1
with:
components: rustfmt

- name: Run cargo fmt
run: cargo fmt -- --check || true

0 comments on commit 6f4068f

Please sign in to comment.