feat: add version tagging with git commit hash for images
All checks were successful
Build and Deploy Log Center / build-and-deploy (push) Successful in 5s
All checks were successful
Build and Deploy Log Center / build-and-deploy (push) Successful in 5s
Each build now tags images with both commit hash and latest, enabling precise rollback with kubectl set image. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0fdc62b99e
commit
8920dad45c
@ -16,6 +16,10 @@ jobs:
|
|||||||
|
|
||||||
- name: Set environment by branch
|
- name: Set environment by branch
|
||||||
run: |
|
run: |
|
||||||
|
# 版本标签:commit 短哈希
|
||||||
|
SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)
|
||||||
|
echo "IMAGE_TAG=${SHORT_SHA}" >> $GITHUB_ENV
|
||||||
|
|
||||||
if [[ "${{ github.ref_name }}" == "master" ]]; then
|
if [[ "${{ github.ref_name }}" == "master" ]]; then
|
||||||
echo "CR_ORG=prod" >> $GITHUB_ENV
|
echo "CR_ORG=prod" >> $GITHUB_ENV
|
||||||
echo "DEPLOY_ENV=production" >> $GITHUB_ENV
|
echo "DEPLOY_ENV=production" >> $GITHUB_ENV
|
||||||
@ -38,9 +42,11 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
DOCKER_BUILDKIT=0 docker build \
|
DOCKER_BUILDKIT=0 docker build \
|
||||||
|
--tag ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-api:${{ env.IMAGE_TAG }} \
|
||||||
--tag ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-api:latest \
|
--tag ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-api:latest \
|
||||||
-f ./Dockerfile \
|
-f ./Dockerfile \
|
||||||
. 2>&1 | tee /tmp/build-api.log
|
. 2>&1 | tee /tmp/build-api.log
|
||||||
|
docker push ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-api:${{ env.IMAGE_TAG }} 2>&1 | tee -a /tmp/build-api.log
|
||||||
docker push ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-api:latest 2>&1 | tee -a /tmp/build-api.log
|
docker push ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-api:latest 2>&1 | tee -a /tmp/build-api.log
|
||||||
|
|
||||||
# Build Web Image
|
# Build Web Image
|
||||||
@ -50,9 +56,11 @@ jobs:
|
|||||||
set -o pipefail
|
set -o pipefail
|
||||||
DOCKER_BUILDKIT=0 docker build \
|
DOCKER_BUILDKIT=0 docker build \
|
||||||
--build-arg VITE_API_BASE_URL=https://${{ env.DOMAIN_API }} \
|
--build-arg VITE_API_BASE_URL=https://${{ env.DOMAIN_API }} \
|
||||||
|
--tag ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-web:${{ env.IMAGE_TAG }} \
|
||||||
--tag ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-web:latest \
|
--tag ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-web:latest \
|
||||||
-f ./web/Dockerfile \
|
-f ./web/Dockerfile \
|
||||||
./web 2>&1 | tee /tmp/build-web.log
|
./web 2>&1 | tee /tmp/build-web.log
|
||||||
|
docker push ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-web:${{ env.IMAGE_TAG }} 2>&1 | tee -a /tmp/build-web.log
|
||||||
docker push ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-web:latest 2>&1 | tee -a /tmp/build-web.log
|
docker push ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-web:latest 2>&1 | tee -a /tmp/build-web.log
|
||||||
|
|
||||||
# Build K8s Monitor Image
|
# Build K8s Monitor Image
|
||||||
@ -61,9 +69,11 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
DOCKER_BUILDKIT=0 docker build \
|
DOCKER_BUILDKIT=0 docker build \
|
||||||
|
--tag ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/k8s-pod-monitor:${{ env.IMAGE_TAG }} \
|
||||||
--tag ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/k8s-pod-monitor:latest \
|
--tag ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/k8s-pod-monitor:latest \
|
||||||
-f ./k8s-monitor/Dockerfile \
|
-f ./k8s-monitor/Dockerfile \
|
||||||
./k8s-monitor 2>&1 | tee /tmp/build-monitor.log
|
./k8s-monitor 2>&1 | tee /tmp/build-monitor.log
|
||||||
|
docker push ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/k8s-pod-monitor:${{ env.IMAGE_TAG }} 2>&1 | tee -a /tmp/build-monitor.log
|
||||||
docker push ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/k8s-pod-monitor:latest 2>&1 | tee -a /tmp/build-monitor.log
|
docker push ${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/k8s-pod-monitor:latest 2>&1 | tee -a /tmp/build-monitor.log
|
||||||
|
|
||||||
- name: Setup Kubectl
|
- name: Setup Kubectl
|
||||||
@ -86,10 +96,10 @@ jobs:
|
|||||||
echo "API Domain: ${{ env.DOMAIN_API }}"
|
echo "API Domain: ${{ env.DOMAIN_API }}"
|
||||||
echo "Web Domain: ${{ env.DOMAIN_WEB }}"
|
echo "Web Domain: ${{ env.DOMAIN_WEB }}"
|
||||||
|
|
||||||
# Replace image placeholders
|
# Replace image placeholders with versioned tag
|
||||||
sed -i "s|\${CI_REGISTRY_IMAGE}/log-center-api:latest|${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-api:latest|g" k8s/api-deployment-prod.yaml
|
sed -i "s|\${CI_REGISTRY_IMAGE}/log-center-api:latest|${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-api:${{ env.IMAGE_TAG }}|g" k8s/api-deployment-prod.yaml
|
||||||
sed -i "s|\${CI_REGISTRY_IMAGE}/log-center-web:latest|${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-web:latest|g" k8s/web-deployment-prod.yaml
|
sed -i "s|\${CI_REGISTRY_IMAGE}/log-center-web:latest|${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-web:${{ env.IMAGE_TAG }}|g" k8s/web-deployment-prod.yaml
|
||||||
sed -i "s|\${CI_REGISTRY_IMAGE}/k8s-pod-monitor:latest|${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/k8s-pod-monitor:latest|g" k8s/monitor-cronjob.yaml
|
sed -i "s|\${CI_REGISTRY_IMAGE}/k8s-pod-monitor:latest|${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/k8s-pod-monitor:${{ env.IMAGE_TAG }}|g" k8s/monitor-cronjob.yaml
|
||||||
|
|
||||||
# Replace domain placeholders in ingress
|
# Replace domain placeholders in ingress
|
||||||
sed -i "s|qiyuan-log-center-api.airlabs.art|${{ env.DOMAIN_API }}|g" k8s/ingress.yaml
|
sed -i "s|qiyuan-log-center-api.airlabs.art|${{ env.DOMAIN_API }}|g" k8s/ingress.yaml
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user