Skip to content

Commit

Permalink
allow override of image as a while and workflow creation
Browse files Browse the repository at this point in the history
Signed-off-by: greg pereira <[email protected]>
  • Loading branch information
Gregory-Pereira committed May 6, 2024
1 parent 2188cd5 commit 9e1f84a
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 4 deletions.
99 changes: 99 additions & 0 deletions .github/workflows/iso_builder_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: Iso Builder Test Worfklow

on:
pull_request:
branches:
- main
paths:
- './training/iso-builder/**'
- '!training/iso-builder/README.md'
- '.github/workflows/iso_builder_test.yaml'
push:
branches:
- main
paths:
- './training/iso-builder/**'
- '!training/iso-builder/README.md'
- '.github/workflows/iso_builder_test.yaml'

workflow_dispatch:

env:
REGISTRY: quay.io
REGISTRY_ORG: ai-lab

jobs:
iso-builder-build-and-test:
if: "!contains(github.event.pull_request.labels.*.name, 'hold-tests')"
strategy:
matrix:
include:
- platforms: linux/amd64,linux/arm64
parent_image_registry: quay.io
parent_image_org: centos-bootc
parent_image_name: centos-bootc
parent_image_tag: stream9
iso_image_name: iso-builder-centos-bootc
iso_download_url: https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-latest-x86_64-boot.iso
iso_name: CentOS-Stream-9-latest-x86_64-boot.iso
runs-on: ubuntu-22.04
permissions:
contents: read
packages: write
steps:

- name: Remove unnecessary files
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- uses: actions/[email protected]

- name: Install qemu dependency
run: |
sudo apt-get update
sudo apt-get install -y qemu-user-static
- name: Generate an SSH key
id: ssh-keygen
run: |
ssh-keygen -t ed25519 -C "[email protected]" -N "" -f id_rsa
echo "sshpubkey=$(cat id_rsa.pub | xargs)" >> $GITHUB_OUTPUT
- name: Download the ISO
working-directory: ./training/iso-builder/
run: |
make centos-iso-download
- name: Build Image
id: build_image
working-directory: ./training/iso-builder/
run: |
make image FROM=${{ matrix.parent_image_registry }}/${{ matrix.parent_image_org }}/${{ matrix.parent_image_name }}:${{ matrix.parent_image_tag }} IMAGE_NAME=${{ matrix.iso_image_name }} IMAGE_TAG=${{ matrix.parent_image_tag }}
echo "embedded_image=$(echo '${{ matrix.parent_image_registry }}/${{ matrix.parent_image_org }}/${{ matrix.parent_image_name }}:${{ matrix.parent_image_tag }}' | xargs)" >> $GITHUB_OUTPUT
echo "produced_image=$(echo '${{env.REGISTRY}}/${{env.REGISTRY_ORG}}/${{ matrix.iso_image_name }}:${{ matrix.parent_image_tag }}' | xargs)" >> $GITHUB_OUTPUT
- name: Run the Image
working-directory: ./training/iso-builder/
run: |
make iso IMAGE=${{ steps.build_image.outputs.produced_image }} EMBED_IMAGE=${{ steps.build_image.outputs.embedded_image }} ORIGINAL_ISO="ISOs/${{ matrix.iso_name }}" SSHKEY="${{ steps.ssh-keygen.outputs.sshpubkey }}" CONTAINER_TOOL_EXTRA_ARGS=--pull=never
# - name: Setup tmate session
# if: ${{ failure() }}
# uses: mxschmitt/[email protected]
# timeout-minutes: 10
# with:
# detached: false
# limit-access-to-actor: true

# - name: Publish Job Results to Slack
# id: slack
# if: always()
# uses: slackapi/[email protected]
# with:
# payload: |
# {
# "text": "${{ github.workflow }} workflow status: ${{ job.status }}\n${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
# }
# env:
# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,5 @@ recipes/common/bin/*
*/.venv/
training/cloud/examples
training/instructlab/instructlab
training/iso-builder/ISOs/*
!training/iso-builder/ISOs/.gitkeep
Empty file.
13 changes: 9 additions & 4 deletions training/iso-builder/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,21 @@ REGISTRY ?= quay.io
REGISTRY_ORG ?= ai-lab
IMAGE_NAME ?= iso-builder
IMAGE_TAG ?= latest
IMAGE ?= ${REGISTRY}/${REGISTRY_ORG}/${IMAGE_NAME}:${IMAGE_TAG}

CONTAINER_TOOL ?= podman
CONTAINER_TOOL_EXTRA_ARGS ?=

EMBED_IMAGE ?=
ORIGINAL_ISO ?=
ORIGINAL_ISO ?=
SSHKEY ?=
OUTPUT_DIR ?= ./iso

.PHONY: image iso
.PHONY: image iso centos-iso-download
image:
"${CONTAINER_TOOL}" build \
--file Containerfile \
--tag "${REGISTRY}/${REGISTRY_ORG}/${IMAGE_NAME}:${IMAGE_TAG}" \
--tag "${IMAGE}" \
$(FROM:%=--from=%) \
$(MODEL_REPO:%=--build-arg MODEL_REPO=%) \
$(MODEL_PATH:%=--build-arg MODEL_PATH=%) \
Expand All @@ -44,9 +45,13 @@ iso:
--volume $(shell readlink -f ${ORIGINAL_ISO}):/root/original.iso:ro \
--volume ${OUTPUT_DIR}:/output \
--volume $(shell ${CONTAINER_TOOL} system info --format json | jq -r '.store.graphRoot'):/var/lib/containers/storage \
"${REGISTRY}/${REGISTRY_ORG}/${IMAGE_NAME}:${IMAGE_TAG}" \
${CONTAINER_TOOL_EXTRA_ARGS} \
"${IMAGE}" \
"${EMBED_IMAGE}" \
/root/ks.template \
"${SSHKEY}" \
/root/original.iso \
"/output/$(shell basename ${EMBED_IMAGE}).iso"

centos-iso-download:
curl -sL https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-latest-x86_64-boot.iso -o ISOs/CentOS-Stream-9-latest-x86_64-boot.iso

0 comments on commit 9e1f84a

Please sign in to comment.