65 lines
1.9 KiB
YAML
65 lines
1.9 KiB
YAML
name: Build and Deploy
|
|
run-name: ${{ github.actor }} is building and pushing 🚀
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
|
|
env:
|
|
REGISTRY: git.chopark.home
|
|
IMAGE: ${{ gitea.repository }} # wesscho/catalog26
|
|
DEPLOYMENT_NAME: catalog26-deployment # my deployment name
|
|
CONTAINER_NAME: catalog26 # <-- MUST match spec.template.spec.containers[].name
|
|
NAMESPACE: catalog # my namespace
|
|
|
|
jobs:
|
|
build-and-push:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out repository code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Login to Gitea Registry
|
|
# We use single quotes around the secret to prevent shell interpretation
|
|
# and the VM IP to bypass the 'server' DNS issue.
|
|
run: |
|
|
echo '${{ secrets.REGISTRY_TOKEN }}' | \
|
|
docker login ${{ env.REGISTRY }} \
|
|
--username ${{ gitea.actor }} \
|
|
--password-stdin
|
|
|
|
- name: Build and Push Docker Image
|
|
run: |
|
|
docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE }}:latest .
|
|
docker push ${{ env.REGISTRY }}/${{ env.IMAGE }}:latest
|
|
|
|
- name: List files in the repository
|
|
run: ls ${{ github.workspace }}
|
|
|
|
- run: echo "🍏 Build and Push status is ${{ job.status }}."
|
|
|
|
deploy-to-k8s:
|
|
needs: build-and-push
|
|
runs-on: ubuntu-latest
|
|
|
|
container:
|
|
image: bitnami/kubectl:latest
|
|
|
|
steps:
|
|
- name: Set Kubeconfig
|
|
run: |
|
|
echo "${{ secrets.KUBE_CONFIG }}" > kubeconfig.yaml
|
|
|
|
- name: Update Deployment Image
|
|
env:
|
|
KUBECONFIG: kubeconfig.yaml
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
kubectl set image \
|
|
"deployment/${DEPLOYMENT_NAME}" \
|
|
"${CONTAINER_NAME}=${REGISTRY}/${IMAGE}:latest" \
|
|
-n "${NAMESPACE}"
|
|
|
|
# Optional: wait for rollout to complete (recommended)
|
|
kubectl rollout status "deployment/${DEPLOYMENT_NAME}" -n "${NAMESPACE}" |