@@ -85,43 +85,78 @@ jobs:
8585 echo "Teradata Server Name QVCI: '${{ steps.create-csae-environment.outputs.teradata-server-name-qvci }}'"
8686 echo "=== Connection String Preview ==="
8787 echo "AIRFLOW_CONN_TERADATA_DEFAULT will use server: ${{ steps.create-csae-environment.outputs.teradata-server-name }}"
88- - name : " Install Airflow Teradata Provider and Run System tests "
88+ - name : " Setup Airflow and Add Connections "
8989 if : always()
9090 run : |
91- export AIRFLOW_HOME=~/airflow
92- mkdir -p $AIRFLOW_HOME
93- curl -LsSf https://astral.sh/uv/install.sh | sh
94- uv venv
95- source .venv/bin/activate
96- sudo apt update
91+ export AIRFLOW_HOME=~/airflow
92+ mkdir -p $AIRFLOW_HOME
93+ curl -LsSf https://astral.sh/uv/install.sh | sh
94+ uv venv
95+ source .venv/bin/activate
96+
97+ sudo apt update
98+ sudo apt-get install -y apt-transport-https apt-utils build-essential ca-certificates dirmngr \
99+ freetds-bin freetds-dev git graphviz graphviz-dev krb5-user ldap-utils libev4 libev-dev libffi-dev libgeos-dev \
100+ libkrb5-dev libldap2-dev libleveldb1d libleveldb-dev libsasl2-2 libsasl2-dev libsasl2-modules \
101+ libssl-dev libxmlsec1 libxmlsec1-dev locales lsb-release openssh-client pkgconf sasl2-bin \
102+ software-properties-common sqlite3 sudo unixodbc unixodbc-dev zlib1g-dev python3-venv python3-pip pipx default-libmysqlclient-dev \
103+ default-libmysqlclient-dev libxml2-dev libxmlsec1-dev libxmlsec1-openssl libtool libkrb5-dev krb5-multidev gcc g++
97104
98- sudo apt-get install -y apt-transport-https apt-utils build-essential ca-certificates dirmngr \
99- freetds-bin freetds-dev git graphviz graphviz-dev krb5-user ldap-utils libev4 libev-dev libffi-dev libgeos-dev \
100- libkrb5-dev libldap2-dev libleveldb1d libleveldb-dev libsasl2-2 libsasl2-dev libsasl2-modules \
101- libssl-dev libxmlsec1 libxmlsec1-dev locales lsb-release openssh-client pkgconf sasl2-bin \
102- software-properties-common sqlite3 sudo unixodbc unixodbc-dev zlib1g-dev python3-venv python3-pip pipx default-libmysqlclient-dev \
103- default-libmysqlclient-dev libxml2-dev libxmlsec1-dev libxmlsec1-openssl libtool libkrb5-dev krb5-multidev gcc g++
104-
105- sudo pip install pytest time-machine pytest-asyncio pytest-md-report cryptography pytest-html tailer pandas jinja2 sqlalchemy hatch
106-
107- uv sync --extra teradata --extra microsoft.azure --extra amazon
108-
109- export SYSTEM_TESTS_ENV_ID=teradatasystemtest
110- export AIRFLOW_CONN_TERADATA_DEFAULT='teradata://${{ vars.CSAE_AIRFLOW_ENV_USERNAME }}:${{ secrets.CSAE_AIRFLOW_ENV_PASSWORD }}@${{ steps.create-csae-environment.outputs.teradata-server-name }}:/${{ vars.CSAE_AIRFLOW_ENV_DATABASE }}'
111- export AIRFLOW_CONN_SSH_DEFAULT='ssh://${{ vars.CSAE_AIRFLOW_ENV_USERNAME }}:${{ secrets.CSAE_AIRFLOW_ENV_PASSWORD }}@${{ steps.create-csae-environment.outputs.teradata-server-name }}:/${{ vars.CSAE_AIRFLOW_ENV_DATABASE }}'
112- export AIRFLOW_CONN_TERADATA_LAKE='teradata://${{ vars.LAKE_ENV_USERNAME }}:${{ secrets.LAKE_ENV_PASSWORD }}@${{ vars.LAKE_SERVER_NAME }}:/${{ vars.LAKE_ENV_USERNAME }}'
113- export AIRFLOW_CONN_TERADATA_SSL_DEFAULT='teradata://${{ vars.CSAE_AIRFLOW_ENV_USERNAME }}:${{ secrets.CSAE_AIRFLOW_ENV_PASSWORD }}@${{ steps.create-csae-environment.outputs.teradata-server-name }}:/${{ vars.CSAE_AIRFLOW_ENV_DATABASE }}?sslmode=allow'
114- export AIRFLOW_CONN_TERADATA_SP_CALL='teradata://${{ vars.CSAE_AIRFLOW_ENV_USERNAME }}:${{ secrets.CSAE_AIRFLOW_ENV_PASSWORD }}@${{ steps.create-csae-environment.outputs.teradata-server-name }}:/${{ vars.CSAE_AIRFLOW_ENV_DATABASE }}?tmode=TERA'
115- export AIRFLOW_CONN_WASB_DEFAULT='wasb://${{ vars.AZURE_BLOB_ACCOUNTNAME }}:${{ secrets.AZURE_BLOB_ACCOUNT_SECRET_KEY_URI }}@'
116- export AIRFLOW_CONN_AWS_DEFAULT=aws://${{ vars.AWS_ACCESS_KEY_ID }}:${{ secrets.AWS_SECRET_ACCESS_KEY }}@/?aws_session_token=${{ secrets.AWS_SESSION_TOKEN }}
117- export AIRFLOW_VAR_AZURE_BLOB_ACCOUNTNAME=${{ vars.AZURE_BLOB_ACCOUNTNAME }}
118- export AIRFLOW_VAR_AZURE_BLOB_ACCOUNT_SECRET_KEY=${{ secrets.AZURE_BLOB_ACCOUNT_SECRET_KEY }}
119- export AIRFLOW_VAR_AWS_ACCESS_KEY_ID=${{ secrets.TERADATA_DOWNLOAD_AWS_SECRET_ACCESS_ID }}
120- export AIRFLOW_VAR_AWS_SECRET_ACCESS_KEY=${{ secrets.TERADATA_DOWNLOAD_AWS_SECRET_ACCESS_KEY }}
121-
122-
123- uv run pytest --keep-env-variables --system -W ignore::pytest.PytestRemovedIn9Warning --junitxml=report_test.xml providers/teradata/tests/system/teradata/*.py
124- cat report_test.xml
105+ sudo pip install pytest time-machine pytest-asyncio pytest-md-report cryptography pytest-html tailer pandas jinja2 sqlalchemy hatch
106+
107+ uv sync --extra teradata --extra microsoft.azure --extra amazon
108+
109+ # Initialize Airflow DB
110+ airflow db migrate
111+
112+ # Add Airflow connections using CLI
113+ echo "Adding Teradata connections to Airflow metadata database..."
114+ airflow connections delete teradata_default 2>/dev/null || true
115+ airflow connections add 'teradata_default' \
116+ --conn-uri "teradata://${{ vars.CSAE_AIRFLOW_ENV_USERNAME }}:${{ secrets.CSAE_AIRFLOW_ENV_PASSWORD }}@${{ steps.create-csae-environment.outputs.teradata-server-name }}:/${{ vars.CSAE_AIRFLOW_ENV_DATABASE }}"
117+
118+ airflow connections delete ssh_default 2>/dev/null || true
119+ airflow connections add 'ssh_default' \
120+ --conn-uri "ssh://${{ vars.CSAE_AIRFLOW_ENV_USERNAME }}:${{ secrets.CSAE_AIRFLOW_ENV_PASSWORD }}@${{ steps.create-csae-environment.outputs.teradata-server-name }}:/${{ vars.CSAE_AIRFLOW_ENV_DATABASE }}"
121+
122+ airflow connections delete teradata_lake 2>/dev/null || true
123+ airflow connections add 'teradata_lake' \
124+ --conn-uri "teradata://${{ vars.LAKE_ENV_USERNAME }}:${{ secrets.LAKE_ENV_PASSWORD }}@${{ vars.LAKE_SERVER_NAME }}:/${{ vars.LAKE_ENV_USERNAME }}"
125+
126+ airflow connections delete teradata_ssl_default 2>/dev/null || true
127+ airflow connections add 'teradata_ssl_default' \
128+ --conn-uri "teradata://${{ vars.CSAE_AIRFLOW_ENV_USERNAME }}:${{ secrets.CSAE_AIRFLOW_ENV_PASSWORD }}@${{ steps.create-csae-environment.outputs.teradata-server-name }}:/${{ vars.CSAE_AIRFLOW_ENV_DATABASE }}?sslmode=allow"
129+
130+ airflow connections delete teradata_sp_call 2>/dev/null || true
131+ airflow connections add 'teradata_sp_call' \
132+ --conn-uri "teradata://${{ vars.CSAE_AIRFLOW_ENV_USERNAME }}:${{ secrets.CSAE_AIRFLOW_ENV_PASSWORD }}@${{ steps.create-csae-environment.outputs.teradata-server-name }}:/${{ vars.CSAE_AIRFLOW_ENV_DATABASE }}?tmode=TERA"
133+
134+ airflow connections delete wasb_default 2>/dev/null || true
135+ airflow connections add 'wasb_default' \
136+ --conn-uri "wasb://${{ vars.AZURE_BLOB_ACCOUNTNAME }}:${{ secrets.AZURE_BLOB_ACCOUNT_SECRET_KEY_URI }}@"
137+
138+ airflow connections delete aws_default 2>/dev/null || true
139+ airflow connections add 'aws_default' \
140+ --conn-uri "aws://${{ vars.AWS_ACCESS_KEY_ID }}:${{ secrets.AWS_SECRET_ACCESS_KEY }}@/?aws_session_token=${{ secrets.AWS_SESSION_TOKEN }}"
141+
142+ # List connections to verify
143+ echo "=== Verifying Airflow Connections ==="
144+ airflow connections list
145+ - name : " Run System Tests"
146+ if : always()
147+ run : |
148+ export AIRFLOW_HOME=~/airflow
149+ source .venv/bin/activate
150+
151+ export SYSTEM_TESTS_ENV_ID=teradatasystemtest
152+ export AIRFLOW_VAR_AZURE_BLOB_ACCOUNTNAME=${{ vars.AZURE_BLOB_ACCOUNTNAME }}
153+ export AIRFLOW_VAR_AZURE_BLOB_ACCOUNT_SECRET_KEY=${{ secrets.AZURE_BLOB_ACCOUNT_SECRET_KEY }}
154+ export AIRFLOW_VAR_AWS_ACCESS_KEY_ID=${{ secrets.TERADATA_DOWNLOAD_AWS_SECRET_ACCESS_ID }}
155+ export AIRFLOW_VAR_AWS_SECRET_ACCESS_KEY=${{ secrets.TERADATA_DOWNLOAD_AWS_SECRET_ACCESS_KEY }}
156+
157+ echo "=== Running Teradata System Tests ==="
158+ uv run pytest --system -W ignore::pytest.PytestRemovedIn9Warning --junitxml=report_test.xml providers/teradata/tests/system/teradata/*.py
159+ cat report_test.xml
125160 - name : " Delete CSAE environment"
126161 if : always()
127162 run : |
0 commit comments