diff --git a/.github/workflows/lth.yml b/.github/workflows/lth.yml index fc5a5dd1..b3a1184b 100644 --- a/.github/workflows/lth.yml +++ b/.github/workflows/lth.yml @@ -25,7 +25,8 @@ jobs: TF_VAR_TEST_CATALOG: main TF_VAR_TEST_SCHEMA: liquibase_harness_test_ds WORKSPACE_ID: ${{ secrets.TH_DATABRICKS_WORKSPACE_ID }} - + LIQUIBOT_TOKEN: ${{ secrets.LIQUIBOT_PAT }} + GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} strategy: max-parallel: 1 matrix: @@ -62,12 +63,54 @@ jobs: distribution: temurin cache: 'maven' + - name: maven-settings-xml-action + uses: whelk-io/maven-settings-xml-action@v22 + with: + repositories: | + [ + { + "id": "liquibase", + "url": "https://maven.pkg.github.com/liquibase/liquibase", + "releases": { + "enabled": "false" + }, + "snapshots": { + "enabled": "true", + "updatePolicy": "always" + } + }, + { + "id": "liquibase-pro", + "url": "https://maven.pkg.github.com/liquibase/liquibase-pro", + "releases": { + "enabled": "false" + }, + "snapshots": { + "enabled": "true", + "updatePolicy": "always" + } + } + ] + servers: | + [ + { + "id": "liquibase-pro", + "username": "liquibot", + "password": "${{ secrets.LIQUIBOT_PAT }}" + }, + { + "id": "liquibase", + "username": "liquibot", + "password": "${{ secrets.LIQUIBOT_PAT }}" + } + ] + - name: Build with Maven # Build the code with Maven (skip tests) - run: mvn -B -ntp -Dmaven.test.skip package + run: mvn -B -ntp -Dmaven.test.skip package -Dliquibase.version=master-SNAPSHOT - name: Run ${{ matrix.liquibase-support-level }} Liquibase Test Harness # Run the Liquibase test harness at each test level if: always() # Run the action even if the previous steps fail - run: mvn -B -ntp -DdbPassword=${{env.TF_VAR_DBX_TOKEN}} -DdbUrl='${{env.DATABRICKS_URL}}' -Dtest=liquibase.ext.databricks.${{ matrix.liquibase-support-level }}ExtensionHarnessTestSuite test # Run the Liquibase test harness at each test level + run: mvn -B -ntp -DdbPassword=${{env.TF_VAR_DBX_TOKEN}} -DdbUrl='${{env.DATABRICKS_URL}}' -Dtest=liquibase.ext.databricks.${{ matrix.liquibase-support-level }}ExtensionHarnessTestSuite test -Dliquibase.version=master-SNAPSHOT # Run the Liquibase test harness at each test level - name: Test Reporter # Generate a test report using the Test Reporter action uses: dorny/test-reporter@v1.9.1 @@ -93,4 +136,4 @@ jobs: else echo "Schema does not exist. Skipping removal." fi - fi \ No newline at end of file + fi diff --git a/pom.xml b/pom.xml index 7a4fe798..2c877ef8 100644 --- a/pom.xml +++ b/pom.xml @@ -64,8 +64,8 @@ src/main/java src/test 1.0.10 - 5.11.0 - 1.11.0 + 5.11.2 + 1.11.2 target @@ -160,7 +160,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.10.0 + 3.10.1 true false diff --git a/src/main/java/liquibase/ext/databricks/parser/NamespaceDetailsDatabricks.java b/src/main/java/liquibase/ext/databricks/parser/NamespaceDetailsDatabricks.java new file mode 100644 index 00000000..33994df2 --- /dev/null +++ b/src/main/java/liquibase/ext/databricks/parser/NamespaceDetailsDatabricks.java @@ -0,0 +1,55 @@ +package liquibase.ext.databricks.parser; + +import liquibase.parser.LiquibaseParser; +import liquibase.parser.NamespaceDetails; +import liquibase.parser.core.xml.XMLChangeLogSAXParser; +import liquibase.serializer.LiquibaseSerializer; +import liquibase.serializer.core.xml.XMLChangeLogSerializer; + +/** + * Namespace details for Databricks extension. + * It is used by Liquibase when generating changelogs - ie during a snapshot. + */ +public class NamespaceDetailsDatabricks implements NamespaceDetails { + + public static final String DATABRICKS_NAMESPACE = "http://www.liquibase.org/xml/ns/databricks"; + + public static final String DATABRICKS_XSD = "http://www.liquibase.org/xml/ns/databricks/liquibase-databricks-latest.xsd"; + + @Override + public int getPriority() { + return PRIORITY_EXTENSION; + } + + @Override + public boolean supports(LiquibaseSerializer serializer, String namespace) { + return namespaceCorrect(namespace) && serializer instanceof XMLChangeLogSerializer; + } + + @Override + public boolean supports(LiquibaseParser parser, String namespace) { + return namespaceCorrect(namespace) && parser instanceof XMLChangeLogSAXParser; + } + + @Override + public String getShortName(String namespace) { + return "databricks"; + } + + @Override + public String getSchemaUrl(String namespace) { + return DATABRICKS_XSD; + } + + @Override + public String[] getNamespaces() { + return new String[]{ + DATABRICKS_NAMESPACE + }; + } + + private boolean namespaceCorrect(String namespace) { + return namespace.equals(DATABRICKS_NAMESPACE) || namespace.equals(DATABRICKS_XSD); + } + +} diff --git a/src/main/resources/META-INF/services/liquibase.parser.NamespaceDetails b/src/main/resources/META-INF/services/liquibase.parser.NamespaceDetails new file mode 100644 index 00000000..351dd668 --- /dev/null +++ b/src/main/resources/META-INF/services/liquibase.parser.NamespaceDetails @@ -0,0 +1 @@ +liquibase.ext.databricks.parser.NamespaceDetailsDatabricks