Skip to content

wip

wip #8

Workflow file for this run

name: ci-linux
on:
pull_request:
push:
paths:
- '.github/workflows/ci-linux.yaml'
- 'cabal.project'
- '*/src/**'
# INFO: The following configuration block ensures that only one build runs per branch,
# which may be desirable for projects with a costly build process.
# Remove this block from the CI workflow to let each CI job run to completion.
concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
# install deps.
- name: install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libsystemd-dev
# cache libsodium
- name: cache libsodium-1.0.18
id: libsodium
uses: actions/cache@v3
with:
path: ~/libsodium-stable
key: ${{ runner.os }}-libsodium-1.0.18
# install libsodium with cache
- name: Install cache libsodium-1.0.18
if: steps.libsodium.outputs.cache-hit == 'true'
run: cd ~/libsodium-stable && ./configure && make -j2 && sudo make install
# download & install libsodium without cache
- name: Install libsodium
if: steps.libsodium.outputs.cache-hit != 'true'
run: |
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable.tar.gz
tar -xvzf libsodium-1.0.18-stable.tar.gz -C ~
cd ~/libsodium-stable
./configure
make -j2 && make check
sudo make install
cd -
# cache secp256K1
- name: cache libsecp256k1
id: libsecp256k1
uses: actions/cache@v3
with:
path: ~/secp256k1
key: libsecp256k1
# install libsecp256k1 with cache
- name: Install cache libsecp256k1
if: steps.libsecp256k1.outputs.cache-hit == 'true'
run: |
cd ~/secp256k1
./autogen.sh
./configure --enable-module-schnorrsig --enable-experimental
make
sudo make install
cd -
# download & install secp256k1 without cache
- name: Install libsecp256k1
if: steps.libsecp256k1.outputs.cache-hit != 'true'
run: |
git clone https://github.com/bitcoin-core/secp256k1 ~/secp256k1
cd ~/secp256k1
git checkout ac83be33
./autogen.sh
./configure --enable-module-schnorrsig --enable-experimental
make
sudo make install
cd -
# set up environment variables
- name: Setup environment variables
run: |
echo "LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
echo "PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" >> $GITHUB_ENV
- uses: actions/checkout@v4
- uses: haskell-actions/setup@v2
id: setup
with:
ghc-version: '8.10' # Resolves to the latest point release of GHC 8.10
cabal-version: '3.6.0.0' # Exact version of Cabal
# TODO document why this is after the previous step
- name: Set up cabal.project.local
run: |
echo "package cardano-crypto-praos" > cabal.project.local
echo " flags: -external-libsodium-vrf" >> cabal.project.local
- name: Configure the build
run: |
cabal configure --enable-tests --enable-documentation
# The step generates dist-newstyle/cache/plan.json for the cache key.
cabal build all --dry-run
- name: Restore cached dependencies (todo name)
uses: actions/cache@v3
id: cache
with:
path: ${{ steps.setup.outputs.cabal-store }}
key: ${{ hashFiles('**/plan.json') }}
- name: Install dependencies
# If we had an exact cache hit, the dependencies will be up to date.
if: steps.cache.outputs.cache-hit != 'true'
run: cabal build all --only-dependencies
test:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: haskell-actions/setup@v2
id: setup
with:
ghc-version: '8.10'
cabal-version: '3.6.0.0'
- name: Configure the build
run: |
cabal configure --enable-tests --enable-documentation
# The step generates dist-newstyle/cache/plan.json for the cache key.
cabal build all --dry-run
- name: cached dependencies
uses: actions/cache@v3
id: cache
with:
path: ${{ steps.setup.outputs.cabal-store }}
key: ${{ hashFiles('**/plan.json') }}
- name: Build dependencies for integration test
run: |
cabal install -j cardano-node cardano-cli --overwrite-policy=always
cabal install -j convex-wallet --overwrite-policy=always
echo "/home/runner/.cabal/bin" >> $GITHUB_PATH
- name: Test all
run: cabal test all