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.
73 lines
2.4 KiB
YAML
73 lines
2.4 KiB
YAML
# This CI job checks whether at least the smoke tests pass for the oldest
|
|
# Go/LLVM version we claim to support.
|
|
|
|
name: Version compatibility test
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- dev
|
|
- release
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
test-compat:
|
|
runs-on: ubuntu-22.04 # this must be a specific version for the apt install below
|
|
env:
|
|
# Oldest versions currently supported by TinyGo
|
|
LLVM: "15"
|
|
Go: "1.25" # when updating this, also update minorMin in builder/config.go
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v6
|
|
with:
|
|
submodules: true
|
|
- name: Install Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: ${{ env.Go }}
|
|
cache: true
|
|
- name: Install LLVM
|
|
run: |
|
|
echo 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-${{ env.LLVM }} main' | sudo tee /etc/apt/sources.list.d/llvm.list
|
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
|
sudo apt-get update
|
|
sudo apt-get install --no-install-recommends -y \
|
|
llvm-${{ env.LLVM }}-dev \
|
|
clang-${{ env.LLVM }} \
|
|
libclang-${{ env.LLVM }}-dev \
|
|
lld-${{ env.LLVM }} \
|
|
binaryen
|
|
- name: Restore LLVM source cache
|
|
uses: actions/cache/restore@v5
|
|
id: cache-llvm-source
|
|
with:
|
|
key: llvm-source-22-linux-compat
|
|
path: llvm-project/compiler-rt
|
|
- name: Download LLVM source
|
|
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
|
|
run: make llvm-source
|
|
- name: Save LLVM source cache
|
|
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/compiler-rt
|
|
- name: Go cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: go-build-${{ env.Go }}-llvm${{ env.LLVM }}-${{ hashFiles('go.sum') }}
|
|
- name: Build TinyGo
|
|
run: go install -tags=llvm${{ env.LLVM }}
|
|
- run: tinygo version
|
|
- run: make gen-device -j4
|
|
- run: go test -tags=llvm${{ env.LLVM }} -short -skip=TestErrors
|
|
- run: make smoketest-quick XTENSA=0
|