diff --git a/.github/env/Linux/gradle.properties b/.github/env/Linux/gradle.properties index ad8b3b2e..64fb2fc9 100644 --- a/.github/env/Linux/gradle.properties +++ b/.github/env/Linux/gradle.properties @@ -2,3 +2,13 @@ # we shouldn't rely on gradle for any of this logic. org.gradle.java.installations.auto-download=false org.gradle.java.installations.auto-detect=false + +# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources +# GitHub hosted linux runner environment has 2 CPUs and 7G RAM. +# +# Turning off parallelism makes things a bit more deterministic, and is specifically neded for publishing +# (to ensure we don't create disjointed staging repositories). + +org.gradle.parallel=false +org.gradle.workers.max=1 +org.gradle.jvmargs=-Xmx6g diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 162da96e..3aa3d5ca 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -4,7 +4,7 @@ on: pull_request: branches: [ main ] push: - branches: [ main ] + branches: [ 'main', 'release/v*' ] jobs: check: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 00000000..552d768e --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,43 @@ +name: Publish CI + +on: + push: + branches: [ 'release/v*' ] + +# Ensure only one publish at any given time +concurrency: publish + +jobs: + check: + runs-on: ubuntu-20.04 + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Check gitignore rules + run: .github/scripts/check-gitignore-rules.sh + + - name: Setup JDK + id: setup-java + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: '11' + cache: 'gradle' + + - name: Setup gradle properties + run: | + cat .github/env/${{ runner.os }}/gradle.properties >> gradle.properties + echo >> gradle.properties + echo "org.gradle.java.installations.paths=${{ steps.setup-java.outputs.path }}" >> gradle.properties + cat gradle.properties + + - name: Publish + # Note: even though we specify org.gradle.parallel=false in our CI gradle.properties, we want to be explicit + # here about no parallelism to ensure we don't create disjointed staging repositories. + run: ./gradlew --no-parallel publish + env: + ORG_GRADLE_PROJECT_ossrhUsername: ${{ secrets.SONATYPE_USERNAME }} + ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.SONATYPE_PASSWORD }} + ORG_GRADLE_PROJECT_signingKey: ${{ secrets.CI_AT_DEEPHAVEN_KEY }} + ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.CI_AT_DEEPHAVEN_PASSWORD }}