Merge pull request #745 from mieszko/export-unsafe-bypass-wire #128
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
# Trigger the workflow on push or pull request | |
on: [ push, pull_request ] | |
jobs: | |
# ------------------------------ | |
# Basic linting requirements for new commits | |
build-check-src: | |
name: "Check: code cleanliness" | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check tabs and whitespace | |
shell: bash | |
run: ".github/workflows/check_whitespace.sh" | |
build-check-testsuite: | |
name: "Check: testsuite lint" | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check CONFDIR | |
run: | | |
cd testsuite | |
../.github/workflows/check_confdir.py | |
../.github/workflows/check_symlinks.py | |
# ------------------------------ | |
# Builds for release, using a reliable and stable version of GHC | |
build-and-test-ubuntu: | |
strategy: | |
matrix: | |
os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04 ] | |
fail-fast: false | |
name: "Build/Test: ${{ matrix.os }}" | |
uses: ./.github/workflows/build-and-test-ubuntu.yml | |
with: | |
os: ${{ matrix.os }} | |
ghc_version: 9.6.6 | |
hls_version: 2.9.0.1 | |
secrets: inherit | |
build-and-test-macos: | |
strategy: | |
matrix: | |
os: [ macos-13, macos-14, macos-15 ] | |
fail-fast: false | |
name: "Build/Test: ${{ matrix.os }}" | |
uses: ./.github/workflows/build-and-test-macos.yml | |
with: | |
os: ${{ matrix.os }} | |
ghc_version: 9.6.6 | |
hls_version: 2.9.0.1 | |
secrets: inherit | |
# ------------------------------ | |
# Tests using other recent versions of GHC, particularly newer ones, | |
# in anticipation of upgrading the release builds to that version | |
build-and-test-ghc-ubuntu: | |
strategy: | |
matrix: | |
ghc: | |
- version: 9.4.8 | |
hls: 2.7.0.0 | |
- version: 9.8.2 | |
hls: 2.7.0.0 | |
- version: 9.10.1 | |
hls: | |
name: "Build/Test: GHC Ubuntu" | |
uses: ./.github/workflows/build-and-test-ubuntu.yml | |
with: | |
os: ubuntu-22.04 | |
ghc_version: ${{ matrix.ghc.version }} | |
hls_version: ${{ matrix.ghc.hls }} | |
secrets: inherit | |
build-and-test-ghc-macos: | |
strategy: | |
matrix: | |
ghc: | |
- version: 9.4.8 | |
hls: 2.7.0.0 | |
- version: 9.8.2 | |
hls: 2.7.0.0 | |
- version: 9.10.1 | |
hls: | |
name: "Build/Test: GHC macOS" | |
uses: ./.github/workflows/build-and-test-macos.yml | |
with: | |
os: macos-14 | |
ghc_version: ${{ matrix.ghc.version }} | |
hls_version: ${{ matrix.ghc.hls }} | |
secrets: inherit | |
# ------------------------------ | |
# Test the building of documentation | |
build-doc-ubuntu: | |
strategy: | |
matrix: | |
os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04 ] | |
fail-fast: false | |
name: "Build doc: ${{ matrix.os }}" | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
shell: bash | |
run: "sudo .github/workflows/install_dependencies_doc_ubuntu.sh" | |
- name: Build | |
run: | | |
make -j3 install-doc | |
tar czf inst.tar.gz inst | |
# The next two actions upload the PDFs as an artifact that can be downloaded. | |
# We provide two versions: one for release packaging and one for users. | |
# This is because the GitHub download will provide the artifact as a zip-file, | |
# even if the artifact itself is just one file: | |
# https://github.com/actions/upload-artifact/issues/3 | |
# https://github.com/actions/upload-artifact/issues/14 | |
# It is inconvenient for users to access PDFs inside a tarfile inside a zipfile, | |
# therefore we provide an option without the tarfile layer. | |
- name: Upload artifact | |
# This artifact (PDFs inside inst.tar.gz inside artifact.zip) is for release packaging. | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }} build doc | |
path: inst.tar.gz | |
- name: Upload doc not tar | |
# This artifact (PDFs inside artifact.zip) is for viewing the built documents. | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{matrix.os}}-doc-not-tar | |
path: inst/doc | |
build-doc-macOS: | |
strategy: | |
matrix: | |
os: [ macos-13, macos-14, macos-15 ] | |
fail-fast: false | |
name: "Build doc: ${{ matrix.os }}" | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
shell: bash | |
run: ".github/workflows/install_dependencies_doc_macos.sh" | |
- name: Build | |
run: | | |
# Brew install of mactex doesn't update the path until a new shell is opened | |
export PATH=/Library/TeX/texbin/:$PATH | |
make -j3 install-doc | |
tar czf inst.tar.gz inst | |
# The next two actions upload the PDFs as an artifact that can be downloaded. | |
# We provide two versions: one for release packaging and one for users. | |
# This is because the GitHub download will provide the artifact as a zip-file, | |
# even if the artifact itself is just one file: | |
# https://github.com/actions/upload-artifact/issues/3 | |
# https://github.com/actions/upload-artifact/issues/14 | |
# It is inconvenient for users to access PDFs inside a tarfile inside a zipfile, | |
# therefore we provide an option without the tarfile layer. | |
- name: Upload artifact | |
# This artifact (PDFs inside inst.tar.gz inside artifact.zip) is for release packaging. | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }} build doc | |
path: inst.tar.gz | |
- name: Upload doc not tar | |
# This artifact (PDFs inside artifact.zip) is for viewing the built documents. | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{matrix.os}}-doc-not-tar | |
path: inst/doc | |
# ------------------------------ | |
# Build platform-generic documents for releases | |
build-releasenotes-ubuntu: | |
# Release Notes only need to be built once, so we build on recent | |
# Ubuntu, not Mac OS. Later, the release script will copy the | |
# generated release notes to all release tarballs. | |
strategy: | |
matrix: | |
os: [ ubuntu-22.04 ] | |
fail-fast: false | |
name: "Build releasenotes: ${{ matrix.os }}" | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
shell: bash | |
run: "sudo .github/workflows/install_dependencies_releasenotes_ubuntu.sh" | |
- name: Build | |
run: | | |
make install-release | |
tar czf inst.tar.gz inst | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }} releasenotes | |
path: inst.tar.gz |