Pin packages #62
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: 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: | | |
echo Building source "${{ matrix.source }}" | |
eval $EXECUTE_CMD ${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 |