88jobs :
99 run-script :
1010 runs-on : ubuntu-latest
11+ env :
12+ SOURCE_PROJECT_ID : ${{ vars.PROD_MOBILITY_FEEDS_PROJECT_ID }}
13+ DEST_PROJECT_ID : ${{ vars.QA_MOBILITY_FEEDS_PROJECT_ID }}
14+ DUMP_BUCKET_NAME : " mobilitydata-database-dump-qa"
15+ BUCKET_PROJECT_ID : ${{ vars.QA_MOBILITY_FEEDS_PROJECT_ID }}
16+ GCP_REGION : ${{ vars.MOBILITY_FEEDS_REGION }}
17+ DB_INSTANCE_NAME : ${{ secrets.DB_INSTANCE_NAME }}
18+ DUMP_FILE_NAME : " prod-db-dump.sql"
19+ DATABASE_NAME : " MobilityDatabase"
1120
1221 steps :
1322 - name : Checkout code
@@ -19,12 +28,10 @@ jobs:
1928 with :
2029 credentials_json : ${{ secrets.PROD_GCP_MOBILITY_FEEDS_SA_KEY }}
2130
22- - name : GCloud Setup 1
31+ - name : GCloud Setup PROD 1
2332 uses : google-github-actions/setup-gcloud@v2
2433
2534 - name : Get PROD SQL service account
26- env :
27- SOURCE_PROJECT_ID : ${{ vars.PROD_MOBILITY_FEEDS_PROJECT_ID }}
2835 run : |
2936 SERVICE_ACCOUNT=$(gcloud sql instances describe "mobilitydata-database-instance" --project=$SOURCE_PROJECT_ID --format="value(serviceAccountEmailAddress)")
3037 echo "SOURCE_SQL_SERVICE_ACCOUNT=$SERVICE_ACCOUNT" >> $GITHUB_ENV
3946 - name : GCloud Setup 2
4047 uses : google-github-actions/setup-gcloud@v2
4148
42- - name : Create DB dump bucket
43- env :
44- DEST_PROJECT_ID : ${{ vars.QA_MOBILITY_FEEDS_PROJECT_ID }}
45- DUMP_BUCKET_NAME : " mobilitydata-database-dump-qa"
46- BUCKET_PROJECT_ID : ${{ vars.QA_MOBILITY_FEEDS_PROJECT_ID }}
47- GCP_REGION : ${{ vars.MOBILITY_FEEDS_REGION }}
48- SQL_INSTANCE_NAME : ${{ secrets.DB_INSTANCE_NAME }}
49+ - name : Create DB dump bucket ans backup QA DB
4950 run : |
5051 BUCKET_PROJECT_ID=$DEST_PROJECT_ID
5152
6162 gsutil iam ch serviceAccount:$SOURCE_SQL_SERVICE_ACCOUNT:objectCreator gs://$DUMP_BUCKET_NAME
6263
6364 # Get the service account for the QA DB and give read permission to the bucket
64- DEST_SQL_SERVICE_ACCOUNT=$(gcloud sql instances describe $SQL_INSTANCE_NAME --project=$DEST_PROJECT_ID --format="value(serviceAccountEmailAddress)")
65+ DEST_SQL_SERVICE_ACCOUNT=$(gcloud sql instances describe $DB_INSTANCE_NAME --format="value(serviceAccountEmailAddress)")
6566 echo "Destination SQL Service Account: $DEST_SQL_SERVICE_ACCOUNT"
6667
6768 # Give read permission on the bucket to the destination sql instance
68- gsutil iam ch serviceAccount:$DEST_SQL_SERVICE_ACCOUNT:objectViewer gs://$DUMP_BUCKET_NAME
69+ gsutil iam ch serviceAccount:$DEST_SQL_SERVICE_ACCOUNT:objectViewer gs://$DUMP_BUCKET_NAME
70+
71+ # Dump the QA database as a backup
72+ # According to chatgpt,
73+ # This is Google's recommended, safe method and doesn’t require direct access to the DB. It runs the export
74+ # in a way that avoids locking the database and works from GCP itself (so no traffic leaves GCP).
75+ gcloud sql export sql $DB_INSTANCE_NAME gs://$DUMP_BUCKET_NAME/qa-db-dump-backup.sql --database=$DATABASE_NAME --quiet
76+
77+ # - name: Authenticate to Google Cloud PROD project Again
78+ # uses: google-github-actions/auth@v2
79+ # with:
80+ # credentials_json: ${{ secrets.PROD_GCP_MOBILITY_FEEDS_SA_KEY }}
81+ #
82+ # - name: GCloud Setup PROD 1
83+ # uses: google-github-actions/setup-gcloud@v2
0 commit comments