Zombie Builder #195
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
# | |
# Copyright Quadrivium LLC | |
# All Rights Reserved | |
# SPDX-License-Identifier: Apache-2.0 | |
# | |
name: Zombie Builder | |
on: | |
# schedule: | |
# - cron: '0 2 * * 0' # Update zombie builder image each Sunday night | |
workflow_dispatch: | |
inputs: | |
platform: | |
description: 'Platform selection' | |
type: choice | |
options: | |
- linux/amd64 | |
- linux/arm64 | |
default: linux/amd64 | |
polkadot_builder: | |
description: 'Build the polkadot builder image' | |
required: false | |
default: 'false' | |
type: 'boolean' | |
polkadot_builder_tag: | |
description: 'Custom Polkadot Builder tag' | |
default: 'latest' | |
required: false | |
type: 'string' | |
polkadot_binaries: | |
description: 'Build the polkadot binaries' | |
required: false | |
default: 'true' | |
type: 'boolean' | |
polkadot_sdk_tag: | |
description: 'Custom Polkadot SDK tag' | |
required: false | |
type: 'string' | |
# zombie_tester_image_rebuild: | |
# description: 'Rebuild the zombie tester image' | |
# required: false | |
# default: false | |
# type: 'boolean' | |
# polkadot_sdk_tag: | |
# description: 'Custom Polkadot SDK tag' | |
# required: false | |
# type: 'string' | |
# zombie_tester_latest_tag: | |
# description: 'Custom Zombie Tester tag' | |
# default: 'latest' | |
# required: false | |
# type: 'string' | |
env: | |
DOCKER_REGISTRY_PATH: ${{ secrets.GCP_REGISTRY }}/${{ secrets.GCP_PROJECT }}/kagome-dev/ | |
GITHUB_HUNTER_USERNAME: ${{ secrets.HUNTER_USERNAME }} | |
GITHUB_HUNTER_TOKEN: ${{ secrets.HUNTER_TOKEN }} | |
PLATFORM: ${{ github.event.inputs.platform || 'linux/amd64' }} | |
POLKADOT_SDK_TAG: ${{ github.event.inputs.polkadot_sdk_tag }} | |
BUILDER_LATEST_TAG: ${{ github.event.inputs.polkadot_builder_tag || 'latest' }} | |
TESTER_LATEST_TAG: ${{ github.event.inputs.zombie_tester_latest_tag || 'latest' }} | |
SCCACHE_GCS_BUCKET: ${{ secrets.SCCACHE_GCS_BUCKET }} | |
CACHE_VERSION: v001 | |
CACHE_PATHS: ./zombienet/docker/build_docker/cargo | |
jobs: | |
build_polkadot_builder: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- platform: linux/amd64 | |
os: ubuntu-24.04 | |
- platform: linux/arm64 | |
os: ubuntu-24.04-arm | |
timeout-minutes: 60 | |
env: | |
PLATFORM: ${{ matrix.platform }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fetch master branch | |
run: git fetch origin master:master | |
- name : "Authenticate with Google Cloud" | |
uses: 'google-github-actions/auth@v2' | |
with: | |
credentials_json: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }} | |
- name: "Set up Cloud SDK" | |
uses: 'google-github-actions/setup-gcloud@v2' | |
- name: "Configure Docker for GCR" | |
run: | | |
gcloud auth configure-docker --quiet | |
gcloud auth configure-docker ${{ secrets.GCP_REGISTRY }} --quiet | |
- name: "Check if image tag exists using Makefile" | |
id: check-tag | |
working-directory: ./zombienet/docker | |
run: | | |
make set_versions | |
exists=$(make polkadot_builder_check_tag) | |
echo "Image Exists: $exists" | |
echo "exists=$exists" >> $GITHUB_ENV | |
- name: "Build Polkadot Builder" | |
working-directory: ./zombienet/docker | |
if: env.exists == 'false' || github.event.inputs.polkadot_builder == 'true' | |
run: make polkadot_builder && make polkadot_builder_push | |
- name: "Versions Info" | |
if: always() | |
working-directory: ./zombienet/docker | |
run: | | |
make polkadot_builder_image_info | |
docker_manifest: | |
runs-on: ubuntu-24.04 | |
timeout-minutes: 60 | |
needs: [build_polkadot_builder] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fetch master branch | |
run: git fetch origin master:master | |
- name : "Authenticate with Google Cloud" | |
uses: 'google-github-actions/auth@v2' | |
with: | |
credentials_json: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }} | |
- name: "Set up Cloud SDK" | |
uses: 'google-github-actions/setup-gcloud@v2' | |
- name: "Configure Docker for GCR" | |
run: | | |
gcloud auth configure-docker --quiet | |
gcloud auth configure-docker ${{ secrets.GCP_REGISTRY }} --quiet | |
- name: "Check if image tag exists using Makefile" | |
id: check-tag | |
working-directory: ./zombienet/docker | |
run: | | |
make set_versions | |
exists=$(make polkadot_builder_check_tag) | |
echo "Image Exists: $exists" | |
echo "exists=$exists" >> $GITHUB_ENV | |
- name: "Build Polkadot Builder" | |
working-directory: ./zombienet/docker | |
if: env.exists == 'false' || github.event.inputs.polkadot_builder == 'true' | |
run: make polkadot_builder_push_manifest | |
- name: "Versions Info" | |
if: always() | |
working-directory: ./zombienet/docker | |
run: | | |
make polkadot_builder_image_info | |
building_binaries: | |
runs-on: [ actions-runner-controller ] | |
# runs-on: ${{ matrix.os }} | |
# strategy: | |
# matrix: | |
# include: | |
# - platform: linux/amd64 | |
# os: ubuntu-24.04 | |
# - platform: linux/arm64 | |
# os: ubuntu-24.04-arm | |
needs: | |
- build_polkadot_builder | |
- docker_manifest | |
timeout-minutes: 120 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fetch master branch | |
run: git fetch origin master:master | |
- uses: actions/cache@v4 | |
with: | |
path: ${{ env.CACHE_PATHS }} | |
key: ${{ runner.os }}-rust-${{ env.CACHE_VERSION }} | |
- name: "Authenticate with Google Cloud" | |
uses: 'google-github-actions/auth@v2' | |
with: | |
credentials_json: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }} | |
- name: "Set up Cloud SDK" | |
uses: 'google-github-actions/setup-gcloud@v2' | |
- name: "Configure Docker for GCR" | |
run: | | |
gcloud auth configure-docker --quiet | |
gcloud auth configure-docker ${{ secrets.GCP_REGISTRY }} --quiet | |
- name: "Build target" | |
if: github.event.inputs.polkadot_binaries == 'true' | |
working-directory: ./zombienet/docker | |
run: make polkadot_binary | |
- name: "Push Polkadot APT Package" | |
if: github.event.inputs.polkadot_binaries == 'true' | |
working-directory: ./zombienet/docker | |
run: make upload_apt_package | |
- name: "Debian package Info" | |
if: always() | |
working-directory: ./zombienet/docker | |
run: | | |
make polkadot_deb_package_info | |
# build_zombie_tester: | |
# runs-on: ubuntu-latest | |
# needs: [building_binaries] | |
# timeout-minutes: 60 | |
# steps: | |
# - name: "Checkout repository" | |
# uses: actions/checkout@v4 | |
# - name : "Authenticate with Google Cloud" | |
# uses: 'google-github-actions/auth@v2' | |
# with: | |
# credentials_json: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }} | |
# - name: "Set up Cloud SDK" | |
# uses: 'google-github-actions/setup-gcloud@v2' | |
# - name: "Configure Docker for GCR" | |
# run: | | |
# gcloud auth configure-docker --quiet | |
# gcloud auth configure-docker ${{ secrets.GCP_REGISTRY }} --quiet | |
# - name: "Get Polkadot and Zombienet versions" | |
# working-directory: ./zombienet/docker | |
# run: make get_versions | |
# - name: "Download Variables Artifact" | |
# uses: actions/download-artifact@v4 | |
# with: | |
# name: variables-artifact | |
# path: . | |
# - name: "Load Variables" | |
# id: load-variables | |
# run: | | |
# source variables.env | |
# echo "POLKADOT_BINARY_PACKAGE_VERSION=${POLKADOT_BINARY_PACKAGE_VERSION}" >> $GITHUB_ENV | |
# - name: "Check if image tag exists" | |
# id: check-tag | |
# working-directory: ./zombienet/docker | |
# run: | | |
# ZOMBIENET_RELEASE=$(grep 'short_version:' zombienet-versions.txt | cut -d ' ' -f 2) | |
# POLKADOT_SDK_RELEASE=$(grep 'polkadot_format_version:' polkadot-sdk-versions.txt | cut -d ' ' -f 2) | |
# ZOMBIE_TESTER_IMAGE=${DOCKER_REGISTRY_PATH}zombie_tester:${POLKADOT_SDK_RELEASE}_${ZOMBIENET_RELEASE} | |
# TAG_EXISTS=$(docker manifest inspect ${ZOMBIE_TESTER_IMAGE} > /dev/null 2>&1 && echo "true" || echo "false") | |
# echo "exists=$TAG_EXISTS" >> $GITHUB_ENV | |
# echo "zombie_tester_image=$ZOMBIE_TESTER_IMAGE" >> $GITHUB_OUTPUT | |
# - name: "Build Zombie Tester" | |
# working-directory: ./zombienet/docker | |
# if: env.exists == 'false' || github.event.inputs.zombie_tester_image_rebuild == 'true' | |
# run: make zombie_tester \ | |
# DOCKER_REGISTRY_PATH=${DOCKER_REGISTRY_PATH} \ | |
# GOOGLE_APPLICATION_CREDENTIALS=${GOOGLE_APPLICATION_CREDENTIALS} \ | |
# PROJECT_ID=${{ secrets.GCP_PROJECT }} \ | |
# TESTER_LATEST_TAG=${{ env.TESTER_LATEST_TAG }} \ | |
# POLKADOT_BINARY_PACKAGE_VERSION="${POLKADOT_BINARY_PACKAGE_VERSION}" | |
# - name: "Push Zombie Tester" | |
# working-directory: ./zombienet/docker | |
# if: env.exists == 'false' || github.event.inputs.zombie_tester_image_rebuild == 'true' | |
# run: make zombie_tester_push \ | |
# DOCKER_REGISTRY_PATH=${DOCKER_REGISTRY_PATH} \ | |
# - name: "Versions Info" | |
# if: always() | |
# run: | | |
# echo "Zombie Tester Image: ${{ steps.check-tag.outputs.zombie_tester_image }}" |