Skip to content

Merge pull request #365 from karmada-io/dependabot/npm_and_yarn/ui/xt… #127

Merge pull request #365 from karmada-io/dependabot/npm_and_yarn/ui/xt…

Merge pull request #365 from karmada-io/dependabot/npm_and_yarn/ui/xt… #127

name: Push latest image to DockerHub
on:
push:
branches:
- main
permissions:
contents: read
jobs:
build-fronted:
name: build frontend bundle
if: ${{ github.repository == 'karmada-io/dashboard' }}
runs-on: ubuntu-22.04
steps:
- name: checkout code
uses: actions/checkout@v6
- name: setup node.js
uses: actions/setup-node@v6
with:
node-version: 20
- name: install node dependencies
uses: pnpm/action-setup@v4
with:
# keep in sync with the packageManager version in `ui/package.json`
version: 9.1.2
- name: build dashboard
run: |
echo "Start build"
pnpm --version
cd ui
pnpm install -w
pnpm run dashboard:build
- name: upload artifact
uses: actions/upload-artifact@v6
with:
path: ui/apps/dashboard/dist
name: dashboard_artifact
build-and-push-web:
name: build and push web image
if: ${{ github.repository == 'karmada-io/dashboard' }}
runs-on: ubuntu-22.04
needs: [ "build-fronted" ]
env:
IMAGE_NAME: karmada/karmada-dashboard-web
BINARY_NAME: karmada-dashboard-web
PLATFORMS: linux/amd64,linux/arm64
steps:
- name: checkout code
uses: actions/checkout@v6
- name: install Go
uses: actions/setup-go@v6
with:
go-version-file: go.mod
- name: setup QEMU
uses: docker/setup-qemu-action@v3
- name: setup buildx
uses: docker/setup-buildx-action@v3
- name: detect misc info
id: misc
run: |
echo "os=$(go env GOHOSTOS)" >> $GITHUB_OUTPUT
echo "arch=$(go env GOHOSTARCH)" >> $GITHUB_OUTPUT
echo "image_name=$IMAGE_NAME" >> $GITHUB_OUTPUT
echo "binary_name=$BINARY_NAME" >> $GITHUB_OUTPUT
echo "platforms=$PLATFORMS" >> $GITHUB_OUTPUT
- name: login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USER_NAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: build karmada-dashboard-web binary
run: BUILD_PLATFORMS=${{ steps.misc.outputs.platforms }} make karmada-dashboard-web
- name: download artifact
uses: actions/download-artifact@v7
with:
name: dashboard_artifact
path: _output/bin/dist
- name: display artifact
run: |
ls -al _output/bin
ls -al _output/bin/dist
- name: build and push image
uses: docker/build-push-action@v6
with:
file: "cluster/images/build-web.Dockerfile"
context: "_output/bin/"
push: true
tags: ${{ steps.misc.outputs.image_name }}:latest
platforms: ${{ steps.misc.outputs.platforms }}
build-args: |
BINARY=${{ steps.misc.outputs.binary_name }}
build-and-push-api:
name: build and push api image
if: ${{ github.repository == 'karmada-io/dashboard' }}
runs-on: ubuntu-22.04
env:
IMAGE_NAME: karmada/karmada-dashboard-api
BINARY_NAME: karmada-dashboard-api
PLATFORMS: linux/amd64,linux/arm64
steps:
- name: checkout code
uses: actions/checkout@v6
- name: install Go
uses: actions/setup-go@v6
with:
go-version-file: go.mod
- name: setup QEMU
uses: docker/setup-qemu-action@v3
- name: setup buildx
uses: docker/setup-buildx-action@v3
- name: detect misc info
id: misc
run: |
echo "os=$(go env GOHOSTOS)" >> $GITHUB_OUTPUT
echo "arch=$(go env GOHOSTARCH)" >> $GITHUB_OUTPUT
echo "image_name=$IMAGE_NAME" >> $GITHUB_OUTPUT
echo "binary_name=$BINARY_NAME" >> $GITHUB_OUTPUT
echo "platforms=$PLATFORMS" >> $GITHUB_OUTPUT
- name: login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USER_NAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: build karmada-dashboard-api binary
run: BUILD_PLATFORMS=${{ steps.misc.outputs.platforms }} make karmada-dashboard-api
- name: build and push image
uses: docker/build-push-action@v6
with:
file: "cluster/images/Dockerfile"
context: "_output/bin/"
push: true
tags: ${{ steps.misc.outputs.image_name }}:latest
platforms: ${{ steps.misc.outputs.platforms }}
build-args: |
BINARY=${{ steps.misc.outputs.binary_name }}
build-and-push-terminal:
name: build and push terminal image
if: ${{ github.repository == 'karmada-io/dashboard' }}
runs-on: ubuntu-22.04
env:
IMAGE_NAME: karmada/karmada-dashboard-terminal
PLATFORMS: linux/amd64,linux/arm64
# Karmada CLI version, should align with the Karmada version declared in go.mod
KARMADACTL_VERSION: 'v1.13.0'
# Kubernetes CLI version, should align with the Kubernetes version declared in go.mod
KUBECTL_VERSION: 'v1.32.0'
steps:
- name: checkout code
uses: actions/checkout@v6
- name: setup QEMU
uses: docker/setup-qemu-action@v3
- name: setup buildx
uses: docker/setup-buildx-action@v3
- name: detect misc info
id: misc
run: |
echo "os=$(go env GOHOSTOS)" >> $GITHUB_OUTPUT
echo "arch=$(go env GOHOSTARCH)" >> $GITHUB_OUTPUT
echo "image_name=$IMAGE_NAME" >> $GITHUB_OUTPUT
echo "binary_name=$BINARY_NAME" >> $GITHUB_OUTPUT
echo "platforms=$PLATFORMS" >> $GITHUB_OUTPUT
echo "karmadactl_version=${KARMADACTL_VERSION}" >> $GITHUB_OUTPUT
echo "kubectl_version=${KUBECTL_VERSION}" >> $GITHUB_OUTPUT
- name: login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USER_NAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: build and push image
uses: docker/build-push-action@v6
with:
file: "cluster/images/build-terminal.Dockerfile"
context: "."
push: true
tags: ${{ steps.misc.outputs.image_name }}:latest
platforms: ${{ steps.misc.outputs.platforms }}
build-args: |
KARMADACTL_VERSION=${{ steps.misc.outputs.karmadactl_version }}
KUBECTL_VERSION=${{ steps.misc.outputs.kubectl_version }}
build-and-push-kubernetes-dashboard-api:
# action doesn't support YAML anchors, so we need to duplicate the job
name: build and push kubernetes-dashboard-api image
if: ${{ github.repository == 'karmada-io/dashboard' }}
runs-on: ubuntu-22.04
env:
IMAGE_NAME: karmada/kubernetes-dashboard-api
BINARY_NAME: kubernetes-dashboard-api
PLATFORMS: linux/amd64,linux/arm64
steps:
- name: checkout code
uses: actions/checkout@v6
- name: install Go
uses: actions/setup-go@v6
with:
go-version-file: go.mod
- name: setup QEMU
uses: docker/setup-qemu-action@v3
- name: setup buildx
uses: docker/setup-buildx-action@v3
- name: detect misc info
id: misc
run: |
echo "os=$(go env GOHOSTOS)" >> $GITHUB_OUTPUT
echo "arch=$(go env GOHOSTARCH)" >> $GITHUB_OUTPUT
echo "image_name=$IMAGE_NAME" >> $GITHUB_OUTPUT
echo "binary_name=$BINARY_NAME" >> $GITHUB_OUTPUT
echo "platforms=$PLATFORMS" >> $GITHUB_OUTPUT
- name: login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USER_NAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: build kubernetes-dashboard-api binary
run: BUILD_PLATFORMS=${{ steps.misc.outputs.platforms }} make kubernetes-dashboard-api
- name: build and push image
uses: docker/build-push-action@v6
with:
file: "cluster/images/Dockerfile"
context: "_output/bin/"
push: true
tags: ${{ steps.misc.outputs.image_name }}:latest
platforms: ${{ steps.misc.outputs.platforms }}
build-args: |
BINARY=${{ steps.misc.outputs.binary_name }}