Skip to content

Instantly share code, notes, and snippets.

@dschinkel
Last active March 20, 2022 03:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dschinkel/61f10d71875d0296d62c8c37b5b6ace8 to your computer and use it in GitHub Desktop.
Save dschinkel/61f10d71875d0296d62c8c37b5b6ace8 to your computer and use it in GitHub Desktop.
Example Github Action that Migrates DB Schema via Flyway
name: SQL-Migrations
on:
push:
branches:
- master
jobs:
migrate:
name: Migrate Database
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup node 14
uses: actions/setup-node@v1
with:
node-version: 14.x
- name: Setup Google Cloud
uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
with:
version: latest
project_id: ${{ secrets.GCP_PROJECT_ID }}
service_account_key: ${{ secrets.GCR_JSON_KEY }}
export_default_credentials: true
- name: Backup prod database
run: |
gcloud sql backups create --instance=${{secrets.GC_SQL_CLOUD_INSTANCE_NAME}}
- run: |
curl -L https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/${{secrets.FLYWAY_VERSION}}/flyway-commandline-${{secrets.FLYWAY_VERSION}}.tar.gz -o flyway-commandline-${{secrets.FLYWAY_VERSION}}.tar.gz && tar -xzf flyway-commandline-${{secrets.FLYWAY_VERSION}}.tar.gz --strip-components=1 && rm flyway-commandline-${{secrets.FLYWAY_VERSION}}.tar.gz
- run: PATH=/flyway:$PATH
- run: chmod 744 drivers
- run: wget -P drivers https://repo1.maven.org/maven2/com/google/cloud/sql/postgres-socket-factory/1.2.0/postgres-socket-factory-1.2.0.jar
- run: wget -P drivers https://repo1.maven.org/maven2/com/google/cloud/sql/jdbc-socket-factory-core/1.2.0/jdbc-socket-factory-core-1.2.0.jar
- run: wget -P drivers https://repo1.maven.org/maven2/com/google/http-client/google-http-client/1.38.0/google-http-client-1.38.0.jar
- run: wget -P drivers https://repo1.maven.org/maven2/com/google/http-client/google-http-client-jackson2/1.38.0/google-http-client-jackson2-1.38.0.jar
- run: wget -P drivers https://repo1.maven.org/maven2/com/github/jnr/jnr-unixsocket/0.38.5/jnr-unixsocket-0.38.5.jar
- run: wget -P drivers https://repo1.maven.org/maven2/com/google/guava/guava/30.1-jre/guava-30.1-jre.jar
- run: wget -P drivers https://repo1.maven.org/maven2/com/google/auth/google-auth-library-credentials/0.22.2/google-auth-library-credentials-0.22.2.jar
- run: wget -P drivers https://repo1.maven.org/maven2/com/google/auth/google-auth-library-oauth2-http/0.22.2/google-auth-library-oauth2-http-0.22.2.jar
- run: wget -P drivers https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.12.0/jackson-core-2.12.0.jar
- run: wget -P drivers https://repo1.maven.org/maven2/com/google/api-client/google-api-client/1.31.1/google-api-client-1.31.1.jar
- run: wget -P drivers https://repo1.maven.org/maven2/com/google/apis/google-api-services-sqladmin/v1beta4-rev76-1.25.0/google-api-services-sqladmin-v1beta4-rev76-1.25.0.jar
- run: wget -P drivers https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar
- run: wget -P drivers https://repo1.maven.org/maven2/io/opencensus/opencensus-api/0.28.2/opencensus-api-0.28.2.jar
- run: wget -P drivers https://repo1.maven.org/maven2/io/opencensus/opencensus-contrib-http-util/0.11.0/opencensus-contrib-http-util-0.11.0.jar
- run: wget -P drivers https://repo1.maven.org/maven2/io/grpc/grpc-context/1.0.1/grpc-context-1.0.1.jar
- run: |
./flyway -url="jdbc:postgresql:///${{secrets.DB_NAME}}?cloudSqlInstance=${{secrets.GC_SQL_CLOUD_CONNECTION_NAME}}&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=${{secrets.DB_USER}}&password=${{secrets.DB_PASS}}" /
-locations="filesystem:src/graphql/DB/flyway/migrations" info /
-baselineOnMigrate="true" /
migrate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment