wip multi queue #1079
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build, Test, and Deploy | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: ${{ github.repository }} | |
GKE_CLUSTER: travigo-gke | |
GCP_ZONE: europe-central2-a | |
jobs: | |
travigo-build: | |
name: Build travigo binary | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version-file: 'go.mod' | |
- name: Build | |
run: go build -v ./cmd/travigo | |
- name: Upload travigo | |
uses: actions/upload-artifact@v3 | |
with: | |
name: travigo | |
path: ./travigo | |
travigo-docker: | |
name: Package travigo Docker image | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
needs: | |
- travigo-build | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Download artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: travigo | |
path: ./ | |
- name: Log in to the Container registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Extract metadata (tags, labels) for Docker | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
tags: | | |
type=ref,event=branch | |
type=ref,event=pr | |
type=sha,format=short | |
type=sha,format=long | |
- name: Build and push Docker image | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
file: Dockerfile | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
data-importer-deploy-helm: | |
if: github.ref == 'refs/heads/main' | |
name: Deploy data-importer to Kubernetes | |
runs-on: ubuntu-latest | |
environment: production | |
needs: travigo-docker | |
permissions: | |
contents: 'read' | |
id-token: 'write' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Helm tool installer | |
uses: Azure/setup-helm@v3 | |
- name: Kubectl tool installer | |
uses: Azure/setup-kubectl@v3 | |
- name: Get GCP Auth | |
uses: 'google-github-actions/auth@v2' | |
with: | |
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }} | |
- name: Get GKE Cluster | |
uses: 'google-github-actions/get-gke-credentials@v2' | |
with: | |
cluster_name: ${{ env.GKE_CLUSTER }} | |
location: ${{ env.GCP_ZONE }} | |
- name: Helm upgrade | |
run: |- | |
helm upgrade -i travigo-data-importer ./deploy/charts/travigo-data-importer --set image.tag=sha-${{ github.sha }} | |
realtime-deploy-helm: | |
if: github.ref == 'refs/heads/main' | |
name: Deploy realtime to Kubernetes | |
runs-on: ubuntu-latest | |
environment: | |
name: production | |
url: https://api.travigo.app/realtime-stats/queue | |
needs: travigo-docker | |
permissions: | |
contents: 'read' | |
id-token: 'write' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Helm tool installer | |
uses: Azure/setup-helm@v3 | |
- name: Kubectl tool installer | |
uses: Azure/setup-kubectl@v3 | |
- name: Get GCP Auth | |
uses: 'google-github-actions/auth@v2' | |
with: | |
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }} | |
- name: Get GKE Cluster | |
uses: 'google-github-actions/get-gke-credentials@v2' | |
with: | |
cluster_name: ${{ env.GKE_CLUSTER }} | |
location: ${{ env.GCP_ZONE }} | |
- name: Helm upgrade | |
run: |- | |
helm upgrade -i travigo-realtime ./deploy/charts/travigo-realtime --set image.tag=sha-${{ github.sha }} | |
web-api-deploy-helm: | |
if: github.ref == 'refs/heads/main' | |
name: Deploy web-api to Kubernetes | |
runs-on: ubuntu-latest | |
environment: | |
name: production | |
url: https://api.travigo.app/core | |
needs: travigo-docker | |
permissions: | |
contents: 'read' | |
id-token: 'write' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Helm tool installer | |
uses: Azure/setup-helm@v3 | |
- name: Kubectl tool installer | |
uses: Azure/setup-kubectl@v3 | |
- name: Get GCP Auth | |
uses: 'google-github-actions/auth@v2' | |
with: | |
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }} | |
- name: Get GKE Cluster | |
uses: 'google-github-actions/get-gke-credentials@v2' | |
with: | |
cluster_name: ${{ env.GKE_CLUSTER }} | |
location: ${{ env.GCP_ZONE }} | |
- name: Helm upgrade | |
run: |- | |
helm upgrade -i travigo-web-api ./deploy/charts/travigo-web-api --set image.tag=sha-${{ github.sha }} | |
stats-deploy-helm: | |
if: github.ref == 'refs/heads/main' | |
name: Deploy stats to Kubernetes | |
runs-on: ubuntu-latest | |
environment: | |
name: production | |
url: https://api.travigo.app/stats | |
needs: travigo-docker | |
permissions: | |
contents: 'read' | |
id-token: 'write' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Helm tool installer | |
uses: Azure/setup-helm@v3 | |
- name: Kubectl tool installer | |
uses: Azure/setup-kubectl@v3 | |
- name: Get GCP Auth | |
uses: 'google-github-actions/auth@v2' | |
with: | |
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }} | |
- name: Get GKE Cluster | |
uses: 'google-github-actions/get-gke-credentials@v2' | |
with: | |
cluster_name: ${{ env.GKE_CLUSTER }} | |
location: ${{ env.GCP_ZONE }} | |
- name: Helm upgrade | |
run: |- | |
helm upgrade -i travigo-stats ./deploy/charts/travigo-stats --set image.tag=sha-${{ github.sha }} | |
events-deploy-helm: | |
if: github.ref == 'refs/heads/main' | |
name: Deploy events to Kubernetes | |
runs-on: ubuntu-latest | |
environment: | |
name: production | |
url: https://api.travigo.app/events-queue/stats | |
needs: travigo-docker | |
permissions: | |
contents: 'read' | |
id-token: 'write' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Helm tool installer | |
uses: Azure/setup-helm@v3 | |
- name: Kubectl tool installer | |
uses: Azure/setup-kubectl@v3 | |
- name: Get GCP Auth | |
uses: 'google-github-actions/auth@v2' | |
with: | |
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }} | |
- name: Get GKE Cluster | |
uses: 'google-github-actions/get-gke-credentials@v2' | |
with: | |
cluster_name: ${{ env.GKE_CLUSTER }} | |
location: ${{ env.GCP_ZONE }} | |
- name: Helm upgrade | |
run: |- | |
helm upgrade -i travigo-events ./deploy/charts/travigo-consumer --set image.tag=sha-${{ github.sha }} -f ./deploy/events.yaml | |
notify-deploy-helm: | |
if: github.ref == 'refs/heads/main' | |
name: Deploy notify to Kubernetes | |
runs-on: ubuntu-latest | |
environment: | |
name: production | |
url: https://api.travigo.app/notify-queue/stats | |
needs: travigo-docker | |
permissions: | |
contents: 'read' | |
id-token: 'write' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Helm tool installer | |
uses: Azure/setup-helm@v3 | |
- name: Kubectl tool installer | |
uses: Azure/setup-kubectl@v3 | |
- name: Get GCP Auth | |
uses: 'google-github-actions/auth@v2' | |
with: | |
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }} | |
- name: Get GKE Cluster | |
uses: 'google-github-actions/get-gke-credentials@v2' | |
with: | |
cluster_name: ${{ env.GKE_CLUSTER }} | |
location: ${{ env.GCP_ZONE }} | |
- name: Helm upgrade | |
run: |- | |
helm upgrade -i travigo-notify ./deploy/charts/travigo-consumer --set image.tag=sha-${{ github.sha }} -f ./deploy/notify.yaml | |
dbwatch-deploy-helm: | |
if: github.ref == 'refs/heads/main' | |
name: Deploy dbwatch to Kubernetes | |
runs-on: ubuntu-latest | |
environment: | |
name: production | |
needs: travigo-docker | |
permissions: | |
contents: 'read' | |
id-token: 'write' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Helm tool installer | |
uses: Azure/setup-helm@v3 | |
- name: Kubectl tool installer | |
uses: Azure/setup-kubectl@v3 | |
- name: Get GCP Auth | |
uses: 'google-github-actions/auth@v2' | |
with: | |
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }} | |
- name: Get GKE Cluster | |
uses: 'google-github-actions/get-gke-credentials@v2' | |
with: | |
cluster_name: ${{ env.GKE_CLUSTER }} | |
location: ${{ env.GCP_ZONE }} | |
- name: Helm upgrade | |
run: |- | |
helm upgrade -i travigo-dbwatch ./deploy/charts/travigo-dbwatch --set image.tag=sha-${{ github.sha }} |