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.
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-${{ hashFiles('llvm-version.txt') }}
|
|
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
|