ci: switch to GitHub Actions for Windows builds
GitHub Actions is faster and much better integrated into GitHub than Azure Pipelines, and is in general easier to use. Therefore, switch to GitHub Actions for our Windows builds and tests.
Этот коммит содержится в:
родитель
fb6571e405
коммит
de6f831983
2 изменённых файлов: 85 добавлений и 88 удалений
85
.github/workflows/windows.yml
предоставленный
Обычный файл
85
.github/workflows/windows.yml
предоставленный
Обычный файл
|
@ -0,0 +1,85 @@
|
||||||
|
name: Windows
|
||||||
|
|
||||||
|
on: push
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-windows:
|
||||||
|
runs-on: windows-2016
|
||||||
|
steps:
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: '1.17'
|
||||||
|
- name: Install QEMU
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
choco install qemu --version=2020.06.12
|
||||||
|
echo "C:\Program Files\QEMU" >> $GITHUB_PATH
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
- name: Cache LLVM source
|
||||||
|
uses: actions/cache@v2
|
||||||
|
id: cache-llvm-source
|
||||||
|
with:
|
||||||
|
key: llvm-source-11-windows-v1
|
||||||
|
path: |
|
||||||
|
llvm-project/clang/lib/Headers
|
||||||
|
llvm-project/clang/include
|
||||||
|
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: Cache LLVM build
|
||||||
|
uses: actions/cache@v2
|
||||||
|
id: cache-llvm-build
|
||||||
|
with:
|
||||||
|
key: llvm-build-11-windows-v2
|
||||||
|
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
|
||||||
|
# install dependencies
|
||||||
|
choco install ninja
|
||||||
|
# build!
|
||||||
|
make llvm-build
|
||||||
|
# Remove unnecessary object files (to reduce cache size).
|
||||||
|
find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \;
|
||||||
|
- name: Cache wasi-libc sysroot
|
||||||
|
uses: actions/cache@v2
|
||||||
|
id: cache-wasi-libc
|
||||||
|
with:
|
||||||
|
key: wasi-libc-sysroot-v1
|
||||||
|
path: lib/wasi-libc/sysroot
|
||||||
|
- name: Build wasi-libc
|
||||||
|
if: steps.cache-wasi-libc.outputs.cache-hit != 'true'
|
||||||
|
run: make wasi-libc
|
||||||
|
- name: Test TinyGo
|
||||||
|
shell: bash
|
||||||
|
run: make test
|
||||||
|
- name: Build TinyGo release tarball
|
||||||
|
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@v2
|
||||||
|
with:
|
||||||
|
name: release-double-zipped
|
||||||
|
path: build/release/release.zip
|
||||||
|
- name: Smoke tests
|
||||||
|
shell: bash
|
||||||
|
run: make smoketest TINYGO=build/tinygo AVR=0 XTENSA=0
|
|
@ -1,88 +0,0 @@
|
||||||
# Avoid lengthy LLVM rebuilds on each newly pushed branch. Pull requests will
|
|
||||||
# be built anyway.
|
|
||||||
trigger:
|
|
||||||
- release
|
|
||||||
- dev
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
- job: Build
|
|
||||||
timeoutInMinutes: 240 # 4h
|
|
||||||
pool:
|
|
||||||
vmImage: 'VS2017-Win2016'
|
|
||||||
steps:
|
|
||||||
- task: GoTool@0
|
|
||||||
inputs:
|
|
||||||
version: '1.17'
|
|
||||||
- checkout: self
|
|
||||||
fetchDepth: 1
|
|
||||||
- task: Cache@2
|
|
||||||
displayName: Cache LLVM source
|
|
||||||
inputs:
|
|
||||||
key: llvm-source-11-windows-v1
|
|
||||||
path: llvm-project
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: Download LLVM source
|
|
||||||
inputs:
|
|
||||||
targetType: inline
|
|
||||||
script: make llvm-source
|
|
||||||
- task: CacheBeta@0
|
|
||||||
displayName: Cache LLVM build
|
|
||||||
inputs:
|
|
||||||
key: llvm-build-11-windows-v5
|
|
||||||
path: llvm-build
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: Build LLVM
|
|
||||||
inputs:
|
|
||||||
targetType: inline
|
|
||||||
script: |
|
|
||||||
if [ ! -f llvm-build/lib/liblldELF.a ]
|
|
||||||
then
|
|
||||||
# install dependencies
|
|
||||||
choco install ninja
|
|
||||||
# hack ninja to use fewer jobs
|
|
||||||
echo -e 'C:\\ProgramData\\Chocolatey\\bin\\ninja -j4 %*' > /usr/bin/ninja.bat
|
|
||||||
# build!
|
|
||||||
make llvm-build
|
|
||||||
fi
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: Install QEMU
|
|
||||||
inputs:
|
|
||||||
targetType: inline
|
|
||||||
script: choco install qemu --version=2020.06.12
|
|
||||||
- task: CacheBeta@0
|
|
||||||
displayName: Cache wasi-libc sysroot
|
|
||||||
inputs:
|
|
||||||
key: wasi-libc-sysroot-v4
|
|
||||||
path: lib/wasi-libc/sysroot
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: Build wasi-libc
|
|
||||||
inputs:
|
|
||||||
targetType: inline
|
|
||||||
script: PATH=/usr/bin:$PATH make wasi-libc
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: Test TinyGo
|
|
||||||
inputs:
|
|
||||||
targetType: inline
|
|
||||||
script: |
|
|
||||||
export PATH="$PATH:./llvm-build/bin:/c/Program Files/qemu"
|
|
||||||
unset GOROOT
|
|
||||||
make test
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: Build TinyGo release tarball
|
|
||||||
inputs:
|
|
||||||
targetType: inline
|
|
||||||
script: |
|
|
||||||
export PATH="$PATH:./llvm-build/bin:/c/Program Files/qemu"
|
|
||||||
unset GOROOT
|
|
||||||
make build/release -j4
|
|
||||||
- publish: $(System.DefaultWorkingDirectory)/build/release/tinygo
|
|
||||||
displayName: Publish zip as artifact
|
|
||||||
artifact: tinygo
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: Smoke tests
|
|
||||||
inputs:
|
|
||||||
targetType: inline
|
|
||||||
script: |
|
|
||||||
export PATH="$PATH:./llvm-build/bin:/c/Program Files/qemu"
|
|
||||||
unset GOROOT
|
|
||||||
make smoketest TINYGO=build/tinygo AVR=0 XTENSA=0
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче