Add two new bench mark programs #9987
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: Haskell CI | |
# If it's a scheduled (for us: nightly) build, set the name of this run to a static value, so we can identify it easier. | |
# Otherwise, replicate the default run name: either the PR title if it exists, or the commit message otherwise. | |
run-name: | | |
${{github.event_name == 'schedule' && 'Haskell CI - NIGHTLY' | |
|| github.event.pull_request.title == '' && github.event.head_commit.message | |
|| github.event.pull_request.title}} | |
on: | |
push: | |
branches: [ "master", "release/**" ] | |
pull_request: | |
branches: [ "**" ] | |
schedule: | |
# "Nightly" builds: Every day at 06:00 UTC | |
- cron: '0 6 * * *' | |
# for running the workflow manually - useful for branches without PRs, for which jobs don't get ran automatically | |
workflow_dispatch: | |
# Cancel running actions when a new action on the same PR is started | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
env: | |
# Modify this value to "invalidate" the cabal cache. | |
CABAL_CACHE_VERSION: "2023-07-17" | |
# current ref from: 27.02.2022 | |
SECP256K1_REF: ac83be33d0956faf6b7f61a60ab524ef7d6a473a | |
SECP_CACHE_VERSION: "2022-12-30" | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
ghc: ["8.10.7", "9.2.8", "9.6.2"] | |
os: [ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set NIGHTLY environment variable if the job was triggered by the scheduler | |
if: ${{ github.event_name == 'schedule' }} | |
run: | | |
echo "NIGHTLY=true" >> $GITHUB_ENV | |
- name: Set up Ruby 2.7 | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 2.7 | |
- name: Install cbor-diag and cddl | |
run: | | |
gem install cddl -v 0.8.15 | |
gem install cbor-diag | |
- name: Install Haskell | |
uses: input-output-hk/setup-haskell@v1 | |
id: setup-haskell | |
with: | |
ghc-version: ${{ matrix.ghc }} | |
cabal-version: latest | |
- name: Install system dependencies | |
uses: input-output-hk/actions/base@latest | |
with: | |
use-sodium-vrf: false # default is true | |
- name: Configure to use libsodium | |
run: | | |
cat >> cabal.project <<EOF | |
package cardano-crypto-praos | |
flags: -external-libsodium-vrf | |
EOF | |
- name: Cabal update | |
run: cabal update | |
- name: Cabal Configure | |
run: cabal configure --enable-tests --enable-benchmarks --write-ghc-environment-files=always | |
- uses: actions/cache@v3 | |
if: matrix.os != 'macos-latest' | |
name: Cache cabal store | |
with: | |
path: | | |
${{ steps.setup-haskell.outputs.cabal-store }} | |
dist-newstyle | |
# cache is invalidated upon a change to cabal.project (and/or cabal.project.local), a bump to | |
# CABAL_CACHE_VERSION or after a week of inactivity | |
key: cache-${{ runner.os }}-${{ matrix.ghc }}-${{ env.CABAL_CACHE_VERSION }}-${{ hashFiles('cabal.project*') }} | |
# Restoring attempts are from current branch then master | |
restore-keys: | | |
cache-${{ runner.os }}-${{ matrix.ghc }}-${{ env.CABAL_CACHE_VERSION }}-${{ hashFiles('cabal.project*') }} | |
- name: Install dependencies | |
run: cabal build all --only-dependencies | |
- name: Build | |
run: cabal build all | |
- name: Download Mainnet Mirror | |
run: | | |
REF=a31ac75 | |
curl -L https://github.com/input-output-hk/cardano-mainnet-mirror/tarball/$REF -o mainnet-mirror.tgz | |
tar -xzf mainnet-mirror.tgz | |
mv input-output-hk-cardano-mainnet-mirror-$REF/epochs . | |
- name: Run tests | |
run: | | |
export CARDANO_MAINNET_MIRROR="$(pwd)/epochs" | |
cabal test all | |
fourmolu: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install fourmolu | |
run: | | |
mkdir -p "$HOME/.local/bin" | |
curl -sL https://github.com/fourmolu/fourmolu/releases/download/v0.13.1.0/fourmolu-0.13.1.0-linux-x86_64 -o "$HOME/.local/bin/fourmolu" | |
chmod a+x "$HOME/.local/bin/fourmolu" | |
echo "$HOME/.local/bin" >> $GITHUB_PATH | |
- name: Run fourmolu | |
run: ./scripts/fourmolize.sh | |
cabal-format: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Format all cabal files | |
run: ./scripts/cabal-format.sh | |
gen-hie: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
steps: | |
- name: Cache implicit-hie executable (gen-hie) | |
id: cache-gen-hie | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cabal/bin/gen-hie | |
key: ${{ runner.os }}-cache-gen-hie | |
- name: Install gen-hie if not cached | |
if: steps.cache-gen-hie.outputs.cache-hit != 'true' | |
run: cabal update && cabal install implicit-hie --install-method=copy --overwrite-policy=always | |
- name: Add cabal-bin to PATH | |
run: echo "$HOME/.cabal/bin" >> $GITHUB_PATH | |
- uses: actions/checkout@v3 | |
- name: Regenerate hie.yaml and confirm that it is in sync | |
run: ./scripts/gen-hie.sh | |
nix-build: | |
name: Build nix required derivations | |
if: ${{ github.event_name == 'schedule' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: cachix/install-nix-action@v19 | |
with: | |
nix_path: nixpkgs=channel:nixos-unstable | |
extra_nix_config: | | |
trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= loony-tools:pr9m4BkM/5/eSTZlkQyRt57Jz7OMBxNSUiMC4FkcNfk= | |
substituters = https://cache.iog.io https://cache.nixos.org/ https://cache.zw3rk.com | |
- name: nix-build | |
run: nix build .#hydraJobs.required | |
notify-nightly-failure: | |
name: Send a slack notification on \#ledger-internal if the nightly build failed | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
- nix-build | |
if: always() && github.event_name == 'schedule' && (needs.build.result == 'failure' || needs.nix-build.result == 'failure') | |
steps: | |
- name: Send slack notification | |
id: slack | |
uses: slackapi/[email protected] | |
with: | |
payload: | | |
{ | |
"blocks": [ | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "Nightly Github Actions build failed: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
} | |
} | |
] | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK |