Files
openhab-core/.github/workflows/ci-build.yml
T
Holger FriedrichandGitHub 767fcb329f Replace GH Action from tj-actions by custom code (#4647)
The GitHub Actions build workflow includes external Actions from
3rd party repositories.
The functionality of tj-actions/verify-changed-files was used to
detect modifications of files during the build process.
The external action is removed and replaced by custom code.
This is less flexible, but does not require an external action in the
build toolchain.

Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
2025-03-16 22:01:43 +01:00

110 lines
3.3 KiB
YAML

name: CI
on:
push:
branches:
- 'main'
paths-ignore:
- '.github/**/*.md'
pull_request:
branches:
- 'main'
paths-ignore:
- '.github/**/*.md'
workflow_dispatch:
jobs:
build:
strategy:
fail-fast: false
matrix:
java: [ '21' ]
maven: [ '3.9.9' ]
os: [ 'ubuntu-24.04' ]
name: Build (Java ${{ matrix.java }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
if: github.head_ref == ''
uses: actions/checkout@v4
- name: Checkout merge
if: github.head_ref != ''
uses: actions/checkout@v4
with:
ref: refs/pull/${{github.event.pull_request.number}}/merge
- name: Set up Cache
uses: actions/cache@v4
with:
path: |
~/.m2/repository
!~/.m2/repository/org/openhab
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Set up Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Set up Maven ${{ matrix.maven }}
uses: stCarolas/setup-maven@v5
with:
maven-version: ${{ matrix.maven }}
- name: Register Problem Matchers
if: ${{ matrix.java == '17' }}
id: problem_matchers
run: |
echo "::add-matcher::.github/openhab-compile-problems.json"
- name: Build
id: build
run: './.github/scripts/maven-build'
env:
MAVEN_OPTS: >-
-Xmx2g
-Dmaven.wagon.http.retryHandler.count=5
-Dmaven.wagon.httpconnectionManager.ttlSeconds=25
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
- name: Upload Build Log
if: ${{ always() && ((steps.build.outcome == 'success') || (steps.build.outcome == 'failure')) }}
uses: actions/upload-artifact@v4
with:
name: build-log-java-${{ matrix.java }}-${{ matrix.os }}
path: build.log
- name: Upload SAT Summary Report
if: ${{ always() && ((steps.build.outcome == 'success') || (steps.build.outcome == 'failure')) }}
uses: actions/upload-artifact@v4
with:
name: sat-summary-report
path: target/summary_report.html
- name: Report SAT Errors as Annotations
if: ${{ matrix.java == '21' && always() && ((steps.build.outcome == 'success') || (steps.build.outcome == 'failure')) }}
uses: ghys/checkstyle-github-action@main
with:
title: CheckStyle Violations
path: '**/checkstyle-result.xml'
mode: inline
- name: Verify Changed Files
id: verify-changed-files
run: |
set -o pipefail
changed_files=$(echo -n "$(git diff --name-only HEAD && git ls-files --others --exclude-standard)"|tr '\n' ' ')
echo "changed_files=$changed_files" >> $GITHUB_OUTPUT
- name: Fail on Changed Files
if: steps.verify-changed-files.outputs.changed_files != ''
env:
CHANGED_FILES: ${{ steps.verify-changed-files.outputs.changed_files }}
run: |
echo "::error::Files have changed: $CHANGED_FILES"
exit 1