Skip to content

merge: #1207

merge: #1207 #1953

Workflow file for this run

name: Build and test
on:
pull_request: { }
push:
branches:
- 'staging'
workflow_call: { }
jobs:
code-formatting:
name: check code formatting
timeout-minutes: 15
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java environment
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: maven
- name: Check format
run: mvn spotless:check
- name: Check license
run: mvn license:check
build-and-test-embedded:
name: Run tests on ${{ matrix.os }}
timeout-minutes: 15
needs: code-formatting
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
max-parallel: 3
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java environment
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: maven
- name: Build
id: build
run: mvn -B -U -pl "-:zeebe-process-test-qa-testcontainers" -P !localBuild "-Dsurefire.rerunFailingTestsCount=5" clean install
- name: Archive Test Results
uses: actions/upload-artifact@v4
if: always()
with:
name: Unit Test Results ${{ matrix.os }}
path: "*/target/surefire-reports/"
retention-days: 7
build-and-test-testcontainers:
name: Run tests on ubuntu-latest using testcontainers
timeout-minutes: 15
needs: code-formatting
runs-on: ubuntu-latest
env:
IMAGE_NAME: "qa-tests"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java environment
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: maven
- name: Package
run: mvn -B -U -P !localBuild clean package -DskipTests
- name: Build engine docker container
run: |
cd engine-agent
docker build . -t ${{ env.IMAGE_NAME }}:${{ github.sha }}
- name: Update image tag in config
run: |
cd extension-testcontainer/src/main/resources
sed -i '/container.image.name=/ s/=.*/=${{ env.IMAGE_NAME }}/' config.properties
sed -i '/container.image.tag=/ s/=.*/=${{ github.sha }}/' config.properties
cat config.properties
env:
IMAGE_NAME_KEY: container.image.name
IMAGE_TAG_KEY: container.image.tag
- name: Downgrade Java environment
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 8
cache: maven
# Deleting .mvn/jvm.config is a workaround for JDK8, which does not support the --add-exports options
- name: Build
id: build
run: |
rm .mvn/jvm.config
mvn clean -B -U -pl ":zeebe-process-test-qa-testcontainers" -P !localBuild -am "-Dsurefire.rerunFailingTestsCount=5" install -DskipChecks
- name: Archive Test Results
uses: actions/upload-artifact@v4
if: always()
with:
name: Unit Test Results Testcontainers
path: "*/target/surefire-reports/"
retention-days: 7
test-summary:
# Used by bors to check all tests, including the unit test matrix.
# New test jobs must be added to the `needs` lists!
# This name is hard-referenced from bors.toml; remember to update that if this name changes
name: Test summary
runs-on: ubuntu-latest
needs:
- code-formatting
- build-and-test-embedded
- build-and-test-testcontainers
steps:
- run: exit 0
# We need to upload the event file as an artifact in order to support publishing the results of
# forked repositories (https://github.com/EnricoMi/publish-unit-test-result-action#support-fork-repositories-and-dependabot-branches)
event_file:
name: "Event File"
runs-on: ubuntu-latest
steps:
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Event File
path: ${{ github.event_path }}
retention-days: 1
auto-merge:
# This workflow will auto merge a PR authored by dependabot[bot]. It runs only on open PRs ready for
# review.
#
# It will merge the PR only if: it is authored by dependabot[bot], is a minor or patch semantic
# update, and all CI checks are successful (ignoring the soon-to-be-removed Jenkins check).
#
# The workflow is divided into multiple sequential jobs to allow giving only minimal permissions to
# the GitHub token passed around.
#
# Once we're using the merge queue feature, I think we can simplify this workflow a lot by relying
# on dependabot merging PRs via its commands, as it will always wait for checks to be green before
# merging.
name: Auto-merge dependabot and camundait PRs
runs-on: ubuntu-latest
needs: [ test-summary ]
if: github.repository == 'camunda/zeebe-process-test' && (github.actor == 'dependabot[bot]' || github.actor == 'camundait' || github.actor == 'backport-action')
permissions:
checks: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- id: metadata
if: github.actor == 'dependabot[bot]'
name: Fetch dependency metadata
uses: dependabot/fetch-metadata@v2.2.0
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- id: approve-and-merge-dependabot
name: Approve and merge dependabot PR
if: github.actor == 'dependabot[bot]' && (steps.metadata.outputs.update-type == 'version-update:semver-patch' || steps.metadata.outputs.update-type == 'version-update:semver-minor')
run: gh pr review ${{ github.event.pull_request.number }} --approve -b "bors merge"
env:
GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"
- id: approve-and-merge-backport
name: Approve and merge backport PR
if: github.actor != 'dependabot[bot]'
run: gh pr review ${{ github.event.pull_request.number }} --approve -b "bors merge"
env:
GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"