Skip to content

Ubuntu

Ubuntu #120

Workflow file for this run

# 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
- tactician
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@v3
- 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@v3
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@v3
- 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@v3
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@v3
id: download-snap
with:
name: 'Snap package'
- name: 'Download smoke test kit'
uses: actions/download-artifact@v3
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