-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
143 lines (128 loc) · 4.75 KB
/
Copy pathci-build.yml
File metadata and controls
143 lines (128 loc) · 4.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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' ]
os: [ 'ubuntu-24.04' ]
include:
- primary: false
- java: '21'
primary: true
name: Build (Java ${{ matrix.java }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
# typical duration is ~70min, set twice the amount as limit (default is 6h)
timeout-minutes: 140
steps:
- name: Checkout
uses: actions/checkout@v7
with:
fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 1 }}
- name: Set up Cache
uses: actions/cache@v6
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@v5
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Register Problem Matchers
if: ${{ matrix.primary }}
run: |
echo "::add-matcher::.github/openhab-compile-problems.json"
- name: Get Changed Files
if: github.head_ref != ''
shell: bash
run: |
CHANGED_FILES_FILE="$RUNNER_TEMP/changed-files.txt"
echo "CHANGED_FILES_FILE=$CHANGED_FILES_FILE" >> "$GITHUB_ENV"
git diff --name-only --no-renames HEAD^1 HEAD > "$CHANGED_FILES_FILE"
count=$(wc -l < "$CHANGED_FILES_FILE")
echo "Found $count changed files."
echo "::group::Changed files"
if [[ -s "$CHANGED_FILES_FILE" ]]; then
cat "$CHANGED_FILES_FILE"
else
echo "No changed files found."
fi
echo "::endgroup::"
- name: Build
id: build
run: bash './.github/scripts/maven-build'
env:
MAVEN_OPTS: >-
-Xmx8g
-Dmaven.wagon.http.retryHandler.count=5
-Dmaven.wagon.httpconnectionManager.ttlSeconds=25
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
- name: Prepare Uploads
id: prepare-uploads
if: ${{ !cancelled() && (steps.build.outcome == 'success' || steps.build.outcome == 'failure') }}
shell: bash
run: |
uploads="$RUNNER_TEMP/uploads"
mkdir -p "${uploads}"
if [[ -f build.log ]]; then
cp build.log "${uploads}/build-log-java-${{ matrix.java }}-${{ matrix.os }}.txt"
echo "build-log=true" >> "$GITHUB_OUTPUT"
fi
if [[ -f target/summary_report.html ]]; then
cp target/summary_report.html "${uploads}/sat-summary-report.html"
echo "sat-report=true" >> "$GITHUB_OUTPUT"
fi
- name: Upload Build Log
if: ${{ !cancelled() && steps.prepare-uploads.outputs.build-log == 'true' }}
uses: actions/upload-artifact@v7
with:
path: ${{ runner.temp }}/uploads/build-log-java-${{ matrix.java }}-${{ matrix.os }}.txt
archive: false
if-no-files-found: error
- name: Upload SAT Summary Report
if: ${{ !cancelled() && matrix.primary && steps.prepare-uploads.outputs.sat-report == 'true' }}
uses: actions/upload-artifact@v7
with:
path: ${{ runner.temp }}/uploads/sat-summary-report.html
archive: false
if-no-files-found: error
- name: Report SAT Errors as Annotations
if: ${{ !cancelled() && matrix.primary && ((steps.build.outcome == 'success') || (steps.build.outcome == 'failure')) }}
uses: ghys/checkstyle-github-action@main
with:
title: CheckStyle Violations
path: '**/checkstyle-result.xml'
mode: inline
# this will identify modifications to files under source control during the workflow run;
# untracked files will be included as well!
- name: Verify Changed Files
id: verify-changed-files
if: ${{ !cancelled() }}
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: ${{ !cancelled() && 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