91 lines
2.6 KiB
YAML
91 lines
2.6 KiB
YAML
name: Build and Push API
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- master
|
||
|
||
jobs:
|
||
build-and-push:
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v4
|
||
|
||
# Smoke test – csak ellenőrizzük, hogy látjuk a docker socketet
|
||
- name: Docker smoke test
|
||
run: docker ps -a
|
||
|
||
# docker login – itt majd a repó Secretjeit fogjuk használni
|
||
- name: Docker login
|
||
run: |
|
||
echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login git.petyi.eu -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||
|
||
# Docker Run AI Helper
|
||
- name: Docker Run AI helper
|
||
env:
|
||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||
run: |
|
||
docker run --rm \
|
||
-e OPENAI_API_KEY="${OPENAI_API_KEY}" \
|
||
git.petyi.eu/szakdolgozat/ai:latest
|
||
|
||
# docker build – egyszerűen latest taggel
|
||
- name: Docker build
|
||
run: |
|
||
docker build -t git.petyi.eu/szakdolgozat/api:latest .
|
||
|
||
# docker push – ugyanaz az image
|
||
- name: Docker push
|
||
run: |
|
||
docker push git.petyi.eu/szakdolgozat/api:latest
|
||
|
||
# Kubeconfig átemelése
|
||
- name: Set up kubeconfig
|
||
env:
|
||
KUBECONFIG: /tmp/kubeconfig
|
||
run: |
|
||
echo "${{ secrets.KUBECONFIG_B64 }}" | base64 -d > "$KUBECONFIG"
|
||
echo "==== KubeConfig ===="
|
||
cat "$KUBECONFIG"
|
||
|
||
# Kubeconfig Smoke test
|
||
- name: Kubernetes smoke test
|
||
env:
|
||
KUBECONFIG: /tmp/kubeconfig
|
||
run: |
|
||
kubectl get nodes -o wide
|
||
|
||
# Rollout
|
||
- name: Rollout restart API deployment
|
||
env:
|
||
KUBECONFIG: /tmp/kubeconfig
|
||
run: |
|
||
kubectl rollout restart deployment/telefonkonyv-api -n szakdolgozat
|
||
|
||
|
||
# API elérési URL kiírása
|
||
- name: Show API URL
|
||
env:
|
||
KUBECONFIG: /tmp/kubeconfig
|
||
run: |
|
||
NODE_PORT=$(kubectl get svc telefonkonyv-api -n szakdolgozat -o jsonpath='{.spec.ports[0].nodePort}')
|
||
echo "API elérhető (NodePort): http://k8s.petyi.eu:${NODE_PORT}"
|
||
|
||
# step summary
|
||
- name: API URL summary
|
||
env:
|
||
KUBECONFIG: /tmp/kubeconfig
|
||
GITHUB_STEP_SUMMARY: $GITHUB_STEP_SUMMARY
|
||
run: |
|
||
NODE_PORT=$(kubectl get svc telefonkonyv-api -n szakdolgozat -o jsonpath='{.spec.ports[0].nodePort}')
|
||
|
||
{
|
||
echo "## Telefonkönyv API"
|
||
echo ""
|
||
echo "- Namespace: \`szakdolgozat\`"
|
||
echo "- Service: \`telefonkonyv-api\`"
|
||
echo "- URL: \`http://k8s.petyi.eu:${NODE_PORT}\`"
|
||
} >> "$GITHUB_STEP_SUMMARY"
|