Skip to content

Commit

Permalink
CI: Register artifacts, and provide PR decoration
Browse files Browse the repository at this point in the history
  • Loading branch information
turing85 committed Sep 4, 2024
1 parent fef261e commit 619f8cd
Show file tree
Hide file tree
Showing 7 changed files with 439 additions and 169 deletions.
29 changes: 29 additions & 0 deletions .github/actions/setup-env/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# ---------------------------------------------------------------------------
# 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: Read environment

description: |
Reads the file .github/workflows/.env and registers all entries in ${GITHUB_ENV}
runs:
using: composite

steps:
- name: read-env
shell: bash
run: cat .github/workflows/.env >> ${GITHUB_ENV}
6 changes: 6 additions & 0 deletions .github/workflows/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
JAVA_VERSION=17
JAVA_DISTRIBUTION=temurin
JAR_ARTIFACT_NAME=jars
PR_NUMBER_ARTIFACT_NAME=pr-number
TEST_REPORTS_ARTIFACT_NAME=test-reports
TEST_REPORT_NAME=Citrus Report
69 changes: 69 additions & 0 deletions .github/workflows/build-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# ---------------------------------------------------------------------------
# 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: Build report

on:
workflow_run:
workflows:
- "build"
types:
- completed

permissions:
actions: write
checks: write
pull-requests: write

env:
TEST_REPORTS_ARTIFACT_NAME: will-be-read-from-env-file
PR_NUMBER_ARTIFACT_NAME: will-be-read-from-env-file
TEST_REPORT_NAME: will-be-read-from-env-file


jobs:
report:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup environment variables
uses: ./.github/actions/setup-env

- name: Download "${{ env.PR_NUMBER_ARTIFACT_NAME }}" from run ${{ github.event.workflow_run.id }}
uses: actions/download-artifact@v4
with:
github-token: ${{ github.token }}
name: ${{ env.PR_NUMBER_ARTIFACT_NAME }}
run-id: ${{ github.event.workflow_run.id }}

- name: Set PR number
id: get-pr-number
run: |
echo "pr-number=$(cat pr-number.txt)" | tee "${GITHUB_OUTPUT}"
rm -rf pr-number.txt
- name: Publish reports
uses: turing85/publish-report@feature/run-id-and-pr-number
with:
comment-message-pr-number: ${{ steps.get-pr-number.outputs.pr-number }}
download-artifact-name: ${{ env.TEST_REPORTS_ARTIFACT_NAME }}
download-artifact-run-id: ${{ github.event.workflow_run.id }}
report-name: ${{ env.TEST_REPORT_NAME }}
report-path: '**/target/**/TEST*.xml'
81 changes: 67 additions & 14 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
# limitations under the License.
# ---------------------------------------------------------------------------

name: build
name: Build

on:
pull_request:
Expand All @@ -36,28 +36,81 @@ on:
- 'KEYS'
- 'LICENSE'
- 'NOTICE'
env:
JAVA_DISTRIBUTION: will-be-read-from-env-file
JAVA_VERSION: will-be-read-from-env-file
JAR_ARTIFACT_NAME: will-be-read-from-env-file
TEST_REPORTS_ARTIFACT_NAME: will-be-read-from-env-file
PR_NUMBER_ARTIFACT_NAME: will-be-read-from-env-file

permissions:
actions: write
checks: write
pull-requests: write


jobs:
build:
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
permissions:
pull-requests: write

steps:
- name: Set up JDK 17
uses: AdoptOpenJDK/install-jdk@v1
with:
version: '17'
- name: Checkout code
uses: actions/checkout@v2
- name: Cache Maven packages
uses: actions/cache@v2
uses: actions/checkout@v4

- name: Setup environment variables
uses: ./.github/actions/setup-env

- name: Set up JDK ${{ env.JAVA_DISTRIBUTION}} ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
cache: 'maven'
distribution: ${{ env.JAVA_DISTRIBUTION }}
java-version: ${{ env.JAVA_VERSION }}

- name: Info
run: |
java -version
mvn -version
./mvnw -version
- name: Build
run: |
mvn --no-transfer-progress install
./mvnw \
--batch-mode \
--color always \
verify
- name: Upload JARs
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
if-no-files-found: error
name: ${{ env.JAR_ARTIFACT_NAME }}
path: |
**/*.jar
retention-days: 2

- name: Upload test report
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
if-no-files-found: error
name: ${{ env.TEST_REPORTS_ARTIFACT_NAME }}
path: |
**/target/surefire-reports/TEST*.xml
**/target/citrus-reports/junitreports/TEST*.xml
retention-days: 2

- name: Get PR number
id: get-pr-number
if: ${{ always() }}
run: |
echo "${{ github.event.number }}" > "pr-number.txt"
- name: Upload PR number
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: ${{ env.PR_NUMBER_ARTIFACT_NAME }}
path: pr-number.txt
79 changes: 79 additions & 0 deletions .github/workflows/cleanup-after-merge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# ---------------------------------------------------------------------------
# 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: Cleanup after merge

on:
pull_request:
types:
- closed

permissions:
# `actions:write` permission is required to delete caches
# See also: https://docs.github.com/en/rest/actions/cache?apiVersion=2022-11-28#delete-a-github-actions-cache-for-a-repository-using-a-cache-id
actions: write

jobs:
delete:
name: Cleanup
runs-on: ubuntu-latest

steps:
- name: Delete github caches belonging to branch {{ github.ref }}
env:
GH_TOKEN: ${{ github.token }}
run: |
gh extension install actions/gh-actions-cache
repo="${{ github.repository }}"
branch="${{ github.ref }}"
printf "Fetching list of cache keys for branch %s..." "${branch}"
cache_keys_for_pr=( $( \
gh actions-cache \
--repo "${repo}" \
--branch "${branch}" \
list \
| cut -f 1) \
)
echo " Done."
# Setting this to not fail the workflow while deleting cache keys.
set +e
if [[ -n "${cache_keys_for_pr[*]}" ]]
then
echo "Found the following cache keys:"
for cache_key in "${cache_keys_for_pr[@]}"
do
echo " ${cache_key}"
done
echo "Starting deletion of caches"
for cache_key in "${cache_keys_for_pr[@]}"
do
printf " Deleting cache with key %s..." "${cache_key}"
gh actions-cache delete \
--repo "${repo}" \
--branch "${branch}" \
--confirm \
"${cache_key}" \
1> /dev/null
echo " Done."
done
echo "All caches deleted."
else
echo "No caches on branch ${branch} found. Nothing to delete."
fi
50 changes: 50 additions & 0 deletions .github/workflows/pr-comment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# ---------------------------------------------------------------------------
# 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: Comment on PR

on:
pull_request_target:
branches:
- main
paths-ignore:
- '**.adoc'
- '**.md'
- 'KEYS'
- 'LICENSE'
- 'NOTICE'

permissions:
actions: write
checks: write
pull-requests: write

jobs:
pr-comment:
runs-on: ubuntu-latest

steps:
- name: (Re)create comment for PR ${{ github.event.number }}
uses: turing85/publish-report@feature/run-id-and-pr-number
with:
github-token: ${{ github.token }}
checkout: true
comment-message-recreate: |
## 🚦Reports 🚦
Reports will be posted here as they get available.
comment-message-pr-number: ${{ github.event.number }}
recreate-comment: true
Loading

0 comments on commit 619f8cd

Please sign in to comment.