update
This commit is contained in:
74
.github/workflows/cd.yml
vendored
Normal file
74
.github/workflows/cd.yml
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
# Continuous Deployment Workflow
|
||||
# This workflow deploys your application to Kubernetes cluster
|
||||
|
||||
name: CD - Deploy to Kubernetes
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
image_tag:
|
||||
description: 'Docker image tag to deploy (e.g., latest, v1.0.0)'
|
||||
required: false
|
||||
default: 'latest'
|
||||
type: string
|
||||
namespace:
|
||||
description: 'Kubernetes namespace (e.g., production, staging)'
|
||||
required: false
|
||||
default: 'default'
|
||||
type: string
|
||||
ingress_host:
|
||||
description: 'Ingress host domain (e.g., stats-api.example.com)'
|
||||
required: false
|
||||
default: ''
|
||||
type: string
|
||||
|
||||
env:
|
||||
# Kubernetes configuration
|
||||
KUBECONFIG_DATA: ${{ secrets.KUBECONFIG_DATA }}
|
||||
KUBERNETES_URL: ${{ secrets.KUBERNETES_URL }}
|
||||
KUBERNETES_NAMESPACE: ${{ inputs.namespace || secrets.KUBERNETES_NAMESPACE }}
|
||||
KUBERNETES_INGRESS_HOST: ${{ inputs.ingress_host || secrets.KUBERNETES_INGRESS_HOST }}
|
||||
|
||||
# Container registry configuration
|
||||
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: stats-api
|
||||
CONTAINER_IMAGE_TAG: ${{ inputs.image_tag || 'latest' }}
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
name: Deploy to Kubernetes
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Make CD script executable
|
||||
run: chmod +x script/cd.sh
|
||||
|
||||
- name: Deploy to Kubernetes
|
||||
run: ./script/cd.sh deploy
|
||||
|
||||
- name: Deployment Summary
|
||||
if: success()
|
||||
run: |
|
||||
echo "### :white_check_mark: Deployment Successful!" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**Application:** \`${CONTAINER_IMAGE_NAME}\`" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**Namespace:** \`${KUBERNETES_NAMESPACE}\`" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**Image:** \`${CONTAINER_REGISTRY_URL}/${CONTAINER_REGISTRY_NAMESPACE}/${CONTAINER_IMAGE_NAME}:${CONTAINER_IMAGE_TAG}\`" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**URL:** http://${KUBERNETES_INGRESS_HOST}" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "---" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**Deployment Time:** $(date -u +'%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
- name: Deployment Failed
|
||||
if: failure()
|
||||
run: |
|
||||
echo "### :x: Deployment Failed!" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "Please check the logs above for error details." >> $GITHUB_STEP_SUMMARY
|
||||
48
.github/workflows/ci.yml
vendored
Normal file
48
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
# Continuous Integration Workflow
|
||||
# This workflow builds and pushes Docker images to your private registry
|
||||
|
||||
name: CI - Build and Push
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
image_tag:
|
||||
description: 'Docker image tag (e.g., latest, v1.0.0)'
|
||||
required: false
|
||||
default: 'latest'
|
||||
type: string
|
||||
|
||||
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: stats-api
|
||||
CONTAINER_IMAGE_TAG: ${{ inputs.image_tag || 'latest' }}
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
name: Build and Push Docker Image
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Make CI script executable
|
||||
run: chmod +x script/ci.sh
|
||||
|
||||
- name: Build Docker image
|
||||
run: ./script/ci.sh build
|
||||
|
||||
- name: Push Docker image
|
||||
run: ./script/ci.sh push
|
||||
|
||||
- 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
|
||||
Reference in New Issue
Block a user