Skip to content

Update debcrafter to fix databases #140

Update debcrafter to fix databases

Update debcrafter to fix databases #140

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:
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: List sources
id: list-sources
run: echo "sources=$(ls build_rules/*.yaml | grep -v remir | sed -e 's:^build_rules/::' -e 's/\.yaml$//' | jq -R -s -c 'split("\n")[:-1]')" >> "$GITHUB_OUTPUT"
build:
needs: prepare
if: ${{ success() }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
source: ${{ fromJson(needs.prepare.outputs.sources) }}
steps:
- uses: actions/checkout@v2
- name: Fetch CADR image cache
id: cache-cadr-image
uses: actions/cache/restore@v3
env:
cache-name: cache-cadr-image
with:
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: Get cache key
id: get-cache-key
run: |
eval $EXECUTE_CMD bash "${BUILD_DIR}/ci/get_cache_key.sh" "${{ matrix.source }}" >> $GITHUB_OUTPUT
- name: Fetch package cache
id: cache-packages
uses: actions/cache@v3
env:
cache-name: cache-packages
with:
path: packages
key: packages-${{ steps.get-cache-key.outputs.packages-cache-key }}
- name: Build packages
if: steps.cache-packages.outputs.cache-hit != 'true'
run: |
eval $EXECUTE_CMD bash "${BUILD_DIR}/$CI_SCRIPT" "${{ matrix.source }}"
sudo mkdir -p -m 777 packages
sudo mv -n build/*.deb packages
- name: Upload Debian Packages Just Built to Artifact
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.source }}
path: packages
- name: Check SHA256
run: |
sudo chown -R $USER build
cd packages
for file in *.deb
do
sha256sum $file > ${file}.sha256sum
cat $file.sha256sum
done
# Yes, this downloading of the cache and then uploding artifact is silly. I didn't figure out how to do it better, feel free to send a PR!
- name: Upload SHA256 of Debian Packages Just Built to Artifact
uses: actions/upload-artifact@v2
with:
name: CADR_debs_sha256sum
path: packages/*.deb.sha256sum
- name: Fix the Dir Permission for Post checkout
run: |
sudo chown -R $USER $PWD
test:
needs: [build, prepare]
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", "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:
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:
#name: ${{ join(fromJson(needs.prepare.outputs.sources), '\n') }}
path: packages
- name: Test CADR Basic
run: |
mkdir -p build
mv packages/*/*.deb build/
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
test-multi-package:
needs: [build, prepare]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
test: ["btcpayserver-regtest", "electrum"]
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:
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:
#name: ${{ join(fromJson(needs.prepare.outputs.sources), '\n') }}
path: packages
- name: Test multi-package CADR integration
run: |
mkdir -p build
mv packages/*/*.deb build/
eval $SPAWN_CONTAINER
eval $EXECUTE_CMD bash -c "\"$TEST_PREFIX test-here-multi-package-${{ matrix.test }}\""
$PODMAN_CMD rm -f $CONTAINER_NAME
- name: Fix the Dir Permission for Post checkout
run: |
sudo chown -R $USER $PWD