-
Notifications
You must be signed in to change notification settings - Fork 4
75 lines (65 loc) · 3.04 KB
/
test_with_clone.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
---
name: Test Changes with Cloned DB
on:
push:
branches: "main"
pull_request:
types: [ labeled ]
permissions:
contents: read
jobs:
test_with_clone:
runs-on: ubuntu-latest
if: contains(github.event.pull_request.labels.*.name, 'test_with_clone')
env:
SNOWFLAKE_PASSWORD: ${{ secrets.SNOWSQL_PWD }}
SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWSQL_ACCOUNT }}
SNOWFLAKE_USER: ${{ secrets.SNOWSQL_USER }}
# TODO: Not the right role?
SNOWFLAKE_ROLE: DATA_ENGINEER
# TODO: This needs to be the dev db, since that is the bleeding edge
SNOWFLAKE_SYNAPSE_DATA_WAREHOUSE_DATABASE: ${{ vars.SNOWFLAKE_SYNAPSE_DATA_WAREHOUSE_DATABASE }}
SNOWFLAKE_CLONED_DATABASE_NAME: "synapse_data_warehouse_${{ github.sha }}"
SNOWFLAKE_WAREHOUSE: ${{ secrets.SNOWSQL_WAREHOUSE }}
SNOWFLAKE_SYNAPSE_STAGE_STORAGE_INTEGRATION: ${{ vars.SNOWFLAKE_SYNAPSE_STAGE_STORAGE_INTEGRATION }}
SNOWFLAKE_SYNAPSE_STAGE_URL: ${{ vars.SNOWFLAKE_SYNAPSE_STAGE_URL }}
STACK: ${{ vars.STACK }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: install-py-dependencies
shell: bash
run: |
pip install schemachange==3.6.1
pip install numpy==1.26.4
pip install pandas==1.5.3
- name: Install SnowSQL
run: |
curl -O https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/1.2/linux_x86_64/snowsql-1.2.9-linux_x86_64.bash
SNOWSQL_DEST=~/bin SNOWSQL_LOGIN_SHELL=~/.profile bash snowsql-1.2.9-linux_x86_64.bash
- name: debug
shell: bash
run: |
echo "SNOWFLAKE_ACCOUNT: $SNOWFLAKE_ACCOUNT"
echo "SNOWFLAKE_USER: ${{ secrets.SNOWSQL_USER }}"
echo "SNOWFLAKE_ROLE: $SNOWFLAKE_ROLE"
# We clone the DB using the syntax seen here:
# https://docs.snowflake.com/en/sql-reference/sql/create-clone#databases-schemas
- name: zero-copy clone the database
shell: bash
# TODO: How do we drop the tasks? Add "IGNORE TASKS" at the end? This is maybe only relevant if we use SYSADMIN role for cloning.
run: |
env SNOWFLAKE_ACCOUNT=$SNOWFLAKE_ACCOUNT \
SNOWFLAKE_USER=$SNOWFLAKE_USER \
SNOWFLAKE_ROLE=$SNOWFLAKE_ROLE \
SNOWFLAKE_WAREHOUSE=$SNOWFLAKE_WAREHOUSE \
SNOWFLAKE_PASSWORD=$SNOWFLAKE_PASSWORD \
~/bin/snowsql \
-a $SNOWFLAKE_ACCOUNT \
-u $SNOWFLAKE_USER \
-r $SNOWFLAKE_ROLE \
-w $SNOWFLAKE_WAREHOUSE \
-p $SNOWFLAKE_PASSWORD \
-q "CREATE DATABASE $SNOWFLAKE_CLONED_DATABASE_NAME CLONE $SNOWFLAKE_SYNAPSE_DATA_WAREHOUSE_DATABASE"