diff --git a/.gitea/workflows/main.yml b/.gitea/workflows/main.yml index 04c4207..254d403 100644 --- a/.gitea/workflows/main.yml +++ b/.gitea/workflows/main.yml @@ -7,7 +7,7 @@ on: jobs: docker-test: - name: Docker Image Build Test + name: CI - Docker Image Build Test runs-on: docker-latest steps: - name: Checkout repository @@ -18,7 +18,7 @@ jobs: docker build -t go-api-test . go-test: - name: Go Vet (basic static check) + name: CI - Go Vet (basic static check) runs-on: docker-latest steps: - name: Checkout repository @@ -31,7 +31,7 @@ jobs: run: go vet ./... go-build: - name: Go Build & Cross-Compile + name: CI - Go Build & Cross-Compile runs-on: docker-latest steps: - name: Checkout repository @@ -65,27 +65,31 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Compute image tag + run: | + TAG="${GITHUB_SHA:-${{ github.sha }}}" + echo "TAG=$TAG" >> $GITHUB_ENV + echo "TAG_SHORT=${TAG:0:12}" >> $GITHUB_ENV + echo "BASE_IMAGE=git.petyaserver.uk/${{ secrets.REGISTRY_USER }}/go-api" >> $GITHUB_ENV + - name: Docker login env: - REGISTRY_HOST: git.petyaserver.uk REGISTRY_USER: ${{ secrets.REGISTRY_USER }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} run: | - : "${REGISTRY_HOST:=git.petyaserver.uk}" - echo "$REGISTRY_PASSWORD" | docker login "$REGISTRY_HOST" -u "$REGISTRY_USER" --password-stdin + echo "$REGISTRY_PASSWORD" | docker login git.petyaserver.uk -u "$REGISTRY_USER" --password-stdin - - name: Build & push - env: - REGISTRY_HOST: git.petyaserver.uk - REGISTRY_USER: ${{ secrets.REGISTRY_USER }} + - name: Build (latest + sha) run: | - : "${REGISTRY_HOST:=git.petyaserver.uk}" - IMAGE="$REGISTRY_HOST/$REGISTRY_USER/go-api:latest" - docker build -t "$IMAGE" . - docker push "$IMAGE" + docker build -t "$BASE_IMAGE:$TAG" -t "$BASE_IMAGE:latest" . + + - name: Push (latest + sha) + run: | + docker push "$BASE_IMAGE:$TAG" + docker push "$BASE_IMAGE:latest" k8s-some-test: - name: Kubernetes Smoke Test + name: CD - Kubernetes Smoke Test runs-on: docker-latest steps: - name: Checkout repository @@ -110,8 +114,7 @@ jobs: runs-on: docker-latest needs: [go-build, k8s-some-test, docker-push] steps: - - name: Checkout repository - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - name: Configure kubeconfig run: | @@ -125,10 +128,14 @@ jobs: run: kubectl get nodes -o wide - name: Apply Deployment to Cluster - run: kubectl apply -f k8s/service.yaml + run: kubectl apply -f k8s/deployment.yaml - name: Apply Service to Cluster - run: kubectl apply -f k8s/deployment.yaml - - - name: Verify rollout - run: kubectl rollout status deployment/go-api + run: kubectl apply -f k8s/service.yaml + + - name: Tag Image + run: | + kubectl set image deployment/go-api go-api="$BASE_IMAGE:$TAG" --record + + - name: Verify Rollout + run: kubectl rollout status deployment/go-api --timeout=240s diff --git a/main.go b/main.go index 9d649bc..25923c4 100644 --- a/main.go +++ b/main.go @@ -22,7 +22,7 @@ type AddResponse struct { func healthHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(HealthResponse{Status: "healthy"}) + json.NewEncoder(w).Encode(HealthResponse{Status: "oke"}) } func addHandler(w http.ResponseWriter, r *http.Request) {