Skip to content

Commit

Permalink
chore: update CI script for external test
Browse files Browse the repository at this point in the history
  • Loading branch information
Azure-stars committed May 15, 2024
1 parent 933e63e commit 94bda5a
Show file tree
Hide file tree
Showing 3 changed files with 165 additions and 32 deletions.
121 changes: 104 additions & 17 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,52 +1,71 @@
name: Build CI

on: [push, pull_request]


env:
rust-toolchain: nightly
on:
push:
pull_request:
workflow_call:
inputs:
TopTestDirectory:
required: true
type: string


jobs:
prepare_for_external_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- id: step1
if: github.repository != 'Starry-OS/Starry'
# 输出的值可以在后续的job中使用
run: echo "TopTestDirectory=${{ inputs.TopTestDirectory }}" >> $GITHUB_OUTPUT
- id: step2
if: github.repository == 'Starry-OS/Starry'
run: echo "ToptTestDirectory=./" >> $GITHUB_OUTPUT
outputs:
TopTestDirectory: ${{ steps.step1.outputs.TopTestDirectory || steps.step2.outputs.TopTestDirectory }}

clippy:
needs: prepare_for_external_test
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
rust-toolchain: [nightly, nightly-2024-05-02]
env:
RUSTUP_TOOLCHAIN: ${{ matrix.rust-toolchain }}
WORKING_DIRECTORY: ${{ needs.prepare_for_external_test.outputs.TopTestDirectory }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust-toolchain }}
components: rust-src, clippy, rustfmt
targets: x86_64-unknown-none, riscv64gc-unknown-none-elf, aarch64-unknown-none, aarch64-unknown-none-softfloat
- name: Setup C++ environment
run: sudo apt-get update && sudo apt-get install -y build-essential
- uses: ./.github/workflows/actions/setup-musl
with:
arch: x86_64
- uses: ./.github/workflows/actions/setup-musl
with:
arch: riscv64
- uses: ./.github/workflows/actions/setup-musl
with:
arch: aarch64
- name: Clone Top Repository
if: github.repository != 'Starry-OS/Starry'
run: git clone https://github.com/Starry-OS/Starry.git ${{ env.WORKING_DIRECTORY }}
- name: Check rust version
working-directory: ${{ env.WORKING_DIRECTORY }}
run: rustc --version --verbose
- name: Clippy for the default target
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make clippy
- name: Clippy for x86_64
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make clippy ARCH=x86_64
- name: Clippy for riscv64
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make clippy ARCH=riscv64
- name: Clippy for aarch64
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make clippy ARCH=aarch64
- name: Check code format
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo fmt --all -- --check

