Skip to content

Merge pull request #9 from stackql/feature/notebook-updates #18

Merge pull request #9 from stackql/feature/notebook-updates

Merge pull request #9 from stackql/feature/notebook-updates #18

# .github/workflows/databricks-workspace-provisioning.yml
name: Databricks Data Sharing Workspace Provisioning
on:
pull_request:
branches:
- main
paths:
- 'workspace_provisioning/**'
- '.github/workflows/databricks-workspace-provisioning.yml'
push:
branches:
- main
paths:
- 'workspace_provisioning/**'
- '.github/workflows/databricks-workspace-provisioning.yml'
env:
# AWS Credentials
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
# Databricks Account Credentials
DATABRICKS_ACCOUNT_ID: ${{ secrets.DATABRICKS_ACCOUNT_ID }}
DATABRICKS_AWS_ACCOUNT_ID: ${{ secrets.DATABRICKS_AWS_ACCOUNT_ID }}
DATABRICKS_CLIENT_ID: ${{ secrets.DATABRICKS_CLIENT_ID }}
DATABRICKS_CLIENT_SECRET: ${{ secrets.DATABRICKS_CLIENT_SECRET }}
jobs:
setup:
name: Setup Environment
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
outputs:
environment: ${{ steps.set-env.outputs.environment }}
stack_env: ${{ steps.set-env.outputs.stack_env }}
steps:
- name: Determine environment
id: set-env
run: |
if [ "${{ github.event_name }}" == "pull_request" ]; then
echo "environment=dev" >> $GITHUB_OUTPUT
echo "stack_env=dev" >> $GITHUB_OUTPUT
else
echo "environment=prd" >> $GITHUB_OUTPUT
echo "stack_env=prd" >> $GITHUB_OUTPUT
fi
provision-provider-workspace:
name: Provision Provider Workspace (us-east-1)
needs: setup
runs-on: ubuntu-latest
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
DATABRICKS_CLIENT_ID: ${{ secrets.DATABRICKS_CLIENT_ID }}
DATABRICKS_CLIENT_SECRET: ${{ secrets.DATABRICKS_CLIENT_SECRET }}
outputs:
provider_workspace_id: ${{ steps.stackql-deploy.outputs.workspace_id }}
provider_workspace_url: ${{ steps.stackql-deploy.outputs.workspace_url }}
provider_deployment_name: ${{ steps.stackql-deploy.outputs.deployment_name }}
environment: ${{ needs.setup.outputs.environment }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy infrastructure with StackQL
id: exec-stackql-deploy
uses: stackql/[email protected]
with:
command: 'build'
stack_dir: 'workspace_provisioning/provider_workspace'
stack_env: ${{ needs.setup.outputs.stack_env }}
env_vars: AWS_REGION=us-east-1,AWS_ACCOUNT_ID=${{ secrets.AWS_ACCOUNT_ID }},DATABRICKS_ACCOUNT_ID=${{ secrets.DATABRICKS_ACCOUNT_ID }},DATABRICKS_AWS_ACCOUNT_ID=${{ secrets.DATABRICKS_AWS_ACCOUNT_ID }}
output_file: 'provider-deployment-outputs.json'
# show_queries: 'true'
- name: Set outputs from stackql-deploy exports
id: stackql-deploy
run: |
echo "workspace_id=$(jq -r '.databricks_workspace_id' provider-deployment-outputs.json)" >> $GITHUB_OUTPUT
echo "workspace_url=$(jq -r '.databricks_workspace_url' provider-deployment-outputs.json)" >> $GITHUB_OUTPUT
echo "deployment_name=$(jq -r '.databricks_deployment_name' provider-deployment-outputs.json)" >> $GITHUB_OUTPUT
provision-recipient-workspace:
name: Provision Recipient Workspace (us-west-2)
needs: setup
runs-on: ubuntu-latest
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
DATABRICKS_CLIENT_ID: ${{ secrets.DATABRICKS_CLIENT_ID }}
DATABRICKS_CLIENT_SECRET: ${{ secrets.DATABRICKS_CLIENT_SECRET }}
outputs:
recipient_workspace_id: ${{ steps.stackql-deploy.outputs.workspace_id }}
recipient_workspace_url: ${{ steps.stackql-deploy.outputs.workspace_url }}
recipient_deployment_name: ${{ steps.stackql-deploy.outputs.deployment_name }}
environment: ${{ needs.setup.outputs.environment }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy infrastructure with StackQL
id: exec-stackql-deploy
uses: stackql/[email protected]
with:
command: 'build'
stack_dir: 'workspace_provisioning/recipient_workspace'
stack_env: ${{ needs.setup.outputs.stack_env }}
env_vars: AWS_REGION=us-west-2,AWS_ACCOUNT_ID=${{ secrets.AWS_ACCOUNT_ID }},DATABRICKS_ACCOUNT_ID=${{ secrets.DATABRICKS_ACCOUNT_ID }},DATABRICKS_AWS_ACCOUNT_ID=${{ secrets.DATABRICKS_AWS_ACCOUNT_ID }}
output_file: 'recipient-deployment-outputs.json'
# show_queries: 'true'
- name: Set outputs from stackql-deploy exports
id: stackql-deploy
run: |
echo "workspace_id=$(jq -r '.databricks_workspace_id' recipient-deployment-outputs.json)" >> $GITHUB_OUTPUT
echo "workspace_url=$(jq -r '.databricks_workspace_url' recipient-deployment-outputs.json)" >> $GITHUB_OUTPUT
echo "deployment_name=$(jq -r '.databricks_deployment_name' recipient-deployment-outputs.json)" >> $GITHUB_OUTPUT