Test install target on CI (docker only) #3974
Workflow file for this run
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 (Coq, Windows) | |
# Note that we must split up each command into a separate step for Windows, because otherwise we don't get error code | |
# See also https://github.com/avsm/setup-ocaml/issues/72 | |
on: | |
push: | |
branches: [ master , sp2019latest , v8.6 , v8.8 , v8.10 ] | |
pull_request: | |
merge_group: | |
workflow_dispatch: | |
release: | |
types: [published] | |
schedule: | |
- cron: '0 0 1 * *' | |
jobs: | |
build: | |
runs-on: windows-latest | |
name: windows | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
NJOBS: "2" | |
COQ_VERSION: "8.17.0" # minimal major version required for bedrock2 components | |
COQEXTRAFLAGS: "-async-proofs-j 1" | |
COQCHKEXTRAFLAGS: "" | |
OPAMYES: "true" | |
OPAMCONFIRMLEVEL: "unsafe-yes" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.x | |
- name: Set up OCaml | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: 4.11.1 | |
opam-repositories: | | |
opam-repository-mingw: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset | |
default: https://github.com/ocaml/opam-repository.git | |
- run: opam depext coq.${{ env.COQ_VERSION }} | |
- run: opam pin add --kind=version coq ${{ env.COQ_VERSION }} | |
- name: Install System Dependencies | |
run: | | |
%CYGWIN_ROOT%\setup-x86_64.exe -qnNdO -P time,zip | |
shell: cmd | |
- name: Work around https://github.com/actions/checkout/issues/766 | |
run: | | |
%CYGWIN_ROOT%\bin\bash.exe -l -c 'git config --global --add safe.directory "*"' | |
shell: cmd | |
- name: echo build params | |
run: | | |
%cd%\etc\ci\describe-system-config-win.bat | |
shell: cmd | |
- name: deps | |
run: | | |
%CYGWIN_ROOT%\bin\bash.exe -l -c 'cd "%cd%"; opam exec -- etc/ci/github-actions-make.sh -j${NJOBS} deps' | |
shell: cmd | |
- name: standalone-ocaml | |
run: | | |
%CYGWIN_ROOT%\bin\bash.exe -l -c 'cd "%cd%"; opam exec -- etc/ci/github-actions-make.sh -j${NJOBS} standalone-ocaml' | |
shell: cmd | |
- name: package-standalone-ocaml | |
run: | | |
%CYGWIN_ROOT%\bin\bash.exe -l -c 'cd "%cd%"; opam exec -- etc/ci/github-actions-make.sh package-standalone-ocaml PACKAGE=standalone.zip PACKAGE_CMD=zip' | |
shell: cmd | |
- name: coq | |
run: | | |
%CYGWIN_ROOT%\bin\bash.exe -l -c 'cd "%cd%"; opam exec -- etc/ci/github-actions-make.sh -j1 coq' | |
shell: cmd | |
- name: all-except-generated | |
run: | | |
%CYGWIN_ROOT%\bin\bash.exe -l -c 'cd "%cd%"; opam exec -- etc/ci/github-actions-make.sh -j1 all-except-generated' | |
shell: cmd | |
- name: c-files lite-generated-files | |
run: | | |
%CYGWIN_ROOT%\bin\bash.exe -l -c 'cd "%cd%"; opam exec -- etc/ci/github-actions-make.sh -j${NJOBS} c-files lite-generated-files' | |
shell: cmd | |
- name: only-test-amd64-files-lite | |
run: | | |
%CYGWIN_ROOT%\bin\bash.exe -l -c 'cd "%cd%"; opam exec -- etc/ci/github-actions-make.sh -j${NJOBS} only-test-amd64-files-lite SLOWEST_FIRST=1' | |
shell: cmd | |
- name: upload OCaml files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ExtractionOCaml | |
path: src/ExtractionOCaml | |
- name: upload standalone files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: standalone-windows | |
path: standalone.zip | |
- name: install | |
run: | | |
%CYGWIN_ROOT%\bin\bash.exe -l -c 'cd "%cd%"; opam exec -- etc/ci/github-actions-make.sh install install-standalone-ocaml' | |
shell: cmd | |
- name: display timing info | |
run: type time-of-build-pretty.log | |
shell: cmd | |
- name: display per-line timing info | |
run: | | |
%CYGWIN_ROOT%\bin\bash.exe -l -c 'cd "%cd%"; etc/ci/github-actions-display-per-line-timing.sh' | |
shell: cmd | |
# - name: upload timing and .vo info | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: build-outputs | |
# path: . | |
# if: always () | |
# - name: validate | |
# run: | | |
# %CYGWIN_ROOT%\bin\bash.exe -l -c 'cd "%cd%"; opam exec -- make TIMED=1 validate COQCHKFLAGS="-o ${COQCHKEXTRAFLAGS}"' | |
# shell: cmd | |
# if: github.event_name != 'pull_request' | |
test-standalone: | |
runs-on: windows-latest | |
needs: build | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download standalone Windows | |
uses: actions/download-artifact@v3 | |
with: | |
name: standalone-windows | |
path: dist-windows/ | |
- name: List files | |
run: Get-ChildItem dist-windows -Name | |
- name: Rename files | |
run: | | |
New-Item -ItemType Directory -Path dist | |
Move-Item dist-windows/standalone.zip dist/fiat-crypto-windows.zip | |
Get-ChildItem dist -Name | |
- name: Unpack files | |
run: | | |
Expand-Archive -Path dist/fiat-crypto-windows.zip -DestinationPath dist | |
Get-ChildItem dist | |
- run: .\dist\word_by_word_montgomery.exe -h | |
- run: .\dist\unsaturated_solinas.exe -h | |
- run: .\dist\saturated_solinas.exe -h | |
- run: .\dist\base_conversion.exe -h | |
- name: Set up MSVC Environment for dumpbin | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Check Executable Dependencies | |
run: | | |
$executables = @( | |
".\dist\word_by_word_montgomery.exe", | |
".\dist\unsaturated_solinas.exe", | |
".\dist\saturated_solinas.exe", | |
".\dist\base_conversion.exe" | |
) | |
foreach ($prog in $executables) { | |
Write-Host "::group::File Info - $prog" | |
Get-Item $prog | Format-List | |
dumpbin.exe /headers $prog | |
Write-Host "::endgroup::" | |
Write-Host "::group::DLL Dependencies - $prog" | |
dumpbin.exe /dependents $prog | |
Write-Host "::endgroup::" | |
} | |
publish-standalone: | |
runs-on: ubuntu-latest | |
needs: build | |
permissions: | |
contents: write # IMPORTANT: mandatory for making GitHub Releases | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Fetch all history for all tags and branches | |
tags: true # Fetch all tags as well, `fetch-depth: 0` might be sufficient depending on Git version | |
- name: Download standalone Windows | |
uses: actions/download-artifact@v3 | |
with: | |
name: standalone-windows | |
path: dist-windows/ | |
- name: List files | |
run: find dist-windows | |
- name: Unpack files | |
run: | | |
mkdir dist | |
( cd dist-windows && unzip standalone.zip ) | |
arch="$(etc/ci/find-arch.sh dist-windows/word_by_word_montgomery "x86_64")" | |
tag="$(git describe --tags HEAD)" | |
fname="Fiat-Cryptography_${tag}_Windows_${arch}.zip" | |
echo "$fname" | |
mv dist-windows/standalone.zip "dist/$fname" | |
find dist | |
unzip -l "dist/$fname" | |
- name: Upload artifacts to GitHub Release | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
# Upload to GitHub Release using the `gh` CLI. | |
# `dist/` contains the built packages | |
run: >- | |
gh release upload | |
'${{ github.ref_name }}' dist/** | |
--repo '${{ github.repository }}' | |
if: ${{ startsWith(github.ref, 'refs/tags/') && github.event_name == 'release' }} | |
windows-check-all: | |
runs-on: ubuntu-latest | |
needs: [build, test-standalone, publish-standalone] | |
if: always() | |
steps: | |
- run: echo 'build passed' | |
if: ${{ needs.build.result == 'success' }} | |
- run: echo 'test-standalone passed' | |
if: ${{ needs.test-standalone.result == 'success' }} | |
- run: echo 'publish-standalone passed' | |
if: ${{ needs.publish-standalone.result == 'success' }} | |
- run: echo 'build failed' && false | |
if: ${{ needs.build.result != 'success' }} | |
- run: echo 'test-standalone failed' && false | |
if: ${{ needs.test-standalone.result != 'success' }} | |
- run: echo 'publish-standalone failed' && false | |
if: ${{ needs.publish-standalone.result != 'success' }} |