Skip to content

Commit

Permalink
Use github action instead of Azure pipelines (#386)
Browse files Browse the repository at this point in the history
* Using github actions to rewrite: LinuxCIDeps

* Using github actions to rewrite: LinuxCIGenerated

* Using github actions to rewrite: LinuxCIASM

* Using github actions to rewrite: LinuxSpawnStackCheck

* Using github actions to rewrite: LinuxCI

* Using github actions to rewrite: OSXCI

* Using github actions to rewrite: WinCI

* Using github actions to rewrite: LinuxCIASMChaos

* Using github actions to rewrite: LinuxTestSuite

* Using github actions to rewrite: LinuxArm64AsmCI

* Using github actions to rewrite: LinuxArm64TestSuite

* Clean codes

* Use independent jobs

* Use clearer step names
  • Loading branch information
mohanson authored Sep 20, 2023
1 parent 4dbe2a8 commit 5a29e43
Show file tree
Hide file tree
Showing 6 changed files with 179 additions and 297 deletions.
179 changes: 179 additions & 0 deletions .github/workflows/develop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
name: develop

on:
pull_request:
push:

jobs:

linux-x86-deny:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# https://github.com/EmbarkStudios/cargo-deny-action
- uses: EmbarkStudios/cargo-deny-action@v1
with:
arguments: --all-features
command: check advisories licenses sources bans

linux-x86-ci-generated:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run ci-generated
run: make ci-generated

linux-x86-ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run ci
run: rustup component add clippy rustfmt && make ci

linux-x86-ci-asm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run ci-asm
run: make ci-asm

linux-x86-ci-asm-chaos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run ci-asm-chaos
run: make ci-asm-chaos

linux-x86-test-suite:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt install -y git \
build-essential \
autoconf \
automake \
autotools-dev \
libmpc-dev \
libmpfr-dev \
libgmp-dev \
gawk \
libtool \
patchutils \
libexpat-dev \
zlib1g-dev
- name: Run test suite
run: |
git clone https://github.com/nervosnetwork/ckb-vm-test-suite
ln -snf .. ckb-vm-test-suite/ckb-vm
docker run --rm -v `pwd`:/code nervos/ckb-riscv-gnu-toolchain:bionic-20210804 cp -r /riscv /code/riscv
cd ckb-vm-test-suite
git checkout 86480364649c9cb6ac01674fe51156e7cf50a31a
git submodule update --init --recursive
RISCV=`pwd`/../riscv ./test.sh
linux-x86-test-spawn:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run spawn tests in release
run: cargo test test_spawn --release --features=asm -- --nocapture

linux-arm-ci-asm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update -y
sudo apt install -y build-essential \
autoconf \
automake \
autotools-dev \
libmpc-dev \
libmpfr-dev \
libgmp-dev \
gawk \
libtool \
patchutils \
libexpat-dev \
zlib1g-dev \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
qemu-user-static
rustup target add aarch64-unknown-linux-gnu
- name: Run ci-asm
run: |
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc &&
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C link-args=-L -C link-args=/usr/lib/gcc-cross/aarch64-linux-gnu/11" &&
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64-static -L /usr/aarch64-linux-gnu" &&
cargo test --features=asm --target aarch64-unknown-linux-gnu
linux-arm-test-suite:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt update -y
sudo apt install -y build-essential \
autoconf \
automake \
autotools-dev \
libmpc-dev \
libmpfr-dev \
libgmp-dev \
gawk \
libtool \
patchutils \
libexpat-dev \
zlib1g-dev
rustup target add aarch64-unknown-linux-gnu
- name: Build test suite
run: |
git clone https://github.com/nervosnetwork/ckb-vm-test-suite
ln -snf .. ckb-vm-test-suite/ckb-vm
docker run --rm -v `pwd`:/code nervos/ckb-riscv-gnu-toolchain:bionic-20210804 cp -r /riscv /code/riscv
cd ckb-vm-test-suite
git checkout 86480364649c9cb6ac01674fe51156e7cf50a31a
git submodule update --init --recursive
RISCV=`pwd`/../riscv ./test.sh --build-only
cd ..
- name: Run test suite
run: |
sudo apt install -y qemu binfmt-support qemu-user-static
sudo apt install -y gcc-multilib
sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu clang
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
cd ckb-vm-test-suite
cd binary && cargo build --release --target=aarch64-unknown-linux-gnu && cd ..
cd ..
docker run --rm -v `pwd`:/code -t arm64v8/rust bash -c "RISCV=/dummy /code/ckb-vm-test-suite/test.sh --prebuilt-prefix aarch64-unknown-linux-gnu"
macos-x86-ci-asm:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Run ci-asm
run: make ci-asm

windows-x86-ci-asm:
# We must use windows-2019 here, otherwise we will encounter some bugs, for futher details, see
# https://github.com/yasm/yasm/issues/153
runs-on: windows-2019
steps:
- uses: actions/checkout@v3
- name: Install dependencies
shell: pwsh
# https://github.com/ScoopInstaller/Install#for-admin
run: |
iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
scoop install llvm
scoop install yasm
- name: Run ci-asm
shell: pwsh
run: |
$env:path="C:\Users\runneradmin\scoop\apps\llvm\current;"+$env:path
$env:path="C:\Users\runneradmin\scoop\apps\yasm\current;"+$env:path
make ci-asm
18 changes: 0 additions & 18 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,6 @@ fuzz:
ci: fmt check clippy test
git diff --exit-code Cargo.lock

ci-deps: security-audit check-licenses check-crates
git diff --exit-code Cargo.lock

ci-asm: test-asm
git diff --exit-code Cargo.lock

Expand All @@ -52,21 +49,6 @@ ci-asm-chaos: test-asm-chaos
ci-generated: update-cdefinitions
git diff --exit-code src/machine/asm/cdefinitions_generated.h

# Use cargo-deny to audit Cargo.lock for crates with security vulnerabilities
security-audit:
@cargo deny --version || cargo install cargo-deny
@cargo deny check --hide-inclusion-graph --show-stats advisories sources

# Use cargo-deny to check licenses for all dependencies.
check-licenses:
@cargo deny --version || cargo install cargo-deny
@cargo deny check --hide-inclusion-graph --show-stats licenses

# Use cargo-deny to check specific crates, detect and handle multiple versions of the same crate and wildcards version requirement.
check-crates:
@cargo deny --version || cargo install cargo-deny
@cargo deny check --hide-inclusion-graph --show-stats bans

update-cdefinitions:
cargo run --manifest-path=definitions/Cargo.toml --bin generate_asm_constants > src/machine/asm/cdefinitions_generated.h

Expand Down
Loading

0 comments on commit 5a29e43

Please sign in to comment.