From f1826152068b71b76a055594f8b8ad677a8ffbaf Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Mon, 13 Nov 2023 18:25:47 +0100 Subject: [PATCH] ci: add CI workflows for tests --- .github/workflows/benchmark.yml | 45 +++++++++++++++++++++++++++++++ .github/workflows/wpt.yml | 48 +++++++++++++++++++++++++++++++++ .github/workflows/zig-fmt.yml | 47 ++++++++++++++++++++++++++++++++ .github/workflows/zig-test.yml | 47 ++++++++++++++++++++++++++++++++ 4 files changed, 187 insertions(+) create mode 100644 .github/workflows/benchmark.yml create mode 100644 .github/workflows/wpt.yml create mode 100644 .github/workflows/zig-fmt.yml create mode 100644 .github/workflows/zig-test.yml diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 00000000..2eac6aab --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,45 @@ +name: wpt + +env: + ARCH: x86_64-linux + +on: + push: + branches: + - main + paths: + - "src/**/*.zig" + - "src/*.zig" + pull_request: + branches: + - main + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + wpt: + name: web platform tests + + runs-on: ubuntu-latest + container: + image: ghcr.io/browsercore/zig-v8:0.11.0 + credentials: + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + token: ${{ secrets.GH_CI_PAT }} + submodules: true + + - name: install v8 + run: | + mkdir -p vendor/v8/${{env.ARCH}}/debug + ln -s /usr/local/lib/libc_v8.a vendor/v8/${{env.ARCH}}/debug/libc_v8.a + + mkdir -p vendor/v8/${{env.ARCH}}/release + ln -s /usr/local/lib/libc_v8.a vendor/v8/${{env.ARCH}}/release/libc_v8.a + + - run: zig build wpt -Dengine=v8 diff --git a/.github/workflows/wpt.yml b/.github/workflows/wpt.yml new file mode 100644 index 00000000..1e11e46a --- /dev/null +++ b/.github/workflows/wpt.yml @@ -0,0 +1,48 @@ +name: wpt + +env: + ARCH: x86_64-linux + +on: + push: + branches: + - main + paths: + - "src/**/*.zig" + - "src/*.zig" + pull_request: + branches: + - main + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + wpt: + name: web platform tests + + runs-on: ubuntu-latest + container: + image: ghcr.io/browsercore/zig-v8:0.11.0 + credentials: + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + token: ${{ secrets.GH_CI_PAT }} + submodules: true + + - name: install v8 + run: | + mkdir -p vendor/v8/${{env.ARCH}}/debug + ln -s /usr/local/lib/libc_v8.a vendor/v8/${{env.ARCH}}/debug/libc_v8.a + + mkdir -p vendor/v8/${{env.ARCH}}/release + ln -s /usr/local/lib/libc_v8.a vendor/v8/${{env.ARCH}}/release/libc_v8.a + + - run: make install-lexbor + - run: make install-netsurf + + - run: zig build wpt -Dengine=v8 diff --git a/.github/workflows/zig-fmt.yml b/.github/workflows/zig-fmt.yml new file mode 100644 index 00000000..385ba8d1 --- /dev/null +++ b/.github/workflows/zig-fmt.yml @@ -0,0 +1,47 @@ +name: zig-fmt + +on: + pull_request: + branches: + - main + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + zig-fmt: + name: zig fmt + runs-on: ubuntu-latest + container: + image: ghcr.io/browsercore/zig:0.11.0 + credentials: + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + outputs: + zig_fmt_errs: ${{ steps.fmt.outputs.zig_fmt_errs }} + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Run zig fmt + id: fmt + run: | + zig fmt --check ./*.zig ./**/*.zig 2> zig-fmt.err > zig-fmt.err2 || echo "Failed" + delimiter="$(openssl rand -hex 8)" + echo "zig_fmt_errs<<${delimiter}" >> "${GITHUB_OUTPUT}" + + if [ -s zig-fmt.err ]; then + echo "// The following errors occurred:" >> "${GITHUB_OUTPUT}" + cat zig-fmt.err >> "${GITHUB_OUTPUT}" + fi + + if [ -s zig-fmt.err2 ]; then + echo "// The following files were not formatted:" >> "${GITHUB_OUTPUT}" + cat zig-fmt.err2 >> "${GITHUB_OUTPUT}" + fi + + echo "${delimiter}" >> "${GITHUB_OUTPUT}" + - name: Fail the job + if: steps.fmt.outputs.zig_fmt_errs != '' + run: exit 1 diff --git a/.github/workflows/zig-test.yml b/.github/workflows/zig-test.yml new file mode 100644 index 00000000..01972d41 --- /dev/null +++ b/.github/workflows/zig-test.yml @@ -0,0 +1,47 @@ +name: zig-test + +env: + ARCH: x86_64-linux + +on: + push: + branches: + - main + paths: + - "src/**/*.zig" + - "src/*.zig" + pull_request: + branches: + - main + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + zig-test: + name: zig test + runs-on: ubuntu-latest + container: + image: ghcr.io/browsercore/zig-v8:0.11.0 + credentials: + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + token: ${{ secrets.GH_CI_PAT }} + submodules: true + + - name: install v8 + run: | + mkdir -p vendor/v8/${{env.ARCH}}/debug + ln -s /usr/local/lib/libc_v8.a vendor/v8/${{env.ARCH}}/debug/libc_v8.a + + mkdir -p vendor/v8/${{env.ARCH}}/release + ln -s /usr/local/lib/libc_v8.a vendor/v8/${{env.ARCH}}/release/libc_v8.a + + - run: make install-lexbor + - run: make install-netsurf + + - run: zig build test -Dengine=v8