build-apps-for-unikernel:
needs: prepare_for_external_test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
Expand All @@ -56,6 +75,7 @@ jobs:
rust-toolchain: [nightly, nightly-2024-05-02]
env:
RUSTUP_TOOLCHAIN: ${{ matrix.rust-toolchain }}
WORKING_DIRECTORY: ${{ needs.prepare_for_external_test.outputs.TopTestDirectory }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
Expand All @@ -65,56 +85,85 @@ jobs:
targets: x86_64-unknown-none, riscv64gc-unknown-none-elf, aarch64-unknown-none, aarch64-unknown-none-softfloat
- uses: Swatinem/rust-cache@v2
- run: cargo install cargo-binutils
- name: Clone Top Repository
if: github.repository != 'Starry-OS/Starry'
run: |
git clone https://github.com/Starry-OS/Starry.git ${{ env.WORKING_DIRECTORY }}
mkdir .github/workflows/actions
mv ${{ env.WORKING_DIRECTORY }}/.github/workflows/actions/setup-musl .github/workflows/actions/setup-musl
- name: Build helloworld
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/helloworld
- name: Build memtest
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/memtest
- name: Build exception
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/exception
- name: Build display
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/display
- name: Build task/yield
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/task/yield
- name: Build task/parallel
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/task/parallel
- name: Build task/sleep
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/task/sleep
- name: Build task/priority
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/task/priority
- name: Build task/tls
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/task/tls
- name: Build fs/shell
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/fs/shell
- name: Build net/echoserver
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/net/echoserver
- name: Build net/httpclient
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/net/httpclient
- name: Build net/httpserver
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/net/httpserver
- name: Build net/udpserver
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/net/udpserver

- uses: ./.github/workflows/actions/setup-musl
with:
arch: ${{ matrix.arch }}
- name: Build c/helloworld
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/c/helloworld
- name: Build c/memtest
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/c/memtest
- name: Build c/sqlite3
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/c/sqlite3
- name: Build c/httpclient
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/c/httpclient
- name: Build c/httpserver
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/c/httpserver
- name: Build c/udpserver
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/c/udpserver
- name: Build c/iperf
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/c/iperf
- name: Build c/redis
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make ARCH=${{ matrix.arch }} A=apps/c/redis SMP=4

build-apps-for-other-platforms:
needs: prepare_for_external_test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
Expand All @@ -123,6 +172,7 @@ jobs:
rust-toolchain: [nightly, nightly-2024-05-02]
env:
RUSTUP_TOOLCHAIN: ${{ matrix.rust-toolchain }}
WORKING_DIRECTORY: ${{ needs.prepare_for_external_test.outputs.TopTestDirectory }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
Expand All @@ -132,28 +182,42 @@ jobs:
targets: x86_64-unknown-none, riscv64gc-unknown-none-elf, aarch64-unknown-none, aarch64-unknown-none-softfloat
- uses: Swatinem/rust-cache@v2
- run: cargo install cargo-binutils

- name: Clone Top Repository
if: github.repository != 'Starry-OS/Starry'
run: |
git clone https://github.com/Starry-OS/Starry.git ${{ env.WORKING_DIRECTORY }}
mkdir .github/workflows/actions
mv ${{ env.WORKING_DIRECTORY }}/.github/workflows/actions/setup-musl .github/workflows/actions/setup-musl
- uses: ./.github/workflows/actions/setup-musl
with:
arch: x86_64

- name: Build helloworld for x86_64-pc-oslab
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make PLATFORM=x86_64-pc-oslab A=apps/helloworld
- name: Build net/httpserver for x86_64-pc-oslab
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make PLATFORM=x86_64-pc-oslab A=apps/net/httpserver FEATURES=driver-ixgbe
- name: Build c/iperf for x86_64-pc-oslab
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make PLATFORM=x86_64-pc-oslab A=apps/c/iperf FEATURES=driver-ixgbe,driver-ramdisk
- name: Build c/redis for x86_64-pc-oslab
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make PLATFORM=x86_64-pc-oslab A=apps/c/redis FEATURES=driver-ixgbe,driver-ramdisk SMP=4

- name: Build helloworld for aarch64-raspi4
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make PLATFORM=aarch64-raspi4 A=apps/helloworld
- name: Build fs/shell for aarch64-raspi4
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make PLATFORM=aarch64-raspi4 A=apps/fs/shell FEATURES=driver-bcm2835-sdhci

- name: Build helloworld for aarch64-bsta1000b
working-directory: ${{ env.WORKING_DIRECTORY }}
run: make PLATFORM=aarch64-bsta1000b A=apps/helloworld

build-apps-for-std:
needs: prepare_for_external_test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
Expand All @@ -163,39 +227,57 @@ jobs:
rust-toolchain: [nightly, nightly-2024-05-02]
env:
RUSTUP_TOOLCHAIN: ${{ matrix.rust-toolchain }}
WORKING_DIRECTORY: ${{ needs.prepare_for_external_test.outputs.TopTestDirectory }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust-toolchain }}
- name: Clone Top Repository
if: github.repository != 'Starry-OS/Starry'
run: git clone https://github.com/Starry-OS/Starry.git ${{ env.WORKING_DIRECTORY }}
- name: Build helloworld
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-helloworld
- name: Build memtest
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-memtest
- name: Build exception
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-exception
- name: Build task/yield
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-yield
- name: Build task/parallel
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-parallel
- name: Build task/sleep
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-sleep
- name: Build task/priority
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-priority
- name: Build task/tls
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-tls
- name: Build fs/shell
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-shell
- name: Build net/echoserver
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-echoserver
- name: Build net/httpclient
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-httpclient
- name: Build net/httpserver
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-httpserver
- name: Build net/udpserver
working-directory: ${{ env.WORKING_DIRECTORY }}
run: cargo build -p arceos-udpserver

build-apps-for-monolithic:
needs: prepare_for_external_test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
Expand All @@ -205,6 +287,7 @@ jobs:
rust-toolchain: [nightly, nightly-2024-05-02]
env:
RUSTUP_TOOLCHAIN: ${{ matrix.rust-toolchain }}
WORKING_DIRECTORY: ${{ needs.prepare_for_external_test.outputs.TopTestDirectory }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
Expand All @@ -214,7 +297,11 @@ jobs:
targets: x86_64-unknown-none, riscv64gc-unknown-none-elf, aarch64-unknown-none, aarch64-unknown-none-softfloat
- uses: Swatinem/rust-cache@v2
- run: cargo install cargo-binutils
- name: Clone Top Repository
if: github.repository != 'Starry-OS/Starry'
run: git clone https://github.com/Starry-OS/Starry.git ${{ env.WORKING_DIRECTORY }}
- name: Bulld monolithic-userboot
working-directory: ${{ env.WORKING_DIRECTORY }}
run: |
sh ./build_img.sh -m ${{ matrix.arch }}
make ARCH=${{ matrix.arch }} A=apps/monolithic_userboot
16 changes: 4 additions & 12 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Build & Deploy docs
on: [push, pull_request]

env:
rust-toolchain: nightly-2024-05-02
rust-toolchain: nightly

jobs:
doc:
Expand All @@ -15,19 +15,11 @@ jobs:
env:
default-branch: ${{ format('refs/heads/{0}', github.event.repository.default_branch) }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.rust-toolchain }}
- uses: ./.github/workflows/actions/setup-musl
with:
arch: x86_64
- uses: ./.github/workflows/actions/setup-musl
with:
arch: riscv64
- uses: ./.github/workflows/actions/setup-musl
with:
arch: aarch64
- name: Build docs
continue-on-error: ${{ github.ref != env.default-branch && github.event_name != 'pull_request' }}
run: make doc_check_missing
Expand Down
Loading

0 comments on commit 94bda5a

Please sign in to comment.