mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-31 17:59:03 +00:00
421d98b248
The Actions cache of the repository was at 10.24 GB against a quota of 10 GB, so GitHub removed entries by least recent use. The LLVM entries were among the first to go, and CI then built LLVM again although the LLVM version did not change. The Docker buildx layer blobs held 6.0 GB of the quota. All LLVM caches together held 1.97 GB. Move the Docker layer cache to a registry cache in GHCR, which does not use the Actions quota. Both jobs have the necessary permission and login already. Pin the LLVM commit in llvm-version.txt and fetch that commit, in place of a clone of the branch tip tinygo_22.x. Add a hash of that file to each LLVM cache key, so a change of the LLVM version invalidates the caches and no other change does. Also rename the LLVM image tags from llvm-20 to llvm-22.
189 lines
6.0 KiB
YAML
189 lines
6.0 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-${{ hashFiles('llvm-version.txt') }}
|
|
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-${{ hashFiles('llvm-version.txt') }}
|
|
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
|