summaryrefslogtreecommitdiff
path: root/.github/workflows/build.yaml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/build.yaml')
-rw-r--r--.github/workflows/build.yaml299
1 files changed, 42 insertions, 257 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index d1ea842..c80ab65 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -1,4 +1,4 @@
-name: Build Images
+name: Build images
on:
push:
@@ -14,104 +14,27 @@ env:
jobs:
akmods:
name: Akmods Image
- runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
packages: write
- env:
- IMAGE_NAME: akmods
- FEDORA_VERSION: 39
- NVIDIA_VERSION: 535
-
- steps:
- - uses: actions/checkout@v4
-
- - name: Extract metadata
- id: metadata
- uses: docker/metadata-action@v5
- with:
- images: |
- ${{ env.IMAGE_NAME }}
- tags: |
- type=sha
- type=ref,event=branch
- type=ref,event=pr
- type=schedule,pattern={{date 'YYYYMMDD'}}
-
- - name: Generate extra tags
- id: extra-tags
- run: |
- timestamp="$(date +%Y%m%d)"
- tag="$IMAGE_NAME:$FEDORA_VERSION-$NVIDIA_VERSION"
- tags=("$tag" "$tag-$timestamp")
- echo "tags=${tags[*]}" >> "$GITHUB_OUTPUT"
-
- - name: Get akmods signing key
- if: github.event_name != 'pull_request'
- env:
- AKMODS_KEY: ${{ secrets.AKMODS_KEY }}
- run: |
- echo "$AKMODS_KEY" > akmods/certs/private_key.priv
-
- - name: Build image
- id: build
- uses: redhat-actions/buildah-build@v2
- with:
- containerfiles: |
- ./akmods/Containerfile
- image: ${{ env.IMAGE_NAME }}
- context: ./akmods
- tags: |
- ${{ steps.metadata.outputs.tags }}
- ${{ steps.extra-tags.outputs.tags }}
- labels: ${{ steps.metadata.outputs.labels }}
- build-args: |
- FEDORA_VERSION=${{ env.FEDORA_VERSION }}
- NVIDIA_VERSION=${{ env.NVIDIA_VERSION }}
-
- - name: Push to registry
- id: push
- if: github.event_name != 'pull_request'
- uses: redhat-actions/push-to-registry@v2
- with:
- image: ${{ steps.build.outputs.image }}
- tags: ${{ steps.build.outputs.tags }}
- registry: ${{ env.REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ github.token }}
- extra-args: |
- --disable-content-trust
-
- - name: Login to registry
- if: github.event_name != 'pull_request'
- uses: docker/login-action@v3
- with:
- registry: ${{ env.REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ github.token }}
-
- - name: Install cosign
- if: github.event_name == 'pull_request'
- uses: sigstore/cosign-installer@v3
-
- - name: Sign image
- if: github.event_name == 'pull_request'
- env:
- DIGEST: ${{ steps.push.outputs.digest }}
- TAGS: ${{ steps.build.outputs.tags }}
- run: |
- images=()
- for tag in "${TAGS[@]}"; do
- images+=("$tag@$DIGEST")
- done
- cosign sign --yes "${images[@]}"
+ uses: ./.github/workflows/build-image.yaml
+ with:
+ image_name: akmods
+ containerfile: ./akmods/Containerfile
+ context: ./akmods
+ extra_tags: |
+ 39-535
+ build_args: |
+ FEDORA_VERSION=39
+ NVIDIA_VERSION=535
+ secrets:
+ akmods_key: ${{ secrets.AKMODS_KEY }}
base:
- name: Base Image
- runs-on: ubuntu-latest
+ name: Base Images
permissions:
contents: read
@@ -126,180 +49,42 @@ jobs:
fedora_version: 39
image_flavor: silverblue
- steps:
- - uses: actions/checkout@v4
-
- - name: Extract metadata
- id: metadata
- uses: docker/metadata-action@v5
- with:
- images: |
- ${{ matrix.image_name }}
- tags: |
- type=sha
- type=ref,event=branch
- type=ref,event=pr
- type=schedule,pattern={{date 'YYYYMMDD'}}
-
- - name: Generate extra tags
- id: extra-tags
- env:
- IMAGE_NAME: ${{ matrix.image_name }}
- FEDORA_VERSION: ${{ matrix.fedora_version }}
- run: |
- timestamp="$(date +%Y%m%d)"
- tag="$IMAGE_NAME:$FEDORA_VERSION"
- tags=("$tag" "$tag-$timestamp")
- echo "tags=${tags[*]}" >> "$GITHUB_OUTPUT"
-
- - name: Build image
- id: build
- uses: redhat-actions/buildah-build@v2
- with:
- containerfiles: |
- ./Containerfile
- image: ${{ matrix.image_name }}
- context: .
- tags: |
- ${{ steps.metadata.outputs.tags }}
- ${{ steps.extra-tags.outputs.tags }}
- labels: ${{ steps.metadata.outputs.labels }}
- build-args: |
- FEDORA_VERSION=${{ matrix.fedora_version }}
- IMAGE_FLAVOR=${{ matrix.image_flavor }}
-
- - name: Push to registry
- id: push
- if: github.event_name != 'pull_request'
- uses: redhat-actions/push-to-registry@v2
- with:
- image: ${{ steps.build.outputs.image }}
- tags: ${{ steps.build.outputs.tags }}
- registry: ${{ env.REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ github.token }}
- extra-args: |
- --disable-content-trust
-
- - name: Login to registry
- if: github.event_name != 'pull_request'
- uses: docker/login-action@v3
- with:
- registry: ${{ env.REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ github.token }}
-
- - name: Install cosign
- if: github.event_name == 'pull_request'
- uses: sigstore/cosign-installer@v3
-
- - name: Sign image
- if: github.event_name == 'pull_request'
- env:
- DIGEST: ${{ steps.push.outputs.digest }}
- TAGS: ${{ steps.build.outputs.tags }}
- run: |
- images=()
- for tag in "${TAGS[@]}"; do
- images+=("$tag@$DIGEST")
- done
- cosign sign --yes "${images[@]}"
+ uses: ./.github/workflows/build-image.yaml
+ with:
+ image_name: ${{ matrix.image_name }}
+ containerfile: ./Containerfile
+ context: .
+ extra_tags: |
+ ${{ matrix.fedora_version }}
+ build_args: |
+ FEDORA_VERSION=${{ matrix.fedora_version }}
+ IMAGE_FLAVOR=${{ matrix.image_flavor }}
nvidia:
- name: NVIDIA Image
- runs-on: ubuntu-latest
+ name: NVIDIA Images
needs: [akmods, base]
+ permissions:
+ contents: read
+ id-token: write
+ packages: write
+
strategy:
fail-fast: false
matrix:
include:
- - image_name: getchblue-nvidia
+ - image_flavor: getchblue
fedora_version: 39
- image_flavor: getchblue
nvidia_version: 535
- permissions:
- contents: read
- id-token: write
- packages: write
-
- steps:
- - uses: actions/checkout@v4
-
- - name: Extract metadata
- id: metadata
- uses: docker/metadata-action@v5
- with:
- images: |
- ${{ matrix.image_name }}
- tags: |
- type=sha
- type=ref,event=branch
- type=ref,event=pr
- type=schedule,pattern={{date 'YYYYMMDD'}}
-
- - name: Generate extra tags
- id: extra-tags
- env:
- IMAGE_NAME: ${{ matrix.image_name }}
- FEDORA_VERSION: ${{ matrix.fedora_version }}
- NVIDIA_VERSION: ${{ matrix.nvidia_version }}
- run: |
- timestamp="$(date +%Y%m%d)"
- tag="$IMAGE_NAME:$FEDORA_VERSION-$NVIDIA_VERSION"
- tags=("$tag" "$tag-$timestamp")
- echo "tags=${tags[*]}" >> "$GITHUB_OUTPUT"
-
- - name: Build image
- id: build
- uses: redhat-actions/buildah-build@v2
- with:
- containerfiles: |
- ./nvidia/Containerfile
- image: ${{ matrix.image_name }}
- context: ./nvidia
- tags: |
- ${{ steps.metadata.outputs.tags }}
- ${{ steps.extra-tags.outputs.tags }}
- labels: ${{ steps.metadata.outputs.labels }}
- build-args: |
- FEDORA_VERSION=${{ matrix.fedora_version }}
- IMAGE_FLAVOR=${{ matrix.image_flavor }}
-
- - name: Push to registry
- id: push
- if: github.event_name != 'pull_request'
- uses: redhat-actions/push-to-registry@v2
- with:
- image: ${{ steps.build.outputs.image }}
- tags: ${{ steps.build.outputs.tags }}
- registry: ${{ env.REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ github.token }}
- extra-args: |
- --disable-content-trust
-
- - name: Login to registry
- if: github.event_name != 'pull_request'
- uses: docker/login-action@v3
- with:
- registry: ${{ env.REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ github.token }}
-
- - name: Install cosign
- if: github.event_name == 'pull_request'
- uses: sigstore/cosign-installer@v3
-
- - name: Sign image
- if: github.event_name == 'pull_request'
- env:
- DIGEST: ${{ steps.push.outputs.digest }}
- TAGS: ${{ steps.build.outputs.tags }}
- run: |
- images=()
- for tag in "${TAGS[@]}"; do
- images+=("$tag@$DIGEST")
- done
- cosign sign --yes "${images[@]}"
+ uses: ./.github/workflows/build-image.yaml
+ with:
+ image_name: ${{ matrix.image_flavor }}-nvidia
+ containerfile: ./nvidia/Containerfile
+ context: ./nvidia
+ extra_tags: |
+ ${{ matrix.fedora_version }}-${{ matrix.nvidia_version }}
+ build_args: |
+ FEDORA_VERSION=${{ matrix.fedora_version }}
+ IMAGE_FLAVOR=${{ matrix.image_flavor }}
+ NVIDIA_VERSION=${{ matrix.nvidia_version }}