Tspl 2024 10 11 #863
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 | |
on: | |
push: | |
branches: | |
- dev | |
tags: | |
- "*" | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
merge_group: | |
env: | |
DEFAULT_AGDA_VERSION: "2.7.0" | |
DEFAULT_AGDA_STDLIB_VERSION: "2.1" | |
DEFAULT_GHC_VERSION: "9.4.8" | |
DEFAULT_CABAL_VERSION: "3.10.1.0" | |
DEFAULT_EPUBCHECK_VERSION: "4.2.6" | |
NOKOGIRI_USE_SYSTEM_LIBRARIES: true | |
# Use PowerShell by default | |
defaults: | |
run: | |
shell: pwsh | |
# Limit concurrent runs to one per branch | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
# Default versions | |
- name: "Build on Linux" | |
- name: "Build on macOS" | |
os: macOS-latest | |
- name: "Build on Windows" | |
os: windows-latest | |
# Older versions of Agda | |
- name: "Build with older Agda 2.6.4.3" | |
agda-version: "2.6.4.3" | |
agda-stdlib-version: "2.0" | |
# 2024-09-05: | |
# Version 2.0 of the standard library breaks backwards compatibility. | |
# Therefore, versions of Agda before 2.6.4.3 are no longer supported. | |
# | |
# - name: "Build with older Agda 2.6.4.3" | |
# agda-version: "2.6.4.3" | |
# agda-stdlib-version: "1.7.2" | |
# - name: "Build with older Agda 2.6.2.2" | |
# agda-version: "2.6.2.2" | |
# agda-stdlib-version: "1.7.1" | |
# - name: "Build with older Agda 2.6.2.1" | |
# agda-version: "2.6.2.1" | |
# agda-stdlib-version: "1.7.1" | |
# - name: "Build with older Agda 2.6.2" | |
# agda-version: "2.6.2" | |
# agda-stdlib-version: "1.7.1" | |
# - name: "Build with older Agda 2.6.1.3" | |
# agda-version: "2.6.1.3" | |
# agda-stdlib-version: "1.6" | |
# Newer versions of GHC | |
- name: "Build with newer GHC 9.8.2" | |
ghc-version: "9.8.2" | |
- name: "Build with newer GHC 9.6.6" | |
ghc-version: "9.6.6" | |
# Older versions of GHC | |
- name: "Build with older GHC 9.2.8" | |
ghc-version: "9.2.8" | |
- name: "Build with older GHC 9.0.2" | |
ghc-version: "9.0.2" | |
- name: "Build with older GHC 8.10.7" | |
ghc-version: "8.10.7" | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os || 'ubuntu-latest' }} | |
continue-on-error: ${{ matrix.experimental || false }} | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
with: | |
submodules: "true" | |
- name: "Setup Haskell" | |
uses: ./.github/actions/setup-haskell | |
with: | |
ghc-version: "${{ matrix.ghc-version || env.DEFAULT_GHC_VERSION }}" | |
cabal-version: "${{ env.DEFAULT_CABAL_VERSION }}" | |
- name: "Setup Agda" | |
uses: wenkokke/setup-agda@v2 | |
with: | |
agda-version: "${{ matrix.agda-version || env.DEFAULT_AGDA_VERSION }}" | |
force-no-build: "true" | |
- name: "Setup Node" | |
uses: ./.github/actions/setup-node | |
- name: "Setup HTMLProofer" | |
if: runner.os != 'Windows' | |
uses: ./.github/actions/setup-htmlproofer | |
# depends on Gemfile | |
- name: "Setup EPUBCheck" | |
uses: ./.github/actions/setup-epubcheck | |
id: setup-epubcheck | |
with: | |
epubcheck-version: "${{ env.DEFAULT_EPUBCHECK_VERSION }}" | |
- name: "Setup Calibre" | |
uses: ./.github/actions/setup-calibre | |
- name: "Cache build" | |
uses: actions/cache@v4 | |
with: | |
path: _cache | |
key: build-${{ runner.os }}-${{ secrets.BUILD_CACHE_VERSION }} | |
- name: "Set standard-library version" | |
if: matrix.agda-stdlib-version && matrix.agda-stdlib-version != env.DEFAULT_AGDA_STDLIB_VERSION | |
run: | | |
git fetch origin v${{ matrix.agda-stdlib-version }}:v${{ matrix.agda-stdlib-version }} --depth=1 | |
git checkout v${{ matrix.agda-stdlib-version }} | |
working-directory: standard-library | |
- name: "Build" | |
run: make build | |
- name: "Test with HTML-validate" | |
run: make test-html-validate | |
- name: "Test with HTMLProofer" | |
if: runner.os != 'Windows' | |
run: make test-htmlproofer | |
- name: "Test with EPUBCheck" | |
run: make test-epubcheck | |
env: | |
EPUBCHECK: "java -jar ${{ steps.setup-epubcheck.outputs.epubcheck-jar-path }}" | |
- name: "Upload latest artifact" | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "Website HEAD ${{ runner.os }} Agda-${{ matrix.agda-version || env.DEFAULT_AGDA_VERSION }} GHC-${{ matrix.ghc-version || env.DEFAULT_GHC_VERSION }}" | |
path: "_site" | |
if-no-files-found: "error" | |
publish: | |
name: Publish to GitHub Pages | |
runs-on: ubuntu-latest | |
concurrency: ci-${{ github.ref }} | |
needs: [build] | |
if: github.event_name == 'push' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "true" | |
- name: Download latest artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: "Website HEAD Linux Agda-${{ env.DEFAULT_AGDA_VERSION }} GHC-${{ env.DEFAULT_GHC_VERSION }}" | |
path: "site" | |
- uses: ./.github/actions/download-release | |
with: | |
plfa-version: "19.08" | |
path: "site" | |
- uses: ./.github/actions/download-release | |
with: | |
plfa-version: "20.07" | |
path: "site" | |
- uses: ./.github/actions/download-release | |
with: | |
plfa-version: "22.08" | |
path: "site" | |
- name: Publish to GitHub Pages | |
uses: JamesIves/[email protected] | |
with: | |
branch: web | |
folder: "site" | |
release: | |
name: Publish to GitHub Releases | |
runs-on: ubuntu-latest | |
concurrency: ci-${{ github.ref }} | |
needs: [build] | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "true" | |
- name: Setup BumpVer | |
id: setup-bumpver | |
uses: ./.github/actions/setup-bumpver | |
- name: Get release notes | |
run: | | |
Get-Content ./web/posts/*-release-notes-${{ steps.setup-bumpver.outputs.current-version }}.md ` | |
| Select-Object -Skip 3 ` | |
| Out-File -FilePath ${{ github.workspace }}/release-notes-${{ steps.setup-bumpver.outputs.current-version }}.md -Encoding utf8 | |
shell: pwsh | |
- name: Download latest artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: "Website HEAD Linux Agda-${{ env.DEFAULT_AGDA_VERSION }} GHC-${{ env.DEFAULT_GHC_VERSION }}" | |
path: "site" | |
- name: Build Website.zip | |
run: | | |
Compress-Archive -Path "site/*" -DestinationPath Website.zip | |
shell: pwsh | |
- name: Create GitHub Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: Website.zip | |
body_path: ${{ github.workspace }}/release-notes-${{ steps.setup-bumpver.outputs.current-version }}.md | |
fail_on_unmatched_files: true |