Run Compatibility Tests #65
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) | |
# | |
# This program and the accompanying materials are made available under the | |
# terms of the Apache License, Version 2.0 which is available at | |
# https://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. | |
# | |
# SPDX-License-Identifier: Apache-2.0 | |
# | |
--- | |
name: "Run Compatibility Tests" | |
on: | |
schedule: | |
- cron: "0 0 * * *" # run at 00:00 UTC | |
# run this workflow on pushes on the following branches: | |
push: | |
branches: | |
- main | |
# run this workflow on pull requests | |
pull_request: | |
# run this workflow on manual trigger | |
workflow_dispatch: | |
# Abort old job when a newer one is queued | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
secrets-presence: | |
name: "Check for required credentials" | |
runs-on: ubuntu-latest | |
outputs: | |
HAS_WEBHOOK: ${{ steps.secrets-presence.outputs.HAS_WEBHOOK }} | |
steps: | |
- name: Check whether secrets exist | |
id: secrets-presence | |
run: | | |
[ ! -z "${{ secrets.DISCORD_GITHUB_CI_WEBHOOK }}" ] && echo "HAS_WEBHOOK=true" >> $GITHUB_OUTPUT | |
exit 0 | |
verify-license-headers: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: "Check for files without a license header" | |
run: |- | |
# checks all java, yaml, kts and sql files for an Apache 2.0 license header | |
cmd="grep -riL \"SPDX-License-Identifier: Apache-2.0\" --include=\*.{java,yaml,yml,kts,sql} --exclude-dir={.gradle,\*\openapi} ." | |
violations=$(eval $cmd | wc -l) | |
if [[ $violations -ne 0 ]] ; then | |
echo "$violations files without license headers were found:"; | |
eval $cmd; | |
exit 1; | |
fi | |
verify-checkstyle: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: eclipse-edc/.github/.github/actions/setup-build@main | |
- name: Run Checkstyle | |
run: | | |
./gradlew checkstyleMain checkstyleTest | |
# Verify that both the control plane and data plane are runnable (given some basic config) | |
compatibility-tests: | |
runs-on: ubuntu-latest | |
needs: verify-license-headers | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: eclipse-edc/.github/.github/actions/setup-build@main | |
- name: Build docker images | |
run: ./gradlew dockerize | |
- name: Run Compatibility tests | |
run: ./gradlew test -DincludeTags="EndToEndTest" | |
post-to-discord: | |
needs: [ compatibility-tests, Secrets-Presence ] | |
if: "needs.Secrets-Presence.outputs.HAS_WEBHOOK && always() && github.event_name == 'schedule'" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: sarisia/actions-status-discord@v1 | |
name: "Invoke discord webhook" | |
with: | |
webhook: ${{ secrets.DISCORD_GITHUB_CI_WEBHOOK }} | |
# if the publishing is skipped, that means the preceding test run failed | |
status: ${{ needs.compatibility-tests.result == 'skipped' && 'Failure' || needs.compatibility-tests.result }} | |
title: "tests" | |
description: "Compatibility tests" | |
username: GitHub Actions |