GitHub akcje, czyli wgrywanie zmienionych plików z repozytorium do bucketa google cloud

Dodawanie uprawnień IAM.

Pierwszym krokiem jest stworzenie "service account" i w zakładce "permissions" przypisane roli "storage admin."

W następnym kroku należy dla stworzonego konta (w zakładce "keys") stworzyć nowy klucz i pobrać go w formacie JSON.

Tworzenie sekretów w GitHub akcjach.

W repozytorium na GitHubie w opcjach projektu, zawartość pobranego kluczu należy dodać do sekretu np. "GCP_SA_KEY", a mail konta serwisowego przypisać do sekretu "GCP_SA_EMAIL"

Wgranie pliku .yaml do repozytorium.

Plik .yaml spreparowany przykładowo tak jak poniżej, należy wgrać do folderu .github/workflows, a następnie merge'ować do brancha Master.


Plik yaml

									  
name: Deploy to GCS

on:
push:
branches:
  - master
pull_request:
branches:
  - master

env:
BUCKET_NAME: bucket_name
PROJECT_ID: '${{ secrets.GCP_SA_KEY.project_id }}'

jobs:
deploy-to-gcs:
runs-on: ubuntu-latest

steps:
  - name: Checkout repository
	uses: actions/checkout@v4

  - name: Google Cloud Auth
	uses: google-github-actions/auth@v2
	with:
	  credentials_json: '${{ secrets.GCP_SA_KEY }}'
	  project_id: '${{ secrets.GCP_SA_KEY.project_id }}'

  - name: Setup gcloud CLI
	uses: google-github-actions/setup-gcloud@v2
	with:
	  project_id: '${{ secrets.GCP_SA_KEY.project_id }}'

  - name: Deploy files to GCS
	run: |
	  echo "Syncing changed files to gs://$BUCKET_NAME/"
	  gsutil -m rsync -r . gs://$BUCKET_NAME/
									  
									

Przykładowy plik konfiguracyjny w formacie YAML definiujący workflow, którego celem jest synchronizacja zmienionych plików z repozytorium kodu do zasobnika w Google Cloud Platform (GCP).

Możliwe błędy

Wiele razy może wystąpić komunikat.

AccessDeniedException: 403 The billing account for the owning project is disabled in state closed

Paradoksalnie nie oznacza to błędów związanych z kontem rozliczeniowym, ale może wymagać uruchomienie usługi "Billing API".

Podsumowanie

Po przeprowadzeniu wszystkich kroków, repozytorium GitHub przy zmianach na gałęzi Master, wykona sychronizację plików do bucketa w Google Cloud Storage co ułatwi workflow projektu i zdejmie z programisty wymóg manualnego przenoszenia zmian.