
The Linux artifacts have clear names (linux-amd64-double-zipped etc), but the MacOS and Windows ones didn't. This patch renames these artifact names to be more readable, especially when downloading the artifacts.
224 строки
6,7 КиБ
YAML
224 строки
6,7 КиБ
YAML
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/configure-pagefile-action@v1.3
|
|
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.20'
|
|
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/configure-pagefile-action@v1.3
|
|
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.20'
|
|
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/configure-pagefile-action@v1.3
|
|
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.20'
|
|
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/configure-pagefile-action@v1.3
|
|
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.20'
|
|
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
|