build: switch GH actions builds to use Go 1.21 final release #3904
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Windows | |
on: | |
pull_request: | |
push: | |
branches: | |
- dev | |
- release | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-windows: | |
runs-on: windows-2022 | |
steps: | |
- name: Configure pagefile | |
uses: al-cheb/[email protected] | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- uses: brechtm/setup-scoop@v2 | |
with: | |
scoop_update: 'false' | |
- name: Install Dependencies | |
shell: bash | |
run: | | |
scoop install ninja binaryen | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Restore cached LLVM source | |
uses: actions/cache/restore@v3 | |
id: cache-llvm-source | |
with: | |
key: llvm-source-15-windows-v4 | |
path: | | |
llvm-project/clang/lib/Headers | |
llvm-project/clang/include | |
llvm-project/compiler-rt | |
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: Save cached LLVM source | |
uses: actions/cache/save@v3 | |
if: steps.cache-llvm-source.outputs.cache-hit != 'true' | |
with: | |
key: ${{ steps.cache-llvm-source.outputs.cache-primary-key }} | |
path: | | |
llvm-project/clang/lib/Headers | |
llvm-project/clang/include | |
llvm-project/compiler-rt | |
llvm-project/lld/include | |
llvm-project/llvm/include | |
- name: Restore cached LLVM build | |
uses: actions/cache/restore@v3 | |
id: cache-llvm-build | |
with: | |
key: llvm-build-15-windows-v6 | |
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 CCACHE=OFF | |
# Remove unnecessary object files (to reduce cache size). | |
find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \; | |
- name: Save cached LLVM build | |
uses: actions/cache/save@v3 | |
if: steps.cache-llvm-build.outputs.cache-hit != 'true' | |
with: | |
key: ${{ steps.cache-llvm-build.outputs.cache-primary-key }} | |
path: llvm-build | |
- name: Cache wasi-libc sysroot | |
uses: actions/cache@v3 | |
id: cache-wasi-libc | |
with: | |
key: wasi-libc-sysroot-v4 | |
path: lib/wasi-libc/sysroot | |
- name: Build wasi-libc | |
if: steps.cache-wasi-libc.outputs.cache-hit != 'true' | |
run: make wasi-libc | |
- name: Install wasmtime | |
run: | | |
scoop install wasmtime | |
- name: make gen-device | |
run: make -j3 gen-device | |
- name: Test TinyGo | |
shell: bash | |
run: make test GOTESTFLAGS="-short" | |
- name: Build TinyGo release tarball | |
shell: bash | |
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@v3 | |
with: | |
name: windows-amd64-double-zipped | |
path: build/release/release.zip | |
smoke-test-windows: | |
runs-on: windows-2022 | |
needs: build-windows | |
steps: | |
- name: Configure pagefile | |
uses: al-cheb/[email protected] | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- uses: brechtm/setup-scoop@v2 | |
with: | |
scoop_update: 'false' | |
- name: Install Dependencies | |
shell: bash | |
run: | | |
scoop install binaryen | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Download TinyGo build | |
uses: actions/download-artifact@v2 | |
with: | |
name: windows-amd64-double-zipped | |
path: build/ | |
- name: Unzip TinyGo build | |
shell: bash | |
working-directory: build | |
run: 7z x release.zip -r | |
- name: Smoke tests | |
shell: bash | |
run: make smoketest TINYGO=$(PWD)/build/tinygo/bin/tinygo | |
stdlib-test-windows: | |
runs-on: windows-2022 | |
needs: build-windows | |
steps: | |
- name: Configure pagefile | |
uses: al-cheb/[email protected] | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Download TinyGo build | |
uses: actions/download-artifact@v2 | |
with: | |
name: windows-amd64-double-zipped | |
path: build/ | |
- name: Unzip TinyGo build | |
shell: bash | |
working-directory: build | |
run: 7z x release.zip -r | |
- name: Test stdlib packages | |
run: make tinygo-test TINYGO=$(PWD)/build/tinygo/bin/tinygo | |
stdlib-wasi-test-windows: | |
runs-on: windows-2022 | |
needs: build-windows | |
steps: | |
- name: Configure pagefile | |
uses: al-cheb/[email protected] | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- uses: brechtm/setup-scoop@v2 | |
with: | |
scoop_update: 'false' | |
- name: Install Dependencies | |
shell: bash | |
run: | | |
scoop install binaryen wasmtime | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Download TinyGo build | |
uses: actions/download-artifact@v2 | |
with: | |
name: windows-amd64-double-zipped | |
path: build/ | |
- name: Unzip TinyGo build | |
shell: bash | |
working-directory: build | |
run: 7z x release.zip -r | |
- name: Test stdlib packages on wasi | |
run: make tinygo-test-wasi-fast TINYGO=$(PWD)/build/tinygo/bin/tinygo |