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
|
||||
run: |
|
||||
# 版本标签:commit 短哈希
|
||||
SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)
|
||||
echo "IMAGE_TAG=${SHORT_SHA}" >> $GITHUB_ENV
|
||||
|
||||
if [[ "${{ github.ref_name }}" == "master" ]]; then
|
||||
echo "CR_ORG=prod" >> $GITHUB_ENV
|
||||
echo "DEPLOY_ENV=production" >> $GITHUB_ENV
|
||||
@ -38,9 +42,11 @@ jobs:
|
||||
run: |
|
||||
set -o pipefail
|
||||
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 \
|
||||
-f ./Dockerfile \
|
||||
. 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
|
||||
|
||||
# Build Web Image
|
||||
@ -50,9 +56,11 @@ jobs:
|
||||
set -o pipefail
|
||||
DOCKER_BUILDKIT=0 docker build \
|
||||
--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 \
|
||||
-f ./web/Dockerfile \
|
||||
./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
|
||||
|
||||
# Build K8s Monitor Image
|
||||
@ -61,9 +69,11 @@ jobs:
|
||||
run: |
|
||||
set -o pipefail
|
||||
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 \
|
||||
-f ./k8s-monitor/Dockerfile \
|
||||
./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
|
||||
|
||||
- name: Setup Kubectl
|
||||
@ -86,10 +96,10 @@ jobs:
|
||||
echo "API Domain: ${{ env.DOMAIN_API }}"
|
||||
echo "Web Domain: ${{ env.DOMAIN_WEB }}"
|
||||
|
||||
# Replace image placeholders
|
||||
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-web:latest|${{ secrets.CR_SERVER }}/${{ env.CR_ORG }}/log-center-web:latest|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
|
||||
# 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:${{ 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:${{ 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:${{ env.IMAGE_TAG }}|g" k8s/monitor-cronjob.yaml
|
||||
|
||||
# Replace domain placeholders in ingress
|
||||
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