Update release.yml #5206
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: Build with MacOS | |
on: | |
workflow_dispatch: | |
push: | |
# paths-ignore: | |
# - '.github/**' | |
jobs: | |
build: | |
name: Build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
ghc: ["9.6.5"] | |
cabal: ["3.10"] | |
os: ["macos-14-large"] | |
cabalcache: ["true"] | |
steps: | |
# Setup | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- uses: actions/cache/restore@v4 | |
name: Restore ghc & cabal binaries cache | |
id: ghc-cabal-cache | |
env: | |
key: ${{ runner.os }}-ghc-cabal | |
with: | |
path: | | |
/Users/runner/.ghcup | |
key: ${{ env.key }}-${{ hashFiles('bin/cabal', 'bin/ghc') }} | |
restore-keys: ${{ env.key }}- | |
- uses: actions/cache/restore@v4 | |
name: Restore dist-newstyle cache | |
id: cabal-dist-cache | |
with: | |
path: | | |
~/.cabal/packages | |
~/.cabal/store | |
dist-newstyle | |
key: ${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.*', '*.cabal', 'src/**', 'test/**') }} | |
restore-keys: | | |
${{ matrix.os }}-${{ matrix.ghc }}- | |
- name: Install GHC and Cabal | |
uses: haskell-actions/setup@v2 | |
with: | |
ghc-version: ${{ matrix.ghc }} | |
cabal-version: ${{ matrix.cabal }} | |
- name: Confirm GHC and Cabal installation | |
run: | | |
ghc --version | |
cabal --version | |
- uses: actions/cache/save@v4 | |
name: Cache ghc & cabal binaries | |
if: steps.ghc-cabal-cache.outputs.cache-hit != 'true' | |
with: | |
path: | | |
/Users/runner/.ghcup | |
key: ${{ steps.ghc-cabal-cache.outputs.cache-primary-key }} | |
- name: Install non-Haskell dependencies (macOS) | |
run: | | |
brew update && brew install gflags llvm snappy || true | |
- name: Create cabal.project.local | |
run: | | |
cat > cabal.project.local <<EOF | |
package * | |
documentation: False | |
package chainweb | |
documentation: False | |
benchmarks: True | |
tests: True | |
package pact | |
documentation: False | |
EOF | |
- uses: actions/cache/save@v4 | |
name: Save dist-newstyle cache | |
if: steps.cabal-dist-cache.outputs.cache-hit != 'true' | |
with: | |
path: | | |
~/.cabal/packages | |
~/.cabal/store | |
dist-newstyle | |
key: ${{ steps.cabal-dist-cache.outputs.cache-primary-key }} | |
# Build | |
- name: Delete Freeze file if it exists | |
run: rm -f cabal.project.freeze | |
- name: Update package database | |
run: cabal update | |
- name: Display outdated packages | |
run: cabal outdated | |
- name: Configure build | |
run: | | |
cabal build all --dry-run | |
cabal freeze | |
- name: Sync from cabal cache | |
if: matrix.cabalcache == 'true' | |
uses: larskuhtz/cabal-cache-action@018b7ae0c480ba3dc4fa0cfa3a0bc1f05b7724b3 | |
with: | |
bucket: "kadena-cabal-cache" | |
region: "us-east-1" | |
folder: "${{ matrix.os }}" | |
aws_access_key_id: "${{ secrets.kadena_cabal_cache_aws_access_key_id }}" | |
aws_secret_access_key: "${{ secrets.kadena_cabal_cache_aws_secret_access_key }}" | |
- name: Install build dependencies | |
run: cabal build chainweb --only-dependencies | |
- name: Build chainweb library | |
run: cabal build lib:chainweb | |
- name: Build chainweb applications | |
run: cabal build exe:chainweb-node test:chainweb-tests exe:cwtool chainweb:bench:bench | |
- name: Run Tests | |
run: | | |
ulimit -n 10000 | |
cabal run tests -- --hide-successes | |
# Checks | |
- name: Check that working directory tree is clean | |
run: | | |
mv cabal.project.freeze cabal.project.freeze.backup | |
git checkout -- cabal.project.freeze || true | |
if ! git diff --exit-code; then | |
echo "Git working tree is not clean. The build changed some file that is checked into git." 1>&2 | |
exit 1 | |
fi | |
mv cabal.project.freeze.backup cabal.project.freeze | |
- name: Run ea and verify consistency of genesis headers | |
run: | | |
cabal run cwtool -- ea | |
mv cabal.project.freeze cabal.project.freeze.backup | |
git checkout -- cabal.project.freeze || true | |
if ! git diff --exit-code; then | |
echo "Inconsistent genesis headers detected. Did you forget to run ea?" 1>&2 | |
exit 1 | |
fi | |
mv cabal.project.freeze.backup cabal.project.freeze |