Skip to content

Add dropdown for namespace selection on App Wizard #58

Add dropdown for namespace selection on App Wizard

Add dropdown for namespace selection on App Wizard #58

Workflow file for this run

name: Build and Publish Extension [Container and Helm Chart - Multi-Arch]
on: [push, pull_request, workflow_dispatch]
env:
CHART_PATH: charts/suse-ai-lifecycle-manager
CHART_REGISTRY: oci://ghcr.io/suse/chart
IMAGE_NAME: ghcr.io/suse/suse-ai-lifecycle-manager
jobs:
prepare:
runs-on: ubuntu-latest
outputs:
release_tag: ${{ steps.tags.outputs.TAGS }}
steps:
- name: Calculate tags
id: tags
shell: bash
run: |
echo "TAGS<<##" >> "$GITHUB_OUTPUT"
ref=${{ github.ref }}
case "$ref" in
refs/heads/main)
echo "latest" >> "$GITHUB_OUTPUT";;
refs/tags/*)
echo "${ref#refs/tags/}" >> "$GITHUB_OUTPUT";;
*)
echo "${{ github.sha }}" >> "$GITHUB_OUTPUT";;
esac
echo "##" >> "$GITHUB_OUTPUT"
build:
strategy:
matrix:
arch:
- amd64
- arm64
include:
- arch: amd64
runner: ubuntu-24.04
- arch: arm64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.runner }}
name: Build Container Image
needs: prepare
env:
RELEASE_TAG: ${{ needs.prepare.outputs.release_tag }}
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Configure Git
run: |
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Nodejs with yarn caching
uses: actions/setup-node@v5
with:
node-version: '20'
cache: yarn
- name: Enable Corepack
run: corepack enable
- name: Install dependencies
run: yarn
- name: Parse Extension Name
if: ${{ github.event_name == 'push' && startsWith(github.ref_name, 'suse-ai-lifecycle-manager-') }}
id: parsed-name
env:
GH_TOKEN: ${{ github.token }}
run: |
yarn parse-tag-name ${{ env.RELEASE_TAG }} ${{ github.run_id }} "catalog"
- name: Build image
if: ${{ github.event_name == 'push' && startsWith(github.ref_name, 'suse-ai-lifecycle-manager-') }}
run: |
yarn publish-pkgs -c -i '' -r ghcr.io -o 'suse' -t "${{ env.RELEASE_TAG }}"
- name: Tag and Push Image
if: ${{ github.event_name == 'push' && startsWith(github.ref_name, 'suse-ai-lifecycle-manager-') }}
run: |
VERSION=${RELEASE_TAG##*-}
docker tag $IMAGE_NAME:$VERSION $IMAGE_NAME:$VERSION-${{ matrix.arch }}
docker push $IMAGE_NAME:$VERSION-${{ matrix.arch }}
manifest:
name: Create Container Manifest and Helm Chart
needs: [prepare, build]
env:
RELEASE_TAG: ${{ needs.prepare.outputs.release_tag }}
runs-on: ubuntu-latest
if: ${{ github.event_name == 'push' && startsWith(github.ref_name, 'suse-ai-lifecycle-manager-') }}
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v5
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create multi-arch manifest
run: |
VERSION=${RELEASE_TAG##*-}
docker buildx imagetools create \
-t $IMAGE_NAME:$VERSION \
$IMAGE_NAME:$VERSION-amd64 \
$IMAGE_NAME:$VERSION-arm64
- name: Package Helm Chart
id: package
run: |
chart_package=$(helm package $CHART_PATH --destination . | awk '{print $NF}')
echo "chart_package=$chart_package" >> $GITHUB_OUTPUT
- name: Publish Helm Chart
run: |
helm push ${{ steps.package.outputs.chart_package }} \
$CHART_REGISTRY