
The idea here is as follows: - Run all Linux and cross compilation tests in the asser-test-linux job. - Only run native tests on MacOS and Windows. This reduces testing time on MacOS and Windows, which are generally more expensive in CI. Also, by not duplicating tests in Windows and MacOS we can reduce overall CI usage a bit. I've also changed the assert-test-linux job a bit to so that the tests that are more likely to break and the tests that are only run in assert-test-linux are run first.
98 строки
3 КиБ
YAML
98 строки
3 КиБ
YAML
name: Windows
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- dev
|
|
- release
|
|
|
|
jobs:
|
|
build-windows:
|
|
runs-on: windows-2019
|
|
steps:
|
|
- name: Install Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '1.17'
|
|
- name: Install Ninja
|
|
shell: bash
|
|
run: |
|
|
choco install ninja
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Cache LLVM source
|
|
uses: actions/cache@v2
|
|
id: cache-llvm-source
|
|
with:
|
|
key: llvm-source-11-windows-v1
|
|
path: |
|
|
llvm-project/clang/lib/Headers
|
|
llvm-project/clang/include
|
|
llvm-project/lld/include
|
|
llvm-project/llvm/include
|
|
- name: Download LLVM source
|
|
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
|
|
run: make llvm-source
|
|
- name: Cache LLVM build
|
|
uses: actions/cache@v2
|
|
id: cache-llvm-build
|
|
with:
|
|
key: llvm-build-11-windows-v2
|
|
path: llvm-build
|
|
- name: Build LLVM
|
|
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
|
|
shell: bash
|
|
run: |
|
|
# fetch LLVM source
|
|
rm -rf llvm-project
|
|
make llvm-source
|
|
# build!
|
|
make llvm-build
|
|
# Remove unnecessary object files (to reduce cache size).
|
|
find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \;
|
|
- name: Cache wasi-libc sysroot
|
|
uses: actions/cache@v2
|
|
id: cache-wasi-libc
|
|
with:
|
|
key: wasi-libc-sysroot-v1
|
|
path: lib/wasi-libc/sysroot
|
|
- name: Build wasi-libc
|
|
if: steps.cache-wasi-libc.outputs.cache-hit != 'true'
|
|
run: make wasi-libc
|
|
- name: Cache Binaryen
|
|
uses: actions/cache@v2
|
|
id: cache-binaryen
|
|
with:
|
|
key: binaryen-v1
|
|
path: build/binaryen
|
|
- name: Build Binaryen
|
|
if: steps.cache-binaryen.outputs.cache-hit != 'true'
|
|
run: make binaryen
|
|
- name: Test TinyGo
|
|
shell: bash
|
|
run: make test GOTESTFLAGS="-v -short"
|
|
- name: Build TinyGo release tarball
|
|
run: make build/release -j4
|
|
- name: Make release artifact
|
|
shell: bash
|
|
working-directory: build/release
|
|
run: 7z -tzip a release.zip tinygo
|
|
- name: Publish release artifact
|
|
# Note: this release artifact is double-zipped, see:
|
|
# https://github.com/actions/upload-artifact/issues/39
|
|
# We can essentially pick one of these:
|
|
# - have a dobule-zipped artifact when downloaded from the UI
|
|
# - have a very slow artifact upload
|
|
# We're doing the former here, to keep artifact uploads fast.
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: release-double-zipped
|
|
path: build/release/release.zip
|
|
- name: Smoke tests
|
|
shell: bash
|
|
run: make smoketest TINYGO=build/tinygo AVR=0 XTENSA=0
|
|
- name: Test stdlib packages
|
|
run: make tinygo-test
|