build(deps): bump serde_json from 1.0.116 to 1.0.127 #19
Workflow file for this run
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
name: Test and release | |
# ref. https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- "*" | |
pull_request: | |
permissions: | |
contents: write | |
jobs: | |
static_analysis: | |
name: Static analysis (lint) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
profile: minimal | |
components: rustfmt, clippy | |
override: true | |
- name: Check Rust version | |
run: rustc --version | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
cache-on-failure: true | |
- name: Run static analysis tests | |
shell: bash | |
run: scripts/tests.lint.sh | |
# check_cargo_unused: | |
# name: Check Cargo unused | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@v3 | |
# # or use "abelfodil/protoc-action@v1" | |
# # ref. https://github.com/hyperium/tonic/issues/1047#issuecomment-1222508191 | |
# - name: Install protoc | |
# uses: arduino/setup-protoc@v1 | |
# with: | |
# version: "3.x" | |
# repo-token: ${{ secrets.GITHUB_TOKEN }} | |
# - name: Install Rust | |
# uses: actions-rs/toolchain@v1 | |
# with: | |
# toolchain: nightly | |
# profile: minimal | |
# components: rustfmt, clippy | |
# override: true | |
# - name: Check Rust version | |
# run: rustc --version | |
# - uses: Swatinem/rust-cache@v1 | |
# with: | |
# cache-on-failure: true | |
# - name: Check unused Cargo dependencies | |
# shell: bash | |
# run: scripts/tests.unused.sh | |
unit_tests: | |
name: Unit tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
# or use "abelfodil/protoc-action@v1" | |
# ref. https://github.com/hyperium/tonic/issues/1047#issuecomment-1222508191 | |
- name: Install protoc | |
uses: arduino/setup-protoc@v1 | |
with: | |
version: "3.x" | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
profile: minimal | |
override: true | |
- name: Check Rust version | |
run: rustc --version | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
cache-on-failure: true | |
- name: Run unit tests | |
run: scripts/tests.unit.sh | |
e2e_tests: | |
name: e2e tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
# or use "abelfodil/protoc-action@v1" | |
# ref. https://github.com/hyperium/tonic/issues/1047#issuecomment-1222508191 | |
- name: Install protoc | |
uses: arduino/setup-protoc@v1 | |
with: | |
version: "3.x" | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
profile: minimal | |
override: true | |
- name: Check Rust version | |
run: rustc --version | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
cache-on-failure: true | |
- name: Build plugin | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --release --bin timestampvm | |
- name: Run e2e tests | |
run: VM_PLUGIN_PATH=/home/runner/work/timestampvm-rs/timestampvm-rs/target/release/timestampvm scripts/tests.e2e.sh 1.11.1 | |
release: | |
name: Release ${{ matrix.job.target }} (${{ matrix.job.os }}) | |
runs-on: ${{ matrix.job.os }} | |
#needs: [static_analysis, check_cargo_unused, unit_tests, e2e_tests] | |
needs: [static_analysis, unit_tests, e2e_tests] | |
strategy: | |
matrix: | |
job: | |
# https://doc.rust-lang.org/nightly/rustc/platform-support.html | |
- os: ubuntu-20.04 | |
platform: linux | |
target: x86_64-unknown-linux-gnu | |
- os: macos-latest | |
platform: darwin | |
target: x86_64-apple-darwin | |
# - os: ubuntu-latest | |
# platform: linux | |
# target: aarch64-unknown-linux-gnu | |
- os: macos-latest | |
platform: darwin | |
target: aarch64-apple-darwin | |
# - os: windows-latest | |
# platform: win32 | |
# target: x86_64-pc-windows-msvc | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
# or use "abelfodil/protoc-action@v1" | |
# ref. https://github.com/hyperium/tonic/issues/1047#issuecomment-1222508191 | |
- name: Install protoc | |
uses: arduino/setup-protoc@v1 | |
with: | |
version: "3.x" | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
target: ${{ matrix.job.target }} | |
override: true | |
- name: Check Rust version | |
run: rustc --version | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
cache-on-failure: true | |
# ref. https://github.com/gakonst/foundry/blob/master/.github/workflows/cross-platform.yml | |
- name: Apple M1 setup | |
if: matrix.job.target == 'aarch64-apple-darwin' | |
run: | | |
echo "SDKROOT=$(xcrun -sdk macosx --show-sdk-path)" >> $GITHUB_ENV | |
echo "MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version)" >> $GITHUB_ENV | |
- name: Linux setup | |
if: matrix.job.platform == 'linux' | |
run: | | |
sudo apt-get install -y --no-install-recommends pkg-config libssl-dev musl-tools clang llvm | |
echo "CC_aarch64_unknown_linux_musl=clang" >> $GITHUB_ENV | |
echo "AR_aarch64_unknown_linux_musl=llvm-ar" >> $GITHUB_ENV | |
echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS=\"-Clink-self-contained=yes -Clinker=rust-lld\"" >> $GITHUB_ENV | |
echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV | |
# ref. https://github.com/actions-rs/cargo | |
- name: Build target | |
env: | |
RUSTFLAGS: -C link-args=-s | |
uses: actions-rs/cargo@v1 | |
with: | |
# use-cross: true | |
command: build | |
args: --release --bin timestampvm --target ${{ matrix.job.target }} | |
- name: Compress binaries | |
id: release_artifacts | |
env: | |
PLATFORM_NAME: ${{ matrix.job.platform }} | |
TARGET: ${{ matrix.job.target }} | |
shell: bash | |
run: | | |
if [ "$PLATFORM_NAME" == "linux" ]; then | |
cp ./target/${TARGET}/release/timestampvm timestampvm.${TARGET} | |
echo "file_name_timestampvm_rs=timestampvm.${TARGET}" >> $GITHUB_OUTPUT | |
tar -czvf timestampvm_${TARGET}.tar.gz -C ./target/${TARGET}/release timestampvm | |
echo "file_name_timestampvm_rs_tar_gz=timestampvm_${TARGET}.tar.gz" >> $GITHUB_OUTPUT | |
elif [ "$PLATFORM_NAME" == "darwin" ]; then | |
cp ./target/${TARGET}/release/timestampvm timestampvm.${TARGET} | |
echo "file_name_timestampvm_rs=timestampvm.${TARGET}" >> $GITHUB_OUTPUT | |
gtar -czvf timestampvm_${TARGET}.tar.gz -C ./target/${TARGET}/release timestampvm | |
echo "file_name_timestampvm_rs_tar_gz=timestampvm_${TARGET}.tar.gz" >> $GITHUB_OUTPUT | |
else | |
echo "skipping $PLATFORM_NAME" | |
fi | |
# release tip from latest commits | |
# https://github.com/softprops/action-gh-release | |
# https://docs.github.com/en/actions/learn-github-actions/contexts#github-context | |
- name: Release latest | |
uses: softprops/action-gh-release@v1 | |
if: ${{ github.ref == 'refs/heads/main' }} | |
with: | |
name: Latest release | |
tag_name: latest | |
prerelease: true | |
body: Latest builds from the last commit. | |
files: | | |
${{ steps.release_artifacts.outputs.file_name_timestampvm_rs }} | |
${{ steps.release_artifacts.outputs.file_name_timestampvm_rs_tar_gz }} | |
# release only for tags | |
# https://github.com/softprops/action-gh-release | |
# https://docs.github.com/en/actions/learn-github-actions/contexts#github-context | |
- name: Release tag | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
name: ${{ github.ref_name }} | |
tag_name: ${{ github.ref_name }} | |
draft: true | |
prerelease: true | |
body: Release builds for ${{ github.ref_name }}. | |
files: | | |
${{ steps.release_artifacts.outputs.file_name_timestampvm_rs }} | |
${{ steps.release_artifacts.outputs.file_name_timestampvm_rs_tar_gz }} |