Skip to content

Steel CI

Steel CI #349

Workflow file for this run

name: Steel CI
on:
push:
branches-ignore:
- _**
pull_request:
workflow_dispatch:
schedule:
- cron: '0 2 * * *' # 2AM UTC
defaults:
run:
shell: bash
jobs:
ci:
runs-on: ubuntu-latest
container: mtzguido/dev-base
steps:
- name: Cleanup
run: sudo find . -delete
- run: echo "HOME=/home/user" | sudo tee -a $GITHUB_ENV
- uses: mtzguido/set-opam-env@master
- name: 'Nightly: check the (slow) proofs'
if: ${{ github.event_name == 'schedule' }}
run: echo 'STEEL_NIGHTLY_CI=1' >>$GITHUB_ENV
- uses: actions/checkout@master
id: checkout-fstar
with:
path: FStar
repository: FStarLang/FStar
ref: master
- name: Try fetch built F*
id: cache-fstar
uses: actions/cache/restore@v4
with:
path: FStar
key: FStar-${{ runner.os }}-${{ runner.arch }}-${{ steps.checkout-fstar.outputs.commit }}
- name: Build F*
if: steps.cache-fstar.outputs.cache-hit != 'true'
run: |
make -C FStar ADMIT=1 -sj$(nproc)
- name: Save built F*
if: steps.cache-fstar.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: FStar
key: FStar-${{ runner.os }}-${{ runner.arch }}-${{ steps.checkout-fstar.outputs.commit }}
- run: echo "FSTAR_EXE=$(pwd)/FStar/bin/fstar.exe" | sudo tee -a $GITHUB_ENV
- run: echo "FSTAR_HOME=$(pwd)/FStar" | sudo tee -a $GITHUB_ENV
- run: echo "PATH=$(pwd)/FStar/bin:$PATH" | sudo tee -a $GITHUB_ENV
- uses: actions/checkout@master
id: checkout-karamel
with:
path: karamel
repository: FStarLang/karamel
ref: master
- name: Try fetch built karamel
id: cache-karamel
uses: actions/cache/restore@v4
with:
path: karamel
key: karamel-${{ runner.os }}-${{ runner.arch }}-${{ steps.checkout-fstar.outputs.commit }}-${{ steps.checkout-karamel.outputs.commit }}
- name: Build karamel (if not cached)
if: steps.cache-karamel.outputs.cache-hit != 'true'
run: |
make -C karamel -sj$(nproc)
- name: Save built karamel
if: steps.cache-karamel.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: karamel
key: karamel-${{ runner.os }}-${{ runner.arch }}-${{ steps.checkout-fstar.outputs.commit }}-${{ steps.checkout-karamel.outputs.commit }}
- run: echo "KRML_HOME=$(pwd)/karamel" | sudo tee -a $GITHUB_ENV
- uses: actions/checkout@master
with:
path: steel
- name: Steel CI
id: cistep
run: make -C steel ci -skj$(nproc)
- name: Calculate Time
if: ${{ always () }}
id: duration
uses: RockyIsHere/actions-calculate-log-time@v0.2.4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Post result to Zulip
if: ${{ always () }} # && secrets.ZULIP_API_KEY != '' }}
continue-on-error: true
uses: zulip/github-actions-zulip/send-message@v1
with:
api-key: ${{ secrets.ZULIP_API_KEY }}
email: "github-commits-bot@fstar.zulipchat.com"
organization-url: "https://fstar.zulipchat.com"
to: "steel-ci"
type: "stream"
topic: "CI on '${{github.ref_name}}'"
content: |
'${{ github.event.head_commit.message || github.event.pull_request.title || github.head_commit.message }}' by ${{ github.event.head_commit.author.username || github.event.pull_request.user.login || github.head_commit.author.username }} (commit [${{github.sha}}](${{ github.event.head_commit.url || github.even.pull_request.html_url}}))
Status: ${{ steps.cistep.outcome == 'success' && '✅' || steps.cistep.outcome == 'cancelled' && '⚠' || '❌' }} ([link](https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}))
Elapsed time: ${{ steps.duration.outputs.duration }}
# Branch protection points here
ciok:
runs-on: ubuntu-latest
if: ${{ cancelled() || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'failure') }}
# ^ Workaround for insane github behavior: https://github.com/actions/runner/issues/2566
needs: ci
steps:
# Note: we only run on failure. Otherwise this is skipped, which counts
# as a success.
- run: exit 1