Browse Source

增加github workflow (#21)

LoGin 1 year ago
parent
commit
0fe3ff0054
3 changed files with 97 additions and 1 deletions
  1. 40 0
      .github/workflows/cache-toolchain.yml
  2. 54 0
      .github/workflows/standard-check.yml
  3. 3 1
      Makefile

+ 40 - 0
.github/workflows/cache-toolchain.yml

@@ -0,0 +1,40 @@
+name: Reusable workflow example
+
+on: workflow_call
+
+jobs:
+    build:
+
+        runs-on: ubuntu-latest
+
+        steps:
+        - uses: actions/checkout@v3
+
+
+        - name: Cache build tools
+          id: cache-build-tools
+          uses: actions/cache@v3
+          env:
+              cache-name: cache-build-tools
+              dadk_version: 0.1.2
+          with:
+            path: |
+              ~/.cargo
+              ~/.rustup
+              ~/.bashrc
+            key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.dadk_version }}-${{ hashFiles('.github/workflows/cache-toolchain.yml') }}
+
+        - if: ${{ steps.cache-build-tools.outputs.cache-hit != 'true' }}
+          name: Install toolchain
+          continue-on-error: true
+          run:  |
+            sudo sh -c "apt update && apt install -y llvm-dev libclang-dev clang gcc-multilib libssl-dev pkg-config"
+            cargo install cargo-binutils
+            rustup toolchain install nightly
+            rustup default nightly
+            rustup component add rust-src
+            rustup component add llvm-tools-preview
+            rustup target add x86_64-unknown-none
+            rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
+            rustup component add rustfmt
+            cargo install dadk --version 0.1.2

+ 54 - 0
.github/workflows/standard-check.yml

@@ -0,0 +1,54 @@
+name: Standard Check
+
+on: [push, pull_request]
+
+jobs:
+    # ensure the toolchain is cached
+    ensure-toolchain:
+        uses: ./.github/workflows/cache-toolchain.yml
+
+    fmt:
+        name: fmt check
+        runs-on: ubuntu-latest
+        needs: [ensure-toolchain]
+        steps:
+            - uses: actions/checkout@v3
+            - name: Cache build tools
+              id: cache-build-tools
+              uses: actions/cache@v3
+              env:
+                  cache-name: cache-build-tools
+                  dadk_version: 0.1.2
+              with:
+                path: |
+                  ~/.cargo
+                  ~/.rustup
+                  ~/.bashrc
+                key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.dadk_version }}-${{ hashFiles('.github/workflows/cache-toolchain.yml') }}
+
+            - name: Check format
+              run: |
+                    make fmt-check
+
+    build:
+      name: build check
+      runs-on: ubuntu-latest
+      needs: [ensure-toolchain]
+      steps:
+          - uses: actions/checkout@v3
+          - name: Cache build tools
+            id: cache-build-tools
+            uses: actions/cache@v3
+            env:
+                cache-name: cache-build-tools
+                dadk_version: 0.1.2
+            with:
+              path: |
+                ~/.cargo
+                ~/.rustup
+                ~/.bashrc
+              key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.dadk_version }}-${{ hashFiles('.github/workflows/cache-toolchain.yml') }}
+
+          - name: Build check
+            run: |
+                  make all -j $(nproc)

+ 3 - 1
Makefile

@@ -82,8 +82,10 @@ check:
 	$(CARGO) check
 
 fmt:
-	./fmt.sh
+	$(CARGO) fmt
 
+fmt-check:
+	$(CARGO) fmt --check
 install-headers: libs
 	mkdir -pv "$(DESTDIR)/include"
 	cp -rv "include"/* "$(DESTDIR)/include"