mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-09-01 18:29:03 +00:00
e083ed31e6
The smoke test ran six times for each push: twice on Linux, twice on macOS, once on Windows, and once in the compatibility test. Together that was about 97 minutes of the CI time. The smoke test checks that TinyGo can build a binary for each board. That does not depend on the host OS. The only part that does is one build behind a Windows check. Add a smoketest-linux job that runs the full set, split across four runners that use the tarball from the build-linux job. The groups are balanced with the measured build time of each group. Remove the full smoke test from test-linux-build, which the new job replaces, and use smoketest-quick for the other four jobs. Expected result: about 55 to 39 minutes for the slowest workflow, and about 97 to 35 minutes of total smoke test time.
189 lines
5.9 KiB
YAML
189 lines
5.9 KiB
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
|
|
outputs:
|
|
version: ${{ steps.version.outputs.version }}
|
|
steps:
|
|
- uses: MinoruSekine/setup-scoop@v4
|
|
- name: Install Dependencies
|
|
shell: bash
|
|
run: |
|
|
scoop config use_external_7zip true
|
|
scoop install ninja binaryen
|
|
- name: Checkout
|
|
uses: actions/checkout@v6
|
|
with:
|
|
submodules: true
|
|
- name: Extract TinyGo version
|
|
id: version
|
|
shell: bash
|
|
run: ./.github/workflows/tinygo-extract-version.sh | tee -a "$GITHUB_OUTPUT"
|
|
- name: Install Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: '1.27.0'
|
|
cache: true
|
|
- name: Restore cached LLVM source
|
|
uses: actions/cache/restore@v5
|
|
id: cache-llvm-source
|
|
with:
|
|
key: llvm-source-22-windows-v3
|
|
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@v5
|
|
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@v5
|
|
id: cache-llvm-build
|
|
with:
|
|
key: llvm-build-22-windows-v1
|
|
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@v5
|
|
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
|
|
with:
|
|
key: ${{ steps.cache-llvm-build.outputs.cache-primary-key }}
|
|
path: llvm-build
|
|
- name: Cache Go cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
key: go-cache-windows-v3-${{ hashFiles('go.mod') }}
|
|
path: |
|
|
C:/Users/runneradmin/AppData/Local/go-build
|
|
C:/Users/runneradmin/go/pkg/mod
|
|
- name: Install wasmtime
|
|
run: |
|
|
scoop config use_external_7zip true
|
|
scoop install wasmtime@29.0.1
|
|
- name: make gen-device
|
|
run: make -j3 gen-device
|
|
- name: Test TinyGo
|
|
shell: bash
|
|
run: make test GOTESTFLAGS="-only-current-os"
|
|
- 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 tinygo${{ steps.version.outputs.version }}.windows-amd64.zip tinygo
|
|
- name: Publish release artifact
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: tinygo${{ steps.version.outputs.version }}.windows-amd64.zip
|
|
path: build/release/tinygo${{ steps.version.outputs.version }}.windows-amd64.zip
|
|
archive: false
|
|
|
|
smoke-test-windows:
|
|
runs-on: windows-2022
|
|
needs: build-windows
|
|
steps:
|
|
- uses: MinoruSekine/setup-scoop@v4
|
|
- name: Install Dependencies
|
|
shell: bash
|
|
run: |
|
|
scoop config use_external_7zip true
|
|
scoop install binaryen
|
|
- name: Checkout
|
|
uses: actions/checkout@v6
|
|
- name: Install Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: '1.27.0'
|
|
cache: true
|
|
- name: Download TinyGo build
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: tinygo${{ needs.build-windows.outputs.version }}.windows-amd64.zip
|
|
path: build/
|
|
# This build is already unzipped.
|
|
- name: Smoke tests
|
|
shell: bash
|
|
run: make smoketest-quick TINYGO=$(PWD)/build/tinygo/bin/tinygo
|
|
|
|
stdlib-test-windows:
|
|
runs-on: windows-2022
|
|
needs: build-windows
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v6
|
|
- name: Install Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: '1.27.0'
|
|
cache: true
|
|
- name: Download TinyGo build
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: tinygo${{ needs.build-windows.outputs.version }}.windows-amd64.zip
|
|
path: build/
|
|
# This build is already unzipped.
|
|
- 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:
|
|
- uses: MinoruSekine/setup-scoop@v4
|
|
- name: Install Dependencies
|
|
shell: bash
|
|
run: |
|
|
scoop config use_external_7zip true
|
|
scoop install binaryen wasmtime@29.0.1
|
|
- name: Checkout
|
|
uses: actions/checkout@v6
|
|
- name: Install Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: '1.27.0'
|
|
cache: true
|
|
- name: Download TinyGo build
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: tinygo${{ needs.build-windows.outputs.version }}.windows-amd64.zip
|
|
path: build/
|
|
# This build is already unzipped.
|
|
- name: Test stdlib packages on wasip1
|
|
run: make tinygo-test-wasip1-fast TINYGO=$(PWD)/build/tinygo/bin/tinygo
|