Skip to content

Commit

Permalink
Add the Service to automatically build a cluster-image. (#4096)
Browse files Browse the repository at this point in the history
  • Loading branch information
bxy4543 authored Oct 16, 2023
1 parent 513162a commit 588a495
Show file tree
Hide file tree
Showing 12 changed files with 113 additions and 187 deletions.
202 changes: 102 additions & 100 deletions .github/workflows/services.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
module: [ hub, database ]
## TODO: add more modules
module: [ database ]
steps:
- name: Checkout
uses: actions/checkout@v3
Expand Down Expand Up @@ -159,102 +160,103 @@ jobs:

save-sealos:
uses: ./.github/workflows/import-save-sealos.yml
# build-cluster-image:
# if: ${{ (github.event_name == 'push') ||(github.event_name == 'create') || (inputs.push_image == true) }}
# needs:
# - image-build
# - save-sealos
# runs-on: ubuntu-latest
# strategy:
# matrix:
# module: [ ]
# steps:
# - name: Checkout
# uses: actions/checkout@v3
# with:
# fetch-depth: 0
#
# - name: Expose git commit data
# uses: rlespinasse/git-commit-data-action@v1
# - name: Check if tag
# id: check_tag
# run: |
# if [[ "${{ github.ref }}" == refs/tags/* ]]; then
# echo "isTag=true" >> "$GITHUB_OUTPUT"
# else
# echo "isTag=false" >> "$GITHUB_OUTPUT"
# fi
# - name: Prepare
# id: prepare
# run: |
# bash ./scripts/resolve-tag-image.sh "${{ inputs.push_image }}" "${{ steps.check_tag.outputs.isTag }}" "${{ inputs.push_image_tag }}"
# echo old_docker_repo=ghcr.io/labring/sealos-${{ matrix.module }}-service >> $GITHUB_OUTPUT
# echo new_docker_repo=ghcr.io/${{ github.repository_owner }}/sealos-${{ matrix.module }}-service >> $GITHUB_OUTPUT
# echo cluster_repo=ghcr.io/${{ github.repository_owner }}/sealos-cloud-${{ matrix.module }}-service >> $GITHUB_OUTPUT
#
# - name: Download sealos
# uses: actions/download-artifact@v3
# with:
# name: sealos
# path: /tmp/
# - name: Verify sealos
# run: |
# sudo chmod a+x /tmp/sealos
# sudo mv /tmp/sealos /usr/bin/sealos
# sudo sealos version
#
# - name: Sealos login to ghcr.io
# # if push to master, then login to ghcr.io
# run: |
# sudo sealos login -u ${{ github.repository_owner }} -p ${{ secrets.GH_PAT }} --debug ghcr.io
#
# - name: Mutate image tag in deploy files
# working-directory: service/${{ matrix.module }}/deploy
# run: |
# OLD_DOCKER_IMAGE_NAME=${{ steps.prepare.outputs.old_docker_repo }}:latest
# NEW_DOCKER_IMAGE_NAME=${{ steps.prepare.outputs.new_docker_repo }}:${{ steps.prepare.outputs.tag_name }}
# sed -i "s;${OLD_DOCKER_IMAGE_NAME};${NEW_DOCKER_IMAGE_NAME};" manifests/*
#
# - name: Build ${{ matrix.module }}-service cluster image
# working-directory: service/${{ matrix.module }}/deploy
# run: |
# CLUSTER_IMAGE_NAME=${{ steps.prepare.outputs.cluster_repo }}:${{ steps.prepare.outputs.tag_name }}
# sudo sealos build -t ${CLUSTER_IMAGE_NAME}-amd64 --platform linux/amd64 -f Kubefile
# sudo sealos build -t ${CLUSTER_IMAGE_NAME}-arm64 --platform linux/arm64 -f Kubefile
# sudo sealos images
# - name: Build ${{ matrix.module }}-service cluster image for latest
# run: |
# CLUSTER_IMAGE_NAME=${{ steps.prepare.outputs.cluster_repo }}:${{ steps.prepare.outputs.tag_name }}
# CLUSTER_IMAGE_NAME_LATEST=${{ steps.prepare.outputs.cluster_repo }}:latest
# sudo sealos tag ${CLUSTER_IMAGE_NAME}-amd64 ${CLUSTER_IMAGE_NAME_LATEST}-amd64
# sudo sealos tag ${CLUSTER_IMAGE_NAME}-amd64 ${CLUSTER_IMAGE_NAME_LATEST}-amd64
# sudo sealos images
# bash docker/patch/manifest-cluster-images.sh $CLUSTER_IMAGE_NAME_LATEST
# - name: Renew issue and Sync Images
# uses: labring/gh-rebot@v0.0.6
# if: ${{ github.repository_owner == env.DEFAULT_OWNER }}
# with:
# version: v0.0.8-rc1
# env:
# GH_TOKEN: "${{ secrets.GH_PAT }}"
# SEALOS_TYPE: "issue_renew"
# SEALOS_ISSUE_TITLE: "[DaylyReport] Auto build for sealos"
# SEALOS_ISSUE_BODYFILE: "scripts/ISSUE_RENEW.md"
# SEALOS_ISSUE_LABEL: "dayly-report"
# SEALOS_ISSUE_TYPE: "day"
# SEALOS_ISSUE_REPO: "labring-actions/cluster-image"
# SEALOS_COMMENT_BODY: "/imagesync ghcr.io/${{ github.repository_owner }}/sealos-cloud-${{ matrix.module }}-service:${{ steps.prepare.outputs.tag_name }}"
# - name: Renew issue and Sync Images for latest
# uses: labring/gh-rebot@v0.0.6
# if: ${{ github.repository_owner == env.DEFAULT_OWNER }}
# with:
# version: v0.0.8-rc1
# env:
# GH_TOKEN: "${{ secrets.GH_PAT }}"
# SEALOS_TYPE: "issue_renew"
# SEALOS_ISSUE_TITLE: "[DaylyReport] Auto build for sealos"
# SEALOS_ISSUE_BODYFILE: "scripts/ISSUE_RENEW.md"
# SEALOS_ISSUE_LABEL: "dayly-report"
# SEALOS_ISSUE_TYPE: "day"
# SEALOS_ISSUE_REPO: "labring-actions/cluster-image"
# SEALOS_COMMENT_BODY: "/imagesync ghcr.io/${{ github.repository_owner }}/sealos-cloud-${{ matrix.module }}-service:latest"
build-cluster-image:
if: ${{ (github.event_name == 'push') ||(github.event_name == 'create') || (inputs.push_image == true) }}
needs:
- image-build
- save-sealos
runs-on: ubuntu-latest
strategy:
matrix:
## TODO: add more modules
module: [ database ]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Expose git commit data
uses: rlespinasse/git-commit-data-action@v1
- name: Check if tag
id: check_tag
run: |
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
echo "isTag=true" >> "$GITHUB_OUTPUT"
else
echo "isTag=false" >> "$GITHUB_OUTPUT"
fi
- name: Prepare
id: prepare
run: |
bash ./scripts/resolve-tag-image.sh "${{ inputs.push_image }}" "${{ steps.check_tag.outputs.isTag }}" "${{ inputs.push_image_tag }}"
echo old_docker_repo=ghcr.io/labring/sealos-${{ matrix.module }}-service >> $GITHUB_OUTPUT
echo new_docker_repo=ghcr.io/${{ github.repository_owner }}/sealos-${{ matrix.module }}-service >> $GITHUB_OUTPUT
echo cluster_repo=ghcr.io/${{ github.repository_owner }}/sealos-cloud-${{ matrix.module }}-service >> $GITHUB_OUTPUT
- name: Download sealos
uses: actions/download-artifact@v3
with:
name: sealos
path: /tmp/
- name: Verify sealos
run: |
sudo chmod a+x /tmp/sealos
sudo mv /tmp/sealos /usr/bin/sealos
sudo sealos version
- name: Sealos login to ghcr.io
# if push to master, then login to ghcr.io
run: |
sudo sealos login -u ${{ github.repository_owner }} -p ${{ secrets.GH_PAT }} --debug ghcr.io
- name: Mutate image tag in deploy files
working-directory: service/${{ matrix.module }}/deploy
run: |
OLD_DOCKER_IMAGE_NAME=${{ steps.prepare.outputs.old_docker_repo }}:latest
NEW_DOCKER_IMAGE_NAME=${{ steps.prepare.outputs.new_docker_repo }}:${{ steps.prepare.outputs.tag_name }}
sed -i "s;${OLD_DOCKER_IMAGE_NAME};${NEW_DOCKER_IMAGE_NAME};" manifests/*
- name: Build ${{ matrix.module }}-service cluster image
working-directory: service/${{ matrix.module }}/deploy
run: |
CLUSTER_IMAGE_NAME=${{ steps.prepare.outputs.cluster_repo }}:${{ steps.prepare.outputs.tag_name }}
sudo sealos build -t ${CLUSTER_IMAGE_NAME}-amd64 --platform linux/amd64 -f Kubefile
sudo sealos build -t ${CLUSTER_IMAGE_NAME}-arm64 --platform linux/arm64 -f Kubefile
sudo sealos images
- name: Build ${{ matrix.module }}-service cluster image for latest
run: |
CLUSTER_IMAGE_NAME=${{ steps.prepare.outputs.cluster_repo }}:${{ steps.prepare.outputs.tag_name }}
CLUSTER_IMAGE_NAME_LATEST=${{ steps.prepare.outputs.cluster_repo }}:latest
sudo sealos tag ${CLUSTER_IMAGE_NAME}-amd64 ${CLUSTER_IMAGE_NAME_LATEST}-amd64
sudo sealos tag ${CLUSTER_IMAGE_NAME}-amd64 ${CLUSTER_IMAGE_NAME_LATEST}-amd64
sudo sealos images
bash docker/patch/manifest-cluster-images.sh $CLUSTER_IMAGE_NAME_LATEST
- name: Renew issue and Sync Images
uses: labring/gh-rebot@v0.0.6
if: ${{ github.repository_owner == env.DEFAULT_OWNER }}
with:
version: v0.0.8-rc1
env:
GH_TOKEN: "${{ secrets.GH_PAT }}"
SEALOS_TYPE: "issue_renew"
SEALOS_ISSUE_TITLE: "[DaylyReport] Auto build for sealos"
SEALOS_ISSUE_BODYFILE: "scripts/ISSUE_RENEW.md"
SEALOS_ISSUE_LABEL: "dayly-report"
SEALOS_ISSUE_TYPE: "day"
SEALOS_ISSUE_REPO: "labring-actions/cluster-image"
SEALOS_COMMENT_BODY: "/imagesync ghcr.io/${{ github.repository_owner }}/sealos-cloud-${{ matrix.module }}-service:${{ steps.prepare.outputs.tag_name }}"
- name: Renew issue and Sync Images for latest
uses: labring/gh-rebot@v0.0.6
if: ${{ github.repository_owner == env.DEFAULT_OWNER }}
with:
version: v0.0.8-rc1
env:
GH_TOKEN: "${{ secrets.GH_PAT }}"
SEALOS_TYPE: "issue_renew"
SEALOS_ISSUE_TITLE: "[DaylyReport] Auto build for sealos"
SEALOS_ISSUE_BODYFILE: "scripts/ISSUE_RENEW.md"
SEALOS_ISSUE_LABEL: "dayly-report"
SEALOS_ISSUE_TYPE: "day"
SEALOS_ISSUE_REPO: "labring-actions/cluster-image"
SEALOS_COMMENT_BODY: "/imagesync ghcr.io/${{ github.repository_owner }}/sealos-cloud-${{ matrix.module }}-service:latest"
2 changes: 2 additions & 0 deletions deploy/cloud/init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ sealos pull --policy=always --platform=linux/"${ARCH}" ghcr.io/labring/sealos-cl
sealos pull --policy=always --platform=linux/"${ARCH}" ghcr.io/labring/sealos-cloud-costcenter-frontend:latest
sealos pull --policy=always --platform=linux/"${ARCH}" ghcr.io/labring/sealos-cloud-licenseissuer-controller:latest
sealos pull --policy=always --platform=linux/"${ARCH}" ghcr.io/labring/sealos-cloud-template-frontend:latest
sealos pull --policy=always --platform=linux/"${ARCH}" ghcr.io/labring/sealos-cloud-database-service:latest

sealos save -o tars/user.tar ghcr.io/labring/sealos-cloud-user-controller:latest
sealos save -o tars/terminal.tar ghcr.io/labring/sealos-cloud-terminal-controller:latest
Expand All @@ -28,3 +29,4 @@ sealos save -o tars/frontend-dbprovider.tar ghcr.io/labring/sealos-cloud-dbprovi
sealos save -o tars/frontend-costcenter.tar ghcr.io/labring/sealos-cloud-costcenter-frontend:latest
sealos save -o tars/frontend-applaunchpad.tar ghcr.io/labring/sealos-cloud-applaunchpad-frontend:latest
sealos save -o tars/frontend-template.tar ghcr.io/labring/sealos-cloud-template-frontend:latest
sealos save -o tars/database-service.tar ghcr.io/labring/sealos-cloud-database-service:latest
83 changes: 0 additions & 83 deletions deploy/cloud/manifests/db-metrics.yaml

This file was deleted.

6 changes: 3 additions & 3 deletions deploy/cloud/scripts/init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@ function prepare {
# apply notifications crd
kubectl apply -f manifests/notifications_crd.yaml

# apply kb database metrics
kubectl apply -f manifests/db-metrics.yaml

# gen mongodb uri
gen_mongodbUri

Expand Down Expand Up @@ -162,6 +159,9 @@ function sealos_run_frontend {
--env cloudDomain=$cloudDomain \
--env cloudPort=$cloudPort \
--env certSecretName="wildcard-cert"

echo "run db monitoring"
sealos run tars/database-service.tar
}

function resource_exists {
Expand Down
5 changes: 5 additions & 0 deletions service/database/deploy/Kubefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM scratch
COPY registry registry
COPY manifests manifests

CMD ["kubectl apply -f manifests/deploy.yaml"]
2 changes: 1 addition & 1 deletion service/database/deploy/manifests/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ spec:
env:
- name: PROMETHEUS_SERVICE_HOST
value: http://kb-addon-prometheus-server.
image: ghcr.io/labring/sealos-cloud-database-monitor:latest
image: ghcr.io/labring/sealos-database-service:latest
imagePullPolicy: Always
name: database-monitor
ports:
Expand Down

0 comments on commit 588a495

Please sign in to comment.