Pin packages #84
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: | |
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 build_rules/*.yaml | grep -v remir | sed -e 's:^build_rules/::' -e 's/\.yaml$//' | jq -R -s -c 'split("\n")[:-1]')" | |
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 | |
mv 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 | |
- 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", "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: | |
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 |