This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy flights_project to TEST with liquibase | |
| concurrency: 1 | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| types: | |
| - opened | |
| - synchronize | |
| branches: | |
| - dev | |
| paths: | |
| - "**/*.yml" | |
| - "**/*.py" | |
| push: | |
| branches: | |
| - test/liquibase* | |
| paths: | |
| - "**/*.yml" | |
| - "**/*.py" | |
| - "**/*.xml" | |
| - "**/*.txt" | |
| jobs: | |
| deploy: | |
| name: "Test and deploy bundle" | |
| runs-on: ubuntu-latest | |
| environment: test | |
| env: | |
| DATABRICKS_HOST: ${{ vars.DATABRICKS_HOST }} | |
| DATABRICKS_TOKEN: ${{ vars.DATABRICKS_TOKEN_TST }} | |
| DATABRICKS_BUNDLE_ENV: dev # should be TST, 'dev' is set for demo purposes only | |
| defaults: | |
| run: | |
| working-directory: . | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up Python 3.12 | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.12' | |
| #---------------------------------------------- | |
| # Set up Java (Temurin JDK 8) | |
| #---------------------------------------------- | |
| - name: Set up Java 8 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '8' | |
| distribution: 'temurin' | |
| #---------------------------------------------- | |
| # Download Liquibase CLI and make executable | |
| #---------------------------------------------- | |
| - name: Download Liquibase CLI | |
| run: | | |
| LIQUIBASE_VERSION=4.33.0 | |
| wget https://github.com/liquibase/liquibase/releases/download/v${LIQUIBASE_VERSION}/liquibase-${LIQUIBASE_VERSION}.tar.gz | |
| mkdir liquibase_download | |
| tar -xzf liquibase-${LIQUIBASE_VERSION}.tar.gz -C liquibase_download | |
| #---------------------------------------------- | |
| # Download Databricks JDBC and extension JARs | |
| #---------------------------------------------- | |
| - name: Download Databricks JDBC Driver and Liquibase Extension | |
| run: | | |
| # Download Databricks JDBC driver | |
| wget https://databricks-bi-artifacts.s3.us-east-2.amazonaws.com/simbaspark-drivers/jdbc/2.7.3/DatabricksJDBC42-2.7.3.1010.zip | |
| unzip DatabricksJDBC42-2.7.3.1010.zip | |
| mv DatabricksJDBC-2.7.3.1010/DatabricksJDBC42.jar liquibase_download/lib | |
| # Download Liquibase-Databricks extension | |
| wget https://github.com/liquibase/liquibase-databricks/releases/download/v1.4.2/liquibase-databricks-1.4.2.jar | |
| mv liquibase-databricks-1.4.2.jar liquibase_download/lib | |
| #---------------------------------------------- | |
| # Run Liquibase connection test & update | |
| #---------------------------------------------- | |
| - name: Run Liquibase connection test & update | |
| env: | |
| LIQUIBASE_COMMAND_URL: ${{ vars.DATABRICKS_JDBC_URL }} | |
| LIQUIBASE_COMMAND_USERNAME: "token" | |
| LIQUIBASE_COMMAND_PASSWORD: ${{ secrets.DATABRICKS_TOKEN_TST }} | |
| LIQUIBASE_COMMAND_DEFAULT_CATALOG_NAME: ${{ vars.LIQUIBASE_CATALOG_NAME }} | |
| LIQUIBASE_COMMAND_DEFAULT_SCHEMA_NAME: ${{ vars.LIQUIBASE_SCHEMA_NAME }} | |
| run: | | |
| liquibase_download/liquibase update --changelog-file=./liquibase/root.changelog.xml --log-level INFO | |
| #---------------------------------------------- | |
| # Install dependencies and package | |
| #---------------------------------------------- | |
| - run: python -m pip install --upgrade pip | |
| - run: pip install -r ./requirements.txt -r ./dev-requirements.txt | |
| - run: pip install -e . | |
| #---------------------------------------------- | |
| # run test suite | |
| #---------------------------------------------- | |
| - name: Run unit tests | |
| env: | |
| DATABRICKS_HOST: ${{ vars.DATABRICKS_HOST }} | |
| DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN_TST }} | |
| DATABRICKS_SERVERLESS_COMPUTE_ID: "auto" | |
| run: | | |
| pytest ./tests/ | |
| - uses: databricks/setup-cli@main | |
| #---------------------------------------------- | |
| # run job (in staging) | |
| #---------------------------------------------- | |
| - name: Run job (in staging) | |
| env: | |
| DATABRICKS_HOST: ${{ vars.DATABRICKS_HOST }} | |
| DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN_TST }} | |
| DATABRICKS_BUNDLE_ENV: dev # should be TST, 'dev' is set for demo purposes only | |
| BUNDLE_VAR_liquibase_catalog: ${{ vars.LIQUIBASE_CATALOG_NAME }} | |
| BUNDLE_VAR_liquibase_schema: ${{ vars.LIQUIBASE_SCHEMA_NAME }} | |
| run: | | |
| databricks bundle deploy; databricks bundle run flights_notebook; databricks bundle destroy --auto-approve | |