GitHub Actions Integration

Automate platform workflows using GitHub Actions for CI/CD pipelines.

Overview

Use GitHub Actions to:

  • Refresh test databases on every commit

  • Schedule periodic data masking

  • Automate database subsetting

  • Generate synthetic test data

Basic Workflow

name: Refresh Test Database

on:
  push:
    branches: [main]
  schedule:
    - cron: '0 2 * * *'  # Daily at 2 AM

jobs:
  mask-data:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Run Masking
        uses: docker://synthesizedio/synthesized-tdk-cli:latest
        with:
          args: >
            --config-file workflow.yaml
            --inventory-file inventory.yaml
        env:
          INPUT_DB_URL: ${{ secrets.PROD_DB_URL }}
          INPUT_DB_PASSWORD: ${{ secrets.PROD_DB_PASSWORD }}
          OUTPUT_DB_URL: ${{ secrets.TEST_DB_URL }}
          OUTPUT_DB_PASSWORD: ${{ secrets.TEST_DB_PASSWORD }}

Secrets Configuration

Store credentials in GitHub Secrets:

  1. Navigate to repository SettingsSecrets

  2. Add secrets:

    • PROD_DB_URL

    • PROD_DB_PASSWORD

    • TEST_DB_URL

    • TEST_DB_PASSWORD

Advanced Example

name: Multi-Environment Data Refresh

on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'Target environment'
        required: true
        type: choice
        options:
          - dev
          - staging

jobs:
  refresh:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Mask and Subset Data
        run: |
          docker run \
            -v $(pwd):/config \
            synthesizedio/synthesized-tdk-cli \
            --config-file /config/workflow.yaml \
            --inventory-file /config/inventory-${{ inputs.environment }}.yaml
        env:
          OUTPUT_DB_URL: ${{ secrets[format('{0}_DB_URL', inputs.environment)] }}
          OUTPUT_DB_PASSWORD: ${{ secrets[format('{0}_DB_PASSWORD', inputs.environment)] }}