Skip to content

Pin packages

Pin packages #66

Workflow file for this run

name: CADR CI
on:
workflow_dispatch:
push:
branches: [ master, bullseye ]
pull_request:
branches: [ master, bullseye ]
env:
USER_NAME: user
BUILD_DIR: /home/user/cadr-build
IMAGE_NAME: cadr/cadr
CONTAINER_NAME: cadr
CI_SCRIPT: ci_build.sh
PODMAN_CMD: "sudo -E XDG_RUNTIME_DIR= podman"
SPAWN_CONTAINER: "$PODMAN_CMD run --tmpfs /tmp --tmpfs /run --tmpfs /run/lock -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged --systemd=true -d -v $PWD:$BUILD_DIR --name=$CONTAINER_NAME $IMAGE_NAME"
EXECUTE_CMD: "$PODMAN_CMD exec -u $USER_NAME -i $CONTAINER_NAME"
jobs:
prepare:
runs-on: ubuntu-latest
outputs:
sources: ${{ steps.list-sources.outputs.sources }}
steps:
- uses: actions/checkout@v2
- name: Check CADR image cache
id: cache-cadr-image
uses: actions/cache@v3
env:
cache-name: cache-cadr-image
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: CADR_image.tar
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('Dockerfile', 'debcrafter-version', 'tests/data/microsoft_apt.list', 'tests/data/microsoft_key.gpg') }}
lookup-only: true
- name: Build CADR Running Environment Image
if: steps.cache-cadr-image.outputs.cache-hit != 'true'
run: |
sudo apt-get update
sudo apt-get upgrade podman
$PODMAN_CMD build -t $IMAGE_NAME .
$PODMAN_CMD save $IMAGE_NAME > CADR_image.tar
- name: Install jq
run: sudo apt-get install -y jq
- name: List sources
id: list-sources
run: echo "::set-output name=sources::$(ls pkg_specs/*.sss | sed -e 's:^pkg_specs/::' -e 's/\.sss$//' | jq -R -s -c 'split("\n")[:-1]')"
build:
needs: prepare
if: ${{ success() }}
runs-on: ubuntu-latest
strategy:
matrix:
source: ${{ fromJson(needs.prepare.outputs.sources) }}
steps:
- uses: actions/checkout@v2
- name: Setup CI Build Script
run: |
tee -a $CI_SCRIPT <<EOF
#!/bin/bash
set -ex
sudo apt-get update
sudo chown -R $USER_NAME $BUILD_DIR
cd $BUILD_DIR
MKCMD="make SOURCES=\\$1 BUILD_DIR=${BUILD_DIR}/build"
\$MKCMD build-dep
\$MKCMD all
EOF
chmod +x $CI_SCRIPT
- name: Fetch CADR image cache
id: cache-cadr-image
uses: actions/cache/restore@v3
env:
cache-name: cache-cadr-image
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: CADR_image.tar
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('Dockerfile', 'debcrafter-version', 'tests/data/microsoft_apt.list', 'tests/data/microsoft_key.gpg') }}
- name: Load Running Environment Image
run: |
$PODMAN_CMD load < CADR_image.tar
mkdir build
- name: Spawn Podman Container to Prepare Running Environment
run: |
eval $SPAWN_CONTAINER
- name: Build CADR
run: |
eval $EXECUTE_CMD bash -c "${BUILD_DIR}/$CI_SCRIPT \"${{ matrix.source }}\""
- name: Upload Debian Packages Just Built to Artifact
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.source }}
path: build/*.deb
- name: Check SHA256
run: |
sudo chown -R $USER build
cd build
for file in *.deb
do
sha256sum $file > ${file}.sha256sum
cat $file.sha256sum
done
- name: Upload SHA256 of Debian Packages Just Built to Artifact
uses: actions/upload-artifact@v2
with:
name: CADR_debs_sha256sum
path: build/*.deb.sha256sum
- name: Fix the Dir Permission for Post checkout
run: |
sudo chown -R $USER $PWD
test:
needs: [build, prepare]
if: ${{ success() }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
package: ["bitcoind", "bitcoin-mainnet", "bitcoin-regtest",
"bitcoin-pruned-mainnet", "bitcoin-fullchain-mainnet", "bitcoin-fullchain-regtest",
"bitcoin-txindex-mainnet", "bitcoin-zmq-mainnet", "bitcoin-zmq-regtest",
"bitcoin-rpc-proxy", "bitcoin-rpc-proxy-mainnet", "bitcoin-rpc-proxy-regtest",
"bitcoin-timechain-mainnet", "electrs", "electrs-mainnet", "electrs-regtest",
"btcpayserver", "btcpayserver-system-mainnet", "btcpayserver-system-regtest",
"lnd", "lnd-system-mainnet", "lnd-system-regtest","lnd-unlocker-system-mainnet",
"lnd-unlocker-system-mainnet", "ridetheln", "ridetheln-system",
"ridetheln-lnd-system-mainnet", "ridetheln-lnd-system-regtest", "selfhost",
"selfhost-nginx", "selfhost-onion", "selfhost-clearnet",
"selfhost-clearnet-certbot", "tor-hs-patch-config", "thunderhub",
"thunderhub-system-mainnet", "thunderhub-system-regtest", "btc-rpc-explorer-mainnet",
"lndconnect", "selfhost-dashboard-bin", "selfhost-dashboard", "btc-transmuter",
"btc-transmuter-system-mainnet", "btc-transmuter-system-regtest"]
steps:
- uses: actions/checkout@v2
- name: Setup Test Prefix
run: |
echo "TEST_PREFIX=sudo chown -R $USER_NAME $BUILD_DIR && cd $BUILD_DIR && make BUILD_DIR=$BUILD_DIR/build" >> $GITHUB_ENV
- name: Prepare Podman Container Running Environment
run: |
sudo apt-get update
sudo apt-get upgrade podman
- name: Fetch CADR image cache
id: cache-cadr-image
uses: actions/cache/restore@v3
env:
cache-name: cache-cadr-image
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: CADR_image.tar
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('Dockerfile', 'debcrafter-version', 'tests/data/microsoft_apt.list', 'tests/data/microsoft_key.gpg') }}
- name: Load Running Environment Image
run: |
$PODMAN_CMD load < CADR_image.tar
mkdir build
- name: Download Pre-built Debian Packages
uses: thecodenebula/download-artifact@e9e49e9bbce8ff2b901957ee034714cab099644a
with:
names: ${{ fromJson(needs.prepare.outputs.sources) }}
paths: build
- name: Test CADR Basic
run: |
eval $SPAWN_CONTAINER
eval $EXECUTE_CMD bash -c "\"$TEST_PREFIX test-here-basic-${{ matrix.package }}\""
$PODMAN_CMD rm -f $CONTAINER_NAME
- name: Test CADR Upgrade
run: |
eval $SPAWN_CONTAINER
eval $EXECUTE_CMD bash -c "\"$TEST_PREFIX SPLIT_STRATEGY=upgrade test-here-upgrade-${{ matrix.package }}\""
- name: Fix the Dir Permission for Post checkout
run: |
sudo chown -R $USER $PWD