Ubuntu #1824
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
# Main doc: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/introduction-to-github-actions | |
# Runners spec: https://docs.github.com/en/free-pro-team@latest/actions/reference/specifications-for-github-hosted-runners | |
# Glob expressions: https://github.com/actions/toolkit/tree/main/packages/glob | |
name: Ubuntu | |
############################################################################### | |
# Schedule: | |
# - push on any branch whose name matches v** or master | |
# - any pull request | |
############################################################################### | |
on: | |
push: | |
branches: | |
- 2021.02 | |
- 2021.09 | |
- main | |
pull_request: | |
branches: | |
- '**' | |
schedule: | |
- cron: "0 0 * * *" | |
workflow_dispatch: | |
inputs: | |
platform: | |
description: 'Arguments for the platform script:' | |
required: true | |
default: '-extent=x -parallel=p -jobs=2 -large=i -compcert=y -unimath=n -set-switch=y' | |
snap_pick: | |
description: 'Package pick for the snap package:' | |
default: 8.18~2023.11 | |
upload: | |
description: 'Upload artifact to Snap Store? (true/false, default false)' | |
default: false | |
############################################################################### | |
# Platform script options shared among all jobs | |
############################################################################### | |
env: | |
PLATFORM: -extent=x -parallel=p -jobs=2 -large=i -compcert=y -unimath=n -set-switch=y | |
COQREGTESTING: y | |
SNAP_PICK: 8.18~2023.11 | |
############################################################################### | |
# Ubuntu | |
# | |
# CAVEATS: | |
# - you need bubblewrap or the script fails | |
# - build-essential pulls in the C toolchain | |
############################################################################### | |
jobs: | |
Ubuntu_platform: | |
name: Ubuntu | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
variant: | |
# This should contain all picks introduced in the current release + all original picks of all Coq versions | |
- '8.19~2024.01+beta1' | |
- '8.18~2023.11' | |
- '8.18~mc2' | |
- '8.17~2023.08' | |
- '8.16~2022.09' | |
- '8.15~2022.09' | |
- '8.15~2022.04' | |
- '8.14~2022.01' | |
- '8.13~2021.02' | |
- '8.12' | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v4 | |
- name: Set PLATFORM | |
if: ${{ github.event.inputs.platform != '' }} | |
run: echo "PLATFORM=${{ github.event.inputs.platform }}" >> $GITHUB_ENV | |
- name: Install bubblewrap and build-essential | |
run: | | |
sudo apt-get update | |
sudo apt-get install bubblewrap build-essential | |
- name: Run common platform script | |
shell: bash | |
run: ./coq_platform_make.sh -packages=${{matrix.variant}} $PLATFORM -dumplogs | |
- name: Create smoke test kit | |
shell: bash | |
run: | | |
eval $(opam env) | |
shell_scripts/create_smoke_test_kit.sh | |
- name: 'Run Linux smoke test kit' | |
shell: bash | |
run: | | |
eval $(opam env) | |
smoke-test-kit/run-smoke-test.sh | |
- name: 'Upload smoke test kit' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: 'Smoke Test Kit ${{matrix.variant}}' | |
path: smoke-test-kit | |
retention-days: 5 | |
Ubuntu_snap: | |
name: Snap package | |
# Since we build the snap with --destructive-mode, the runner version must match the snap core version | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v4 | |
- name: Set PLATFORM | |
if: ${{ github.event.inputs.platform != '' }} | |
run: echo "PLATFORM=${{ github.event.inputs.platform }}" >> $GITHUB_ENV | |
- name: Set SNAP_PICK | |
if: ${{ github.event.inputs.snap_pick != '' }} | |
run: echo "SNAP_PICK=${{ github.event.inputs.snap_pick }}" >> $GITHUB_ENV | |
- name: Generate snapcraft file | |
run: linux/create_snapcraft_yaml.sh -packages=$SNAP_PICK $PLATFORM | |
- name: Print snapcraft file | |
run: cat snap/snapcraft.yaml | |
- name: Run snapcraft | |
uses: MSoegtropIMC/[email protected] | |
id: build | |
- name: Dump snapcraft logs | |
if: ${{ always() }} | |
run: cat /home/runner/.local/state/snapcraft/log/* | |
- name: Save Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: 'Snap package' | |
path: ${{ steps.build.outputs.snap }} | |
- name: Upload Artifact to the Snap Store | |
if: ${{ github.event.inputs.upload }} | |
uses: snapcore/action-publish@v1 | |
with: | |
store_login: ${{ secrets.STORE_LOGIN }} | |
snap: ${{ steps.build.outputs.snap }} | |
release: edge | |
# We run this one always because the Ubuntu_platform job | |
# has a matrix and contains the flaky dev job | |
# but here we really only need the SNAP_PICK one | |
# | |
# In any case the job will fail fast if it can't download | |
# the snap or the smoke test | |
Ubuntu_smoke: | |
name: Snap package smoke test | |
if: ${{ always() }} | |
needs: [Ubuntu_platform, Ubuntu_snap] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set SNAP_PICK | |
if: ${{ github.event.inputs.snap_pick != '' }} | |
run: echo "SNAP_PICK=${{ github.event.inputs.snap_pick }}" >> $GITHUB_ENV | |
- name: Download Artifact | |
uses: actions/download-artifact@v4 | |
id: download-snap | |
with: | |
name: 'Snap package' | |
- name: 'Download smoke test kit' | |
uses: actions/download-artifact@v4 | |
id: download-smoke | |
with: | |
name: 'Smoke Test Kit ${{ env.SNAP_PICK }}' | |
- name: 'Install Snap' | |
run: | | |
sudo snap install --dangerous ${{ steps.download-snap.outputs.download-path }}/coq-prover_*.snap | |
sudo snap alias coq-prover.coqc coqc | |
sudo snap alias coq-prover.sertop sertop | |
- name: 'Run Smoke Test Kit' | |
run: | | |
cd ${{steps.download-smoke.outputs.download-path}} | |
chmod a+x ./run-smoke-test.sh | |
./run-smoke-test.sh |