Add CI/CD workflows for building and deploying Docker images to Kubernetes

This commit is contained in:
2025-10-02 15:00:50 +08:00
parent 9095c303b1
commit a9e4e05fda
2 changed files with 154 additions and 0 deletions

60
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,60 @@
# Continuous Integration Workflow
# This workflow builds and pushes Docker images to your private registry
# Trigger: Manual dispatch only
name: CI - Build and Push
# Trigger configuration - manual dispatch only
on:
workflow_dispatch:
inputs:
image_tag:
description: 'Docker image tag (e.g., latest, v1.0.0)'
required: false
default: 'latest'
type: string
# Environment variables available to all jobs
env:
CONTAINER_REGISTRY_URL: ${{ secrets.CONTAINER_REGISTRY_URL }}
CONTAINER_REGISTRY_USERNAME: ${{ secrets.CONTAINER_REGISTRY_USERNAME }}
CONTAINER_REGISTRY_NAMESPACE: ${{ secrets.CONTAINER_REGISTRY_NAMESPACE }}
CONTAINER_REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}
CONTAINER_IMAGE_NAME: ${{ secrets.CONTAINER_IMAGE_NAME }}
CONTAINER_IMAGE_TAG: ${{ inputs.image_tag || 'latest' }}
jobs:
build-and-push:
name: Build and Push Docker Image
runs-on: ubuntu-latest
steps:
# Step 1: Checkout code from repository
- name: Checkout code
uses: actions/checkout@v4
# Step 2: Set up Docker Buildx (for advanced Docker builds)
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# Step 3: Make CI script executable
- name: Make CI script executable
run: chmod +x script/ci.sh
# Step 4: Build Docker image
- name: Build Docker image
run: ./script/ci.sh build
# Step 5: Push Docker image to registry
- name: Push Docker image
run: ./script/ci.sh push
# Step 6: Output summary
- name: Summary
run: |
echo "### :rocket: Build Complete!" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Image:** \`${CONTAINER_REGISTRY_URL}/${CONTAINER_REGISTRY_NAMESPACE}/${CONTAINER_IMAGE_NAME}:${CONTAINER_IMAGE_TAG}\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Registry:** ${CONTAINER_REGISTRY_URL}" >> $GITHUB_STEP_SUMMARY
echo "**Tag:** ${CONTAINER_IMAGE_TAG}" >> $GITHUB_STEP_SUMMARY