From 8cbaa139f14cb00db0e75cca01a2cfccd3e30732 Mon Sep 17 00:00:00 2001 From: Kirill Kurdyukov Date: Wed, 14 Feb 2024 13:47:32 +0300 Subject: [PATCH 1/2] [Liquibase]: CI and publish Maven repository --- .github/workflows/ci-liquibase-dialect.yaml | 66 ++++++++++ .../workflows/publish-liquibase-dialect.yaml | 82 ++++++++++++ liquibase-dialect/pom.xml | 120 +++++++++++++++++- 3 files changed, 267 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci-liquibase-dialect.yaml create mode 100644 .github/workflows/publish-liquibase-dialect.yaml diff --git a/.github/workflows/ci-liquibase-dialect.yaml b/.github/workflows/ci-liquibase-dialect.yaml new file mode 100644 index 0000000..404eec8 --- /dev/null +++ b/.github/workflows/ci-liquibase-dialect.yaml @@ -0,0 +1,66 @@ +name: YDB Liquibase Dialect CI with Maven + +on: + push: + paths: + - 'liquibase-dialect/**' + branches: + - main + pull_request: + paths: + - 'liquibase-dialect/**' + types: + - opened + - reopened + - edited + +env: + MAVEN_ARGS: --batch-mode --update-snapshots -Dstyle.color=always + +jobs: + build: + name: YDB Liquibase Dialect + runs-on: ubuntu-latest + + strategy: + matrix: + java: [ '17' ] + + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK ${{matrix.java}} + uses: actions/setup-java@v4 + with: + java-version: ${{matrix.java}} + distribution: 'temurin' + cache: maven + + - name: Extract Liquibase Dialect version + working-directory: ./liquibase-dialect + run: | + VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) + echo "LIQUIBASE_DIALECT_VERSION=$VERSION" >> "$GITHUB_ENV" + + - name: Download Liquibase Dialect dependencies + working-directory: ./liquibase-dialect + run: mvn $MAVEN_ARGS dependency:go-offline + + - name: Build Liquibase Dialect + working-directory: ./liquibase-dialect + run: mvn $MAVEN_ARGS install + +# TODO Run example +# - uses: actions/checkout@v4 +# with: +# repository: ydb-platform/ydb-java-examples +# ref: master +# path: examples +# +# - name: Download dependencies +# working-directory: ./examples/jdbc/spring-data-jpa +# run: mvn $MAVEN_ARGS -Dhibernate.ydb.dialect.version=$HIBERNATE_DIALECT_VERSION dependency:go-offline +# +# - name: Test examples with Maven +# working-directory: ./examples/jdbc/spring-data-jpa +# run: mvn $MAVEN_ARGS -Dhibernate.ydb.dialect.version=$HIBERNATE_DIALECT_VERSION test diff --git a/.github/workflows/publish-liquibase-dialect.yaml b/.github/workflows/publish-liquibase-dialect.yaml new file mode 100644 index 0000000..9b5f36b --- /dev/null +++ b/.github/workflows/publish-liquibase-dialect.yaml @@ -0,0 +1,82 @@ +name: Publish YDB Liquibase Dialect + +on: + push: + tags: + - 'liquibase-ydb/v[0-9]+.[0-9]+.[0-9]+' + +env: + MAVEN_ARGS: --batch-mode --no-transfer-progress -Dstyle.color=always + +jobs: + validate: + name: Validate YDB Liquibase Dialect + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Extract Liquibase dialect version + working-directory: ./liquibase-dialect + run: | + LIQUIBASE_DIALECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) + echo "LIQUIBASE_DIALECT_VERSION=$LIQUIBASE_DIALECT_VERSION" >> "$GITHUB_ENV" + + - name: Fail workflow if version is snapshot + if: endsWith(env.LIQUIBASE_DIALECT_VERSION, 'SNAPSHOT') + uses: actions/github-script@v6 + with: + script: core.setFailed('SNAPSHOT version cannot be published') + + - name: Fail workflow if version is not equal to tag name + if: format('liquibase-ydb/v{0}', env.LIQUIBASE_DIALECT_VERSION) != github.ref_name + uses: actions/github-script@v6 + with: + script: core.setFailed('Release name must be equal to project version') + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: 'temurin' + cache: 'maven' + + - name: Download dependencies + working-directory: ./liquibase-dialect + run: mvn $MAVEN_ARGS dependency:go-offline + + - name: Build with Maven + working-directory: ./liquibase-dialect + run: mvn $MAVEN_ARGS package + + publish: + name: Publish YDB Liquibase Dialect + runs-on: ubuntu-latest + needs: validate + + steps: + - name: Install gpg secret key + run: | + # Install gpg secret key + cat <(echo -e "${{ secrets.MAVEN_OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import + # Verify gpg secret key + gpg --list-secret-keys --keyid-format LONG + + - uses: actions/checkout@v4 + + - name: Set up Maven Central Repository + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: 'temurin' + cache: 'maven' + server-id: ossrh-s01 + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + + - name: Publish package + working-directory: ./liquibase-dialect + run: mvn $MAVEN_ARGS -Possrh-s01 -Dgpg.passphrase=${{ secrets.MAVEN_OSSRH_GPG_PASSWORD }} clean deploy + env: + MAVEN_USERNAME: ${{ secrets.MAVEN_OSSRH_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_OSSRH_TOKEN }} diff --git a/liquibase-dialect/pom.xml b/liquibase-dialect/pom.xml index 65d6159..2823182 100644 --- a/liquibase-dialect/pom.xml +++ b/liquibase-dialect/pom.xml @@ -12,7 +12,13 @@ tech.ydb.dialects liquibase-ydb-dialect - 0.9.0-SNAPSHOT + 0.9.1 + + Liquibase YDB Dialect + Support Liquibase YDB Dialect + https://github.com/ydb-platform/ydb-java-dialects + + jar @@ -23,6 +29,19 @@ + + https://github.com/ydb-platform/ydb-java-dialects + scm:git:https://github.com/ydb-platform/ydb-java-dialects.git + scm:git:https://github.com/ydb-platform/ydb-java-dialects.git + + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + + + @@ -55,4 +74,103 @@ + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.5.0 + + 1.8 + + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.1.0 + + + true + + + + + + + + + jdk8-bootstrap + + [9 + + + 8 + + + + + ossrh-s01 + + false + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.1.0 + + + sign-artifacts + verify + + sign + + + + + + --pinentry-mode + loopback + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.13 + true + + ossrh-s01 + https://s01.oss.sonatype.org/ + false + + + + + + \ No newline at end of file From 989f81edeab22171b327dc7a3fd02ba711bedf50 Mon Sep 17 00:00:00 2001 From: Kirill Kurdyukov Date: Wed, 14 Feb 2024 13:52:35 +0300 Subject: [PATCH 2/2] [Liquibase]: '8' '11' '17' Java versions --- .github/workflows/ci-liquibase-dialect.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-liquibase-dialect.yaml b/.github/workflows/ci-liquibase-dialect.yaml index 404eec8..2ffd600 100644 --- a/.github/workflows/ci-liquibase-dialect.yaml +++ b/.github/workflows/ci-liquibase-dialect.yaml @@ -24,7 +24,7 @@ jobs: strategy: matrix: - java: [ '17' ] + java: [ '8', '11', '17' ] steps: - uses: actions/checkout@v4