forked from WebAssembly/wasi-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
144 lines (134 loc) · 4.58 KB
/
main.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
name: CI
on:
create:
tags:
push:
branches:
- main
- test-sccache
pull_request:
workflow_dispatch:
jobs:
build:
name: Native Build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
dist: dist-ubuntu-latest
- os: macos-latest
dist: dist-macos-latest
- os: windows-latest
dist: dist-windows-latest-x64
msystem: clang64
msys_clang: clang-x86_64
- os: windows-latest
dist: dist-windows-latest-x86
msystem: clang32
msys_clang: clang-i686
env:
SCCACHE_GHA_ENABLED: "true"
steps:
- name: Run sccache-cache
uses: mozilla-actions/[email protected]
- name: Setup `wasmtime` for tests
uses: bytecodealliance/actions/wasmtime/setup@v1
with:
version: "18.0.2"
- name: Setup `wasm-tools` for tests
uses: bytecodealliance/actions/wasm-tools/setup@v1
with:
version: "1.201.0"
- name: Download command adapter for tests
run: curl -f -L --retry 5 -o ${{ runner.temp }}/wasi_snapshot_preview1.command.wasm https://github.com/bytecodealliance/wasmtime/releases/download/v18.0.2/wasi_snapshot_preview1.command.wasm
- uses: actions/checkout@v4
with:
fetch-depth: 0
# We can't use `--depth 1` here sadly because the GNU config
# submodule is not pinned to a particular tag/branch. Please
# bump depth (or even better, the submodule), in case of "error:
# Server does not allow request for unadvertised object" in the
# future.
- run: git submodule update --init --depth 32 --jobs 3
- name: Install ninja (macOS)
run: brew install ninja
if: runner.os == 'macOS'
- name: Install ninja (Linux)
run: sudo apt install ninja-build
if: runner.os == 'Linux'
- name: Install build deps and setup msys2 (Windows)
uses: msys2/setup-msys2@v2
with:
install: >-
base-devel
git
mingw-w64-${{ matrix.msys_clang }}-cmake
mingw-w64-${{ matrix.msys_clang }}-ninja
mingw-w64-${{ matrix.msy_clang }}-toolchain
msystem: ${{ matrix.msystem }}
update: true
release: false
path-type: inherit
if: runner.os == 'Windows'
- name: Build
run: NINJA_FLAGS=-v make package LLVM_CMAKE_FLAGS="-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache"
shell: bash
- name: Run the testsuite
run: NINJA_FLAGS=-v make check RUNTIME=wasmtime ADAPTER=${{ runner.temp }}/wasi_snapshot_preview1.command.wasm WASM_TOOLS=wasm-tools
shell: bash
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
# Upload the dist folder. Give it a name according to the OS it was built for.
name: ${{ matrix.dist }}
path: dist
dockerbuild:
name: Docker Build
runs-on: ubuntu-latest
env:
SCCACHE_GHA_ENABLED: "true"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run sccache-cache
uses: mozilla-actions/[email protected]
- run: git submodule update --init --depth 32 --jobs 3
- uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/setup-qemu-action@v2
- uses: docker/setup-buildx-action@v2
- uses: docker/metadata-action@v4
id: meta
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=schedule
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=sha
- name: Run docker_build script
run: ./docker_build.sh
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
# Upload the dist folder. Give it a name according to the OS it was built for.
name: dist-ubuntu-bionic
path: dist
- name: Build and push wasi-sdk docker image
uses: docker/build-push-action@v3
with:
context: .
file: docker/Dockerfile
push: ${{ github.event_name != 'pull_request' && github.event_name != 'workflow_dispatch' }}
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max