diff --git a/.github/workflows/java-gradle-docker.yaml b/.github/workflows/java-gradle-docker.yaml index 7294e39f9..21fe9f3df 100644 --- a/.github/workflows/java-gradle-docker.yaml +++ b/.github/workflows/java-gradle-docker.yaml @@ -84,25 +84,35 @@ jobs: working-directory: ${{ inputs.working-directory }} test: - name: Test + name: Test and asses code quality runs-on: ubuntu-22.04 needs: build steps: - name: Test - uses: bakdata/ci-templates/actions/java-gradle-test@v1.16.0 + uses: bakdata/ci-templates/actions/java-gradle-test@feat/split-test + # uses: bakdata/ci-templates/actions/java-gradle-test@1.35.0 with: - sonar-token: ${{ secrets.sonar-token }} - sonar-organization: ${{ secrets.sonar-organization }} - signing-secret-key-ring: ${{ secrets.signing-secret-key-ring }} - signing-key-id: ${{ secrets.signing-key-id }} - signing-password: ${{ secrets.signing-password }} + gradle-cache: ${{ inputs.gradle-cache }} + gradle-version: ${{ inputs.gradle-version }} java-distribution: ${{ inputs.java-distribution }} java-version: ${{ inputs.java-version }} - gradle-version: ${{ inputs.gradle-version }} + working-directory: ${{ inputs.working-directory }} + - name: Access code quality + uses: bakdata/ci-templates/actions/java-gradle-assess-code-quality@feat/split-test + # uses: bakdata/ci-templates/actions/java-gradle-assess-code-quality@1.35.0 + with: gradle-cache: ${{ inputs.gradle-cache }} + gradle-version: ${{ inputs.gradle-version }} + java-distribution: ${{ inputs.java-distribution }} + java-version: ${{ inputs.java-version }} + signing-key-id: ${{ secrets.signing-key-id }} + signing-password: ${{ secrets.signing-password }} + signing-secret-key-ring: ${{ secrets.signing-secret-key-ring }} + sonar-organization: ${{ secrets.sonar-organization }} + sonar-token: ${{ secrets.sonar-token }} working-directory: ${{ inputs.working-directory }} - + build-jib: name: Build tarball image runs-on: ubuntu-22.04 diff --git a/.github/workflows/java-gradle-library.yaml b/.github/workflows/java-gradle-library.yaml index c7c3eeecc..8618d1084 100644 --- a/.github/workflows/java-gradle-library.yaml +++ b/.github/workflows/java-gradle-library.yaml @@ -74,23 +74,33 @@ jobs: working-directory: ${{ inputs.working-directory }} test: - name: Test + name: Test and asses code quality runs-on: ubuntu-22.04 needs: build steps: - name: Test - uses: bakdata/ci-templates/actions/java-gradle-test@v1.16.0 + uses: bakdata/ci-templates/actions/java-gradle-test@feat/split-test + # uses: bakdata/ci-templates/actions/java-gradle-test@1.35.0 with: - sonar-token: ${{ secrets.sonar-token }} - sonar-organization: ${{ secrets.sonar-organization }} - signing-secret-key-ring: ${{ secrets.signing-secret-key-ring }} - signing-key-id: ${{ secrets.signing-key-id }} - signing-password: ${{ secrets.signing-password }} + gradle-cache: ${{ inputs.gradle-cache }} + gradle-version: ${{ inputs.gradle-version }} java-distribution: ${{ inputs.java-distribution }} java-version: ${{ inputs.java-version }} - gradle-version: ${{ inputs.gradle-version }} + working-directory: ${{ inputs.working-directory }} + - name: Access code quality + uses: bakdata/ci-templates/actions/java-gradle-assess-code-quality@feat/split-test + # uses: bakdata/ci-templates/actions/java-gradle-assess-code-quality@1.35.0 + with: gradle-cache: ${{ inputs.gradle-cache }} + gradle-version: ${{ inputs.gradle-version }} + java-distribution: ${{ inputs.java-distribution }} + java-version: ${{ inputs.java-version }} + signing-key-id: ${{ secrets.signing-key-id }} + signing-password: ${{ secrets.signing-password }} + signing-secret-key-ring: ${{ secrets.signing-secret-key-ring }} + sonar-organization: ${{ secrets.sonar-organization }} + sonar-token: ${{ secrets.sonar-token }} working-directory: ${{ inputs.working-directory }} publish: diff --git a/.github/workflows/java-gradle-plugin.yaml b/.github/workflows/java-gradle-plugin.yaml index eec4c3980..dc997f8a8 100644 --- a/.github/workflows/java-gradle-plugin.yaml +++ b/.github/workflows/java-gradle-plugin.yaml @@ -80,23 +80,33 @@ jobs: working-directory: ${{ inputs.working-directory }} test: - name: Test + name: Test and asses code quality runs-on: ubuntu-22.04 needs: build steps: - name: Test - uses: bakdata/ci-templates/actions/java-gradle-test@v1.16.0 + uses: bakdata/ci-templates/actions/java-gradle-test@feat/split-test + # uses: bakdata/ci-templates/actions/java-gradle-test@1.35.0 with: - sonar-token: ${{ secrets.sonar-token }} - sonar-organization: ${{ secrets.sonar-organization }} - signing-secret-key-ring: ${{ secrets.signing-secret-key-ring }} - signing-key-id: ${{ secrets.signing-key-id }} - signing-password: ${{ secrets.signing-password }} + gradle-cache: ${{ inputs.gradle-cache }} + gradle-version: ${{ inputs.gradle-version }} java-distribution: ${{ inputs.java-distribution }} java-version: ${{ inputs.java-version }} - gradle-version: ${{ inputs.gradle-version }} + working-directory: ${{ inputs.working-directory }} + - name: Access code quality + uses: bakdata/ci-templates/actions/java-gradle-assess-code-quality@feat/split-test + # uses: bakdata/ci-templates/actions/java-gradle-assess-code-quality@1.35.0 + with: gradle-cache: ${{ inputs.gradle-cache }} + gradle-version: ${{ inputs.gradle-version }} + java-distribution: ${{ inputs.java-distribution }} + java-version: ${{ inputs.java-version }} + signing-key-id: ${{ secrets.signing-key-id }} + signing-password: ${{ secrets.signing-password }} + signing-secret-key-ring: ${{ secrets.signing-secret-key-ring }} + sonar-organization: ${{ secrets.sonar-organization }} + sonar-token: ${{ secrets.sonar-token }} working-directory: ${{ inputs.working-directory }} publish: diff --git a/actions/java-gradle-assess-code-quality/README.md b/actions/java-gradle-assess-code-quality/README.md new file mode 100644 index 000000000..b45a3f964 --- /dev/null +++ b/actions/java-gradle-assess-code-quality/README.md @@ -0,0 +1,40 @@ +# assess-code-quality + +This action assess code quality and tests signing for Sonatype. + +## Input Parameters + +If you do not set input parameters for publishing code quality test results on Sonarcloud or for testing the signing for +Sonatype, then these steps are skipped. + +| Name | Required | Default Value | Type | Description | +| ----------------------- | :------: | :-----------: | :-----: | ------------------------------------------------------------------------------------------------------------- | +| download-lfs-files | ❌ | false | boolean | Whether the Git checkout action should resolve LFS files or not | +| gradle-cache | ❌ | true | boolean | Whether Gradle caching is enabled or not | +| gradle-version | ❌ | wrapper | string | [Gradle version](https://github.com/gradle/gradle-build-action#use-a-specific-gradle-version) to be installed | +| java-distribution | ❌ | microsoft | string | [Java distribution](https://github.com/actions/setup-java#supported-distributions) to be installed | +| java-version | ❌ | 11 | string | Java version to be installed | +| sonar-organization | ❌ | - | string | Organization for Sonarcloud | +| sonar-token | ❌ | - | string | Token for Sonarcloud | +| signing-key-id | ❌ | - | string | Key id for signing the Sonatype publication | +| signing-password | ❌ | - | string | Password for signing the Sonatype publication | +| signing-secret-key-ring | ❌ | - | string | Key ring (base64 encoded) for signing the Sonatype publication | +| working-directory | ❌ | "." | string | Working directory of your Gradle artifacts | + +## Usage + +```yaml +steps: + - name: Test + uses: bakdata/ci-templates/actions/java-gradle-test@main + with: + sonar-token: ${{ secrets.sonar-token }} # (Optional) If not set, code quality tests are skipped + sonar-organization: ${{ secrets.sonar-organization }} # (Optional) If not set, code quality tests are skipped + signing-secret-key-ring: ${{ secrets.signing-secret-key-ring }} # (Optional) If not set, signing for Sonatype is not tested + signing-key-id: ${{ secrets.signing-key-id }} # (Optional) If not set, signing for Sonatype is not tested + signing-password: ${{ secrets.signing-password }} # (Optional) If not set, signing for Sonatype is not tested + java-distribution: "microsoft" # (Optional) + java-version: "11" # (Optional) + gradle-version: "wrapper" # (Optional) + working-directory: "." # (Optional) +``` diff --git a/actions/java-gradle-assess-code-quality/action.yaml b/actions/java-gradle-assess-code-quality/action.yaml new file mode 100644 index 000000000..09aec8e46 --- /dev/null +++ b/actions/java-gradle-assess-code-quality/action.yaml @@ -0,0 +1,82 @@ +name: "Assess code quality" +description: "Assess code quality and optionally test signing for Sonatype" + +inputs: + download-lfs-files: + description: "Whether the Git checkout action should resolve LFS files or not. (Default is false)" + required: false + default: false + gradle-cache: + description: "Whether Gradle caching is enabled or not. (Default is true)" + required: false + default: true + gradle-version: + description: "Gradle version to be installed. (Default is wrapper)" + required: false + default: "wrapper" + java-distribution: + description: "Java distribution to be installed. (Default is microsoft)" + required: false + default: "microsoft" + java-version: + description: "Java version to be installed. (Default is 11)" + required: false + default: "11" + signing-key-id: + description: "Key id for signing the Sonatype publication." + required: false + signing-password: + description: "Password for signing the Sonatype publication." + required: false + signing-secret-key-ring: + description: "Key ring (base64 encoded) for signing the Sonatype publication." + required: false + sonar-organization: + description: "Organization for Sonarcloud." + required: false + sonar-token: + description: "Token for Sonarcloud." + required: false + working-directory: + description: "Working directory of your Gradle artifacts. (Default is .)" + required: false + default: "." + +runs: + using: "composite" + steps: + - name: Check out repository + uses: bakdata/ci-templates/actions/checkout@1.32.0 + with: + fetch-depth: 0 + lfs: ${{ inputs.download-lfs-files }} + + - name: Set up Gradle with version ${{ inputs.gradle-version }} + uses: bakdata/ci-templates/actions/java-gradle-setup@v1.16.0 + with: + java-distribution: ${{ inputs.java-distribution }} + java-version: ${{ inputs.java-version }} + gradle-version: ${{ inputs.gradle-version }} + gradle-cache: ${{ inputs.gradle-cache }} + + # sonar.branch.autoconfig.disabled is necessary for autocreation of projects on Sonarcloud to work + - name: Assess code quality + if: ${{ inputs.sonar-token != '' && inputs.sonar-organization != '' }} + run: ./gradlew -Dsonar.branch.autoconfig.disabled=true -Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=${{ inputs.sonar-organization }} --info --stacktrace sonarqube + shell: bash + working-directory: ${{ inputs.working-directory }} + env: + SONAR_TOKEN: ${{ inputs.sonar-token }} + + - name: Check if everything builds (incl. javadoc) for snapshot/release and signing works + if: ${{ inputs.signing-secret-key-ring != '' && inputs.signing-key-id != '' && inputs.signing-password != '' }} + run: | + export SIGNING_SECRET_KEY_RING_FILE="$(mktemp -d)/secring.gpg" + echo '${{ inputs.signing-secret-key-ring }}' | base64 -d > $SIGNING_SECRET_KEY_RING_FILE + ./gradlew --info --stacktrace signSonatypePublication + shell: bash + working-directory: ${{ inputs.working-directory }} + env: + SIGNING_KEY_ID: ${{ inputs.signing-key-id }} + SIGNING_PASSWORD: ${{ inputs.signing-password }} + CI: true diff --git a/actions/java-gradle-test/README.md b/actions/java-gradle-test/README.md index 9e7b7f252..5e0cfe0be 100644 --- a/actions/java-gradle-test/README.md +++ b/actions/java-gradle-test/README.md @@ -4,22 +4,14 @@ This action runs Junit tests, publishes the test results and tests signing for S ## Input Parameters -If you do not set input parameters for publishing code quality test results on Sonarcloud or for testing the signing for -Sonatype, then these steps are skipped. - -| Name | Required | Default Value | Type | Description | -| ----------------------- | :------: | :-----------: | :-----: | ------------------------------------------------------------------------------------------------------------- | -| sonar-token | ❌ | - | string | Token for Sonarcloud | -| sonar-organization | ❌ | - | string | Organization for Sonarcloud | -| signing-secret-key-ring | ❌ | - | string | Key ring (base64 encoded) for signing the Sonatype publication | -| signing-key-id | ❌ | - | string | Key id for signing the Sonatype publication | -| signing-password | ❌ | - | string | Password for signing the Sonatype publication | -| java-distribution | ❌ | microsoft | string | [Java distribution](https://github.com/actions/setup-java#supported-distributions) to be installed | -| java-version | ❌ | 11 | string | Java version to be installed | -| gradle-version | ❌ | wrapper | string | [Gradle version](https://github.com/gradle/gradle-build-action#use-a-specific-gradle-version) to be installed | -| gradle-cache | ❌ | true | boolean | Whether Gradle caching is enabled or not | -| working-directory | ❌ | "." | string | Working directory of your Gradle artifacts | -| download-lfs-files | ❌ | false | boolean | Whether the Git checkout action should resolve LFS files or not | +| Name | Required | Default Value | Type | Description | +| ------------------ | :------: | :-----------: | :-----: | ------------------------------------------------------------------------------------------------------------- | +| download-lfs-files | ❌ | false | boolean | Whether the Git checkout action should resolve LFS files or not | +| java-distribution | ❌ | microsoft | string | [Java distribution](https://github.com/actions/setup-java#supported-distributions) to be installed | +| java-version | ❌ | 11 | string | Java version to be installed | +| gradle-cache | ❌ | true | boolean | Whether Gradle caching is enabled or not | +| gradle-version | ❌ | wrapper | string | [Gradle version](https://github.com/gradle/gradle-build-action#use-a-specific-gradle-version) to be installed | +| working-directory | ❌ | "." | string | Working directory of your Gradle artifacts | ## Usage @@ -28,11 +20,6 @@ steps: - name: Test uses: bakdata/ci-templates/actions/java-gradle-test@main with: - sonar-token: ${{ secrets.sonar-token }} # (Optional) If not set, code quality tests are skipped - sonar-organization: ${{ secrets.sonar-organization }} # (Optional) If not set, code quality tests are skipped - signing-secret-key-ring: ${{ secrets.signing-secret-key-ring }} # (Optional) If not set, signing for Sonatype is not tested - signing-key-id: ${{ secrets.signing-key-id }} # (Optional) If not set, signing for Sonatype is not tested - signing-password: ${{ secrets.signing-password }} # (Optional) If not set, signing for Sonatype is not tested java-distribution: "microsoft" # (Optional) java-version: "11" # (Optional) gradle-version: "wrapper" # (Optional) diff --git a/actions/java-gradle-test/action.yaml b/actions/java-gradle-test/action.yaml index 35ca026ff..375d7064e 100644 --- a/actions/java-gradle-test/action.yaml +++ b/actions/java-gradle-test/action.yaml @@ -1,22 +1,19 @@ name: "Test Java artiacts" -description: "Run Junit test, publish test results and optionally test signing for Sonatype" +description: "Run Junit test and publish test results" inputs: - sonar-token: - description: "Token for Sonarcloud." - required: false - sonar-organization: - description: "Organization for Sonarcloud." - required: false - signing-secret-key-ring: - description: "Key ring (base64 encoded) for signing the Sonatype publication." + download-lfs-files: + description: "Whether the Git checkout action should resolve LFS files or not. (Default is false)" required: false - signing-key-id: - description: "Key id for signing the Sonatype publication." + default: false + gradle-cache: + description: "Whether Gradle caching is enabled or not. (Default is true)" required: false - signing-password: - description: "Password for signing the Sonatype publication." + default: true + gradle-version: + description: "Gradle version to be installed. (Default is wrapper)" required: false + default: "wrapper" java-distribution: description: "Java distribution to be installed. (Default is microsoft)" required: false @@ -25,22 +22,10 @@ inputs: description: "Java version to be installed. (Default is 11)" required: false default: "11" - gradle-version: - description: "Gradle version to be installed. (Default is wrapper)" - required: false - default: "wrapper" - gradle-cache: - description: "Whether Gradle caching is enabled or not. (Default is true)" - required: false - default: true working-directory: description: "Working directory of your Gradle artifacts. (Default is .)" required: false default: "." - download-lfs-files: - description: "Whether the Git checkout action should resolve LFS files or not. (Default is false)" - required: false - default: false runs: using: "composite" @@ -69,25 +54,3 @@ runs: if: always() # always run even if the previous step fails with: report_paths: "**/build/test-results/test/TEST-*.xml" - - # sonar.branch.autoconfig.disabled is necessary for autocreation of projects on Sonarcloud to work - - name: Assess code quality - if: ${{ inputs.sonar-token != '' && inputs.sonar-organization != '' }} - run: ./gradlew -Dsonar.branch.autoconfig.disabled=true -Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=${{ inputs.sonar-organization }} --info --stacktrace sonarqube - shell: bash - working-directory: ${{ inputs.working-directory }} - env: - SONAR_TOKEN: ${{ inputs.sonar-token }} - - - name: Check if everything builds (incl. javadoc) for snapshot/release and signing works - if: ${{ inputs.signing-secret-key-ring != '' && inputs.signing-key-id != '' && inputs.signing-password != '' }} - run: | - export SIGNING_SECRET_KEY_RING_FILE="$(mktemp -d)/secring.gpg" - echo '${{ inputs.signing-secret-key-ring }}' | base64 -d > $SIGNING_SECRET_KEY_RING_FILE - ./gradlew --info --stacktrace signSonatypePublication - shell: bash - working-directory: ${{ inputs.working-directory }} - env: - SIGNING_KEY_ID: ${{ inputs.signing-key-id }} - SIGNING_PASSWORD: ${{ inputs.signing-password }} - CI: true