-
Notifications
You must be signed in to change notification settings - Fork 1
141 lines (126 loc) · 4.41 KB
/
build.yml
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
name: '[ BUILD ] Build Project (Java/Gradle)'
on:
workflow_dispatch:
inputs:
release_build:
description: 'toggles an release-build, by default false'
type: boolean
default: false
required: false
build_version:
description: 'The version to build and deploy'
type: string
required: true
default: '0-SNAPSHOT'
workflow_call:
inputs:
release_build:
description: 'toggles an release-build, by default false'
type: boolean
default: false
required: false
build_version:
description: 'The version to build and deploy'
type: string
required: false
default: '0-SNAPSHOT'
outputs:
build_artifact_id:
description: 'The id of the uploaded build artifacts.'
value: ${{ jobs.Build.outputs.build_artifacts_id}}
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
BUILD_VERSION: ${{ inputs.build_version != '' && inputs.build_version || '0-SNAPSHOT' }}
jobs:
Validation:
name: "Validation"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: gradle/actions/wrapper-validation@v3
Build:
name: "Build, Sign and Upload Artifacts"
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
outputs:
build_artifacts_id: ${{ steps.BuildArtifactUpload.outputs.artifact-id }}
steps:
- name: Checkout
uses: actions/checkout@v4
- run: tree
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# Configure Gradle for optimal use in GiHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3 # v3.1.0
with:
add-job-summary-as-pr-comment: on-failure
artifact-retention-days: 5
# with:
# dependency-graph: generate-and-submit
- name: Generate gradle.properties
run: |
echo "version=${BUILD_VERSION}"
echo "version=${BUILD_VERSION}" >> ./gradle.properties
cat ./gradle.properties
- name: Clean
if: ${{ inputs.release_build }}
run: ./gradlew clean
env:
GITHUB_DEPENDENCY_GRAPH_ENABLED: false
- name: Build with Gradle Wrapper
id: Build
run: ./gradlew -Pversion=${BUILD_VERSION} --info build jacocoTestReport
- name: Sign Artifacts
if: ${{ steps.Build.outcome == 'success' && inputs.release_build }}
# if: inputs.release_build
run: |
./gradlew -Pversion=${BUILD_VERSION} \
--info signMavenJavaPublication
env:
GPG_SIGNING_KEY_PASSWORD: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }}
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- name: Build Artifacts Upload
id: BuildArtifactUpload
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: |
./**/build/libs/*${{inputs.build_version}}*.jar
./**/build/libs/*${{inputs.build_version}}*.jar.asc
./**/build/reports/
DependencySubmission:
name: "Dependency Submission"
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# Generates and submits a dependency graph, enabling Dependabot Alerts for all project dependencies.
# https://github.com/gradle/actions/blob/main/docs/dependency-submission.md
- name: Generate and submit dependency graph
uses: gradle/actions/dependency-submission@v3
env:
# Exclude all dependencies that originate solely in the 'buildSrc' or testapp project
DEPENDENCY_GRAPH_EXCLUDE_PROJECTS: ':buildSrc|:cursorpaging-testapp'
# Exclude dependencies that are only resolved in test classpaths
DEPENDENCY_GRAPH_EXCLUDE_CONFIGURATIONS: '.*[Tt]est(Compile|Runtime)Classpath'
with:
build-scan-publish: true
build-scan-terms-of-use-url: "https://gradle.com/help/legal-terms-of-use"
build-scan-terms-of-use-agree: "yes"