From 9a5ba6c62455cefc937620578eb3453940c0153a Mon Sep 17 00:00:00 2001 From: greg pereira Date: Wed, 1 May 2024 19:41:45 -0700 Subject: [PATCH] created cloud init workflow and documentation Signed-off-by: greg pereira --- .github/workflows/cloud_init_bootc.yaml | 77 +++++++++++++++++++++++++ training/cloud/README.md | 21 +++++++ 2 files changed, 98 insertions(+) create mode 100644 .github/workflows/cloud_init_bootc.yaml create mode 100644 training/cloud/README.md diff --git a/.github/workflows/cloud_init_bootc.yaml b/.github/workflows/cloud_init_bootc.yaml new file mode 100644 index 00000000..e9189675 --- /dev/null +++ b/.github/workflows/cloud_init_bootc.yaml @@ -0,0 +1,77 @@ +name: Cloud Init Bootc image builds + +on: + schedule: # schedule the job to run at 12 AM daily + - cron: '0 0 * * *' + + pull_request: + branches: + - main + paths: + - '.github/workflows/cloud_init_bootc.yaml' + + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: false + +env: + REGISTRY: quay.io + REGISTRY_ORG: ai-lab + +jobs: + instructlab-nvidia: + if: "!contains(github.event.pull_request.labels.*.name, 'hold-tests') && github.repository == 'containers/ai-lab-recipes'" + strategy: + matrix: + include: + # # Nvidia and amd blocked by: https://github.com/containers/ai-lab-recipes/issues/431 + # - vendor: nvidia + # arch: amd64 + # - vendor: amd + # arch: amd64 + - vendor: intel + arch: amd64 + runs-on: ubuntu-latest + # runs-on: ubuntu-22.04-2core # starting with minimal option + steps: + - name: Remove unnecessary files + run: | + sudo rm -rf /usr/share/dotnet + sudo rm -rf "$AGENT_TOOLSDIRECTORY" + + - uses: actions/checkout@v4.1.4 + + - name: Build Image + id: build_image + run: make cloud VENDOR=${{ matrix.vendor}} ARCH=${{ matrix.arch }} + working-directory: ./training/cloud + + - name: Login to Container Registry + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + uses: redhat-actions/podman-login@v1.7 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.REGISTRY_USER }} + password: ${{ secrets.REGISTRY_PASSWORD }} + + - name: Push image + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + uses: redhat-actions/push-to-registry@v2.8 + with: + image: ${{ steps.build_image.outputs.image }} + tags: ${{ steps.build_image.outputs.tags }} + registry: ${{ env.REGISTRY }} + + # - name: Publish Job Results to Slack + # id: slack + # if: always() + # uses: slackapi/slack-github-action@v1.26.0 + # 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 }} diff --git a/training/cloud/README.md b/training/cloud/README.md new file mode 100644 index 00000000..1da964f3 --- /dev/null +++ b/training/cloud/README.md @@ -0,0 +1,21 @@ +# Introduction + +This cloud directory is for providing a shim around the `bootc` images to use cloud init. This is important because when using the `bootc install to-filesystem` it wipes the `/etc` directory, which kills any remote connection to a cloud compute resource, as the `ssh` keys required for that connection get removed. Cloud init will take care of generating the new ssh keys required to maintain the connection + +# Usage + +## Common usage pieces + +Currently were focusing support on the bootc images for just `amd64`, but we should have other arch builds coming soon. + +### Nvidia + +`make cloud VENDOR=nvidia ARCH=amd64` + +### Intel + +`make cloud VENDOR=intel ARCH=amd64` + +### AMD + +`make cloud VENDOR=amd ARCH=amd64` \ No newline at end of file