Skip to content

CI Artifacts

CI Artifacts #5

name: Build and test
# README:
#
# The semantics for running shell commands in GitHub actions is non-obvious. Please read
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
# before modifying this file. Our strategy is to rely on the built-in (unspecified) shell, and
# explicitly set the shell settings we want (with `set -eo pipefail`) at the beginning of any
# bash script. For more information on these settings, see `man bash`.
#
# GitHub Actions files can be difficult to modify with confidence, because testing changes often
# requires pushing to a branch and running CI remotely. To make this process easier, consider
# the following:
#
# 1) Use Visual Studio Code with the GitHub Actions Extension (github.vscode-github-actions).
# This allows you to check the validity of your action schema and syntax without pushing to a
# branch.
# 2) Use https://github.com/nektos/act to run your CI steps locally. Note this will only work with
# steps run on Linux platforms, as `act` is implemented with Docker containers.
on:
push:
branches: [ main ]
paths-ignore:
- "Docs/**"
- "**.md"
- "README.md"
- "LICENSE"
- ".gitignore"
pull_request:
branches: [ "**" ]
paths-ignore:
- "Docs/**"
- "**.md"
- "README.md"
- "LICENSE"
- ".gitignore"
jobs:
# build-devcontainer-linux:
# name: "Devcontainer: ${{ matrix.host.os }}/${{ matrix.configuration }}"
# strategy:
# fail-fast: false
# matrix:
# host: [
# { type: linux, os: ubuntu-latest,
# build-options: "-v --build-tests -Xswiftc -enable-testing",
# test-options: "-v --enable-code-coverage"
# }
# ]
# configuration: [ "debug", "release" ]
# runs-on: ${{ matrix.host.os }}
# steps:
# - uses: actions/checkout@v3
# - uses: actions/cache@v3
# with:
# path: .build
# key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
# restore-keys: |
# ${{ runner.os }}-spm-
# - name: Build and Test
# uses: devcontainers/[email protected]
# with:
# runCmd: |
# set -eo pipefail
# swift package resolve
# .build/checkouts/Swifty-LLVM/Tools/make-pkgconfig.sh llvm.pc
# export PKG_CONFIG_PATH=$PWD
# swift build -c ${{ matrix.configuration }} ${{ matrix.host.build-options }}
# swift test -c ${{ matrix.configuration }} ${{ matrix.host.test-options }} |
# tee testoutput.txt && (
# (grep -q "[.']EndToEndTests[/. ]test_" testoutput.txt && grep -q "[.']HyloTests[/. ]test_" testoutput.txt) ||
# (echo "error: generated tests failed to run; see
# https://github.com/apple/swift-package-manager/issues/6595" && false) )
# - name: Check code coverage
# uses: mattpolzin/[email protected]
# with:
# SORT_ORDER: +cov
# MINIMUM_COVERAGE: 84
# CODECOV_JSON: .build/${{ matrix.configuration }}/codecov/*.json
build-native-macos:
name: "Native: ${{ matrix.host.os }}/${{ matrix.configuration }}"
strategy:
fail-fast: false
matrix:
host: [
{
type: macos, os: macos-13,
build-options: "-v --build-tests -Xswiftc -enable-testing",
# No coverage support on MacOS
test-options: "-v"
}
]
swift: [
{ version: "5.8" }
]
configuration: [ "debug" ]
# configuration: [ "debug", "release" ]
runs-on: ${{ matrix.host.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: 'true'
- name: Setup swift
uses: swift-actions/setup-swift@v1
with:
swift-version: ${{ matrix.swift.version }}
- run: swift --version
- name: Setup LLVM
uses: KyleMayes/install-llvm-action@v1
with:
version: "15.0"
- run: llvm-config --version
- name: Generate LLVM pkgconfig file
run: |
set -eo pipefail
cd hylo
swift package resolve
.build/checkouts/Swifty-LLVM/Tools/make-pkgconfig.sh llvm.pc
cat llvm.pc
- name: Build (${{ matrix.configuration }})
run: |
set -eo pipefail
export PKG_CONFIG_PATH=$PWD
swift build -c ${{ matrix.configuration }} ${{ matrix.host.build-options }}
- name: Test (${{ matrix.configuration }})
run: |
set -eo pipefail
export PKG_CONFIG_PATH=$PWD
swift test -c ${{ matrix.configuration }} ${{ matrix.host.test-options }} |
tee testoutput.txt && (
(grep -q "[.']EndToEndTests[/. ]test_" testoutput.txt && grep -q "[.']HyloTests[/. ]test_" testoutput.txt) ||
(echo "error: generated tests failed to run; see
https://github.com/apple/swift-package-manager/issues/6595" && false) )
# build-native-windows:
# name: "Native, no testing: windows-latest/release"
# strategy:
# fail-fast: false
# runs-on: windows-latest
# steps:
# - name: Setup swift
# uses: compnerd/gha-setup-swift@main
# with:
# branch: swift-5.8.1-release
# tag: 5.8.1-RELEASE
# - uses: actions/checkout@v3
# - name: Swift version
# run: swift --version
# - name: Set up LLVM 15.0.6
# run: |
# curl.exe -L -O -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}"https://github.com/c3lang/win-llvm/releases/download/llvm_15_0_6/llvm-15.0.6-windows-x86-msvc17-msvcrt.7z
# 7z x llvm-15.0.6-windows-x86-msvc17-msvcrt.7z -oC:\
# Add-Content $env:GITHUB_PATH 'C:\llvm-15.0.6-windows-x86-msvc17-msvcrt\bin'
# - name: Copy LLVM's include and lib to include and lib folder of MSVC
# run: |
# xcopy c:\llvm-15.0.6-windows-x86-msvc17-msvcrt\include\*.* c:\program" "files\microsoft" "visual" "studio\2022\enterprise\vc\tools\msvc\${{ env.VCToolsVersion }}\include\ /s /h
# xcopy c:\llvm-15.0.6-windows-x86-msvc17-msvcrt\lib\*.* c:\program" "files\microsoft" "visual" "studio\2022\enterprise\vc\tools\msvc\${{ env.VCToolsVersion }}\lib\x64\ /s /h
# - run: llvm-config --version
# - name: Build support library
# run: clang -c ./Library/Hylo/LibC.c -o HyloLibC.lib
# - name: Copy support library
# run: xcopy HyloLibC.lib c:\program" "files\microsoft" "visual" "studio\2022\enterprise\vc\tools\msvc\${{ env.VCToolsVersion }}\lib\x64\
# - name: Build (Release)
# id: build
# continue-on-error: true
# run: swift build -v -c release
# - name: Retry on failure
# continue-on-error: false
# if: steps.build.outcome != 'success'
# run: swift build -v -c release