diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 08543330..4100e54e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. -name: CI +name: Build & Test on: push: @@ -30,41 +30,9 @@ jobs: matrix: java: [17, 21] - runs-on: ubuntu-latest - - steps: - - name: checkout - uses: actions/checkout@v4 - - - name: Set up Java ${{ matrix.java }} - uses: actions/setup-java@v4 - with: - java-version: ${{ matrix.java }} - distribution: 'zulu' - cache: maven - - - name: Build with Maven - id: mvnBuild - run: ./mvnw verify -Pci -V -B --no-transfer-progress - env: - GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} - - - name: Check License Headers - if: matrix.java == '17' - run: ./mvnw apache-rat:check -V -B --no-transfer-progress - - - name: Add PR Comment - if: github.event.pull_request.number != '' - run: | - GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} - # - # Use GitHub API to get this Job URL - JOBINFO="$(curl --get -Ss -H "Authorization: Bearer ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" "${{ github.api_url }}/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs?per_page=30")" - echo "${JOBINFO}" | grep "Resource not accessible by integration" && exit 1 - eval "$(echo ${JOBINFO} | jq -r --arg job_name '${{ github.job }} (${{ matrix.java }})' '.jobs | map(select(.name == $job_name)) | .[0] | @sh "job_id=\(.id) html_url=\(.html_url)"')" - # - # Use GitHub API to create a comment on the PR - COMMENT="View details about the Java ${{ matrix.java }} build [${{ github.run_number }}](${html_url}) in the [Build Scan](${{ steps.mvnBuild.outputs.buildscan_uri }}) 📊" - COMMENT_URL="${{ github.api_url }}/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments" - echo "${{ steps.mvnBuild.outputs.buildscan_uri }}" - curl -s -H "Authorization: token ${GITHUB_TOKEN}" -X POST ${COMMENT_URL} -d "{\"body\":\"${COMMENT}\"}" + uses: ./.github/workflows/maven.yml + with: + mvn: verify -Pci + java-version: ${{ matrix.java }} + java-distribution: 'zulu' + secrets: inherit diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml index f6ccc8b1..72acaf56 100644 --- a/.github/workflows/cron.yml +++ b/.github/workflows/cron.yml @@ -22,26 +22,10 @@ on: - cron: "0 0 * * *" # nightly jobs: - build: - - strategy: - matrix: - java: [17] - - runs-on: ubuntu-latest - - steps: - - name: checkout - uses: actions/checkout@v4 - - - name: Set up Java ${{ matrix.java }} - uses: actions/setup-java@v4 - with: - java-version: ${{ matrix.java }} - distribution: 'zulu' - cache: maven - - - name: Build with Maven - run: ./mvnw verify dependency-check:check -Pci -V -B --no-transfer-progress - env: - GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} + cron: + uses: ./.github/workflows/maven.yml + with: + mvn: verify dependency-check:check -Pci + java-version: 17 + java-distribution: 'zulu' + secrets: inherit diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 00000000..202f0e75 --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,71 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: Run Maven + +on: + workflow_call: + inputs: + name: + type: string + default: "Running Maven" + mvn: + required: true + type: string + java-version: + required: true + type: string + java-distribution: + required: true + type: string + +env: + MAVEN_ARGS: -V -B --no-transfer-progress + +jobs: + maven: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Java ${{ inputs.java-version }}-${{ inputs.java-distribution }} + uses: actions/setup-java@v4 + with: + java-version: ${{ inputs.java-version }} + distribution: ${{ inputs.java-distribution }} + cache: maven + + - name: ${{ inputs.name }} + run: ./mvnw ${{ inputs.mvn }} + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} + + - name: Add PR Comment + if: github.event.pull_request.number != '' + run: | + GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} + # + # Use GitHub API to get this Job URL + JOBINFO="$(curl --get -Ss -H "Authorization: Bearer ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" "${{ github.api_url }}/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs?per_page=30")" + echo "${JOBINFO}" | grep "Resource not accessible by integration" && exit 1 + eval "$(echo ${JOBINFO} | jq -r --arg job_name '${{ github.job }} (${{ matrix.java }})' '.jobs | map(select(.name == $job_name)) | .[0] | @sh "job_id=\(.id) html_url=\(.html_url)"')" + # + # Use GitHub API to create a comment on the PR + COMMENT="View details about the Java ${{ matrix.java }} build [${{ github.run_number }}](${html_url}) in the [Build Scan](${{ steps.mvnBuild.outputs.buildscan_uri }}) 📊" + COMMENT_URL="${{ github.api_url }}/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments" + echo "${{ steps.mvnBuild.outputs.buildscan_uri }}" + curl -s -H "Authorization: token ${GITHUB_TOKEN}" -X POST ${COMMENT_URL} -d "{\"body\":\"${COMMENT}\"}" + diff --git a/.github/workflows/rat.yml b/.github/workflows/rat.yml new file mode 100644 index 00000000..c369ac02 --- /dev/null +++ b/.github/workflows/rat.yml @@ -0,0 +1,33 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: Apache Rat + +on: + push: + branches: [ develop ] + pull_request: + branches: [ develop ] + +jobs: + rat: + uses: ./.github/workflows/maven.yml + with: + mvn: apache-rat:check + java-version: 17 + java-distribution: 'zulu' + secrets: inherit