Merge pull request #371 from karmada-io/dependabot/npm_and_yarn/ui/vi… #129
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |