aboutsummaryrefslogtreecommitdiffhomepage
path: root/.github
diff options
context:
space:
mode:
authorAyke van Laethem <[email protected]>2021-10-04 00:24:22 +0200
committerRon Evans <[email protected]>2021-11-04 13:54:21 +0100
commitde6f83198346dfd4c7498a153baa8b17fc680931 (patch)
tree8efaee993c181e04284f11edc278522f314ddf1d /.github
parentfb6571e405afb8de121230f08b0e6a092a05f88d (diff)
downloadtinygo-de6f83198346dfd4c7498a153baa8b17fc680931.tar.gz
tinygo-de6f83198346dfd4c7498a153baa8b17fc680931.zip
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.
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/windows.yml85
1 files changed, 85 insertions, 0 deletions
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
new file mode 100644
index 000000000..7dc5adad0
--- /dev/null
+++ b/.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