10
10
- ' .github/workflows/docs-pr.yml'
11
11
workflow_call :
12
12
secrets :
13
+ DOCKER_REGISTRY :
14
+ required : false
13
15
DOCKER_USERNAME :
14
16
required : false
15
17
DOCKER_TOKEN :
16
18
required : false
17
- DOCKER_REGISTRY :
18
- required : false
19
19
DOCKER_IMAGE :
20
20
required : false
21
21
MAVEN_USERNAME :
22
22
required : false
23
23
MAVEN_PASSWORD :
24
24
required : false
25
- ORG_GRADLE_PROJECT_mavenCentralPassword :
25
+ MAVEN_CENTRAL_USERNAME :
26
26
required : false
27
- ORG_GRADLE_PROJECT_mavenCentralUsername :
27
+ MAVEN_CENTRAL_PASSWORD :
28
28
required : false
29
- ORG_GRADLE_PROJECT_signingInMemoryKey :
29
+ SIGNING_IN_MEMORY_KEY :
30
30
required : false
31
- ORG_GRADLE_PROJECT_signingInMemoryKeyPassword :
31
+ SIGNING_IN_MEMORY_KEY_PASSWORD :
32
32
required : false
33
33
34
34
jobs :
35
35
build :
36
36
runs-on : ubuntu-latest
37
- env :
38
- DOCKER_USERNAME : ${{ secrets.DOCKER_USERNAME }}
39
- DOCKER_TOKEN : ${{ secrets.DOCKER_TOKEN }}
40
- DOCKER_REGISTRY : ${{ secrets.DOCKER_REGISTRY }}
41
- DOCKER_IMAGE : ${{ secrets.DOCKER_IMAGE }}
42
- MAVEN_USERNAME : ${{ vars.MAVEN_USERNAME }}
43
- MAVEN_PASSWORD : ${{ secrets.MAVEN_PASSWORD }}
44
- ORG_GRADLE_PROJECT_mavenCentralPassword : ${{ secrets.ORG_GRADLE_PROJECT_MAVENCENTRALPASSWORD }}
45
- ORG_GRADLE_PROJECT_mavenCentralUsername : ${{ secrets.ORG_GRADLE_PROJECT_MAVENCENTRALUSERNAME }}
46
- ORG_GRADLE_PROJECT_signingInMemoryKey : ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGINMEMORYKEY }}
47
- ORG_GRADLE_PROJECT_signingInMemoryKeyPassword : ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGINMEMORYKEYPASSWORD }}
48
37
steps :
49
38
- name : Checkout
50
39
uses : actions/checkout@v4
@@ -56,56 +45,75 @@ jobs:
56
45
java-version : 17
57
46
58
47
- name : Setup Gradle
59
- uses : gradle/actions/setup-gradle@v3
48
+ uses : gradle/actions/setup-gradle@v4
60
49
61
- - name : Execute Gradle build
50
+ - name : Build Lavalink
62
51
run : ./gradlew build
63
52
64
- - name : Execute Gradle build
53
+ - name : Build Lavalink musl
65
54
run : ./gradlew build -PtargetPlatform=musl
66
55
67
56
- name : Publish to Maven
68
- run : ./gradlew publish -PMAVEN_USERNAME=$MAVEN_USERNAME -PMAVEN_PASSWORD=$MAVEN_PASSWORD
69
-
70
- - name : Upload Artifacts
57
+ env :
58
+ ORG_GRADLE_PROJECT_MAVEN_USERNAME : ${{ secrets.MAVEN_USERNAME }}
59
+ ORG_GRADLE_PROJECT_MAVEN_PASSWORD : ${{ secrets.MAVEN_PASSWORD }}
60
+ ORG_GRADLE_PROJECT_mavenCentralUsername : ${{ secrets.MAVEN_CENTRAL_USERNAME }}
61
+ ORG_GRADLE_PROJECT_mavenCentralPassword : ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
62
+ ORG_GRADLE_PROJECT_signingInMemoryKey : ${{ secrets.SIGNING_IN_MEMORY_KEY }}
63
+ ORG_GRADLE_PROJECT_signingInMemoryKeyPassword : ${{ secrets.SIGNING_IN_MEMORY_KEY_PASSWORD }}
64
+ if : |
65
+ (env.ORG_GRADLE_PROJECT_MAVEN_USERNAME != '' && env.ORG_GRADLE_PROJECT_MAVEN_PASSWORD != '') ||
66
+ (env.ORG_GRADLE_PROJECT_mavenCentralUsername != '' && env.ORG_GRADLE_PROJECT_mavenCentralPassword != '' && env.ORG_GRADLE_PROJECT_signingInMemoryKey != '' && env.ORG_GRADLE_PROJECT_signingInMemoryKeyPassword != '')
67
+ run : ./gradlew publish
68
+
69
+ - name : Upload Lavalink.jar
71
70
uses : actions/upload-artifact@v4
72
71
with :
73
72
name : Lavalink.jar
74
- path : |
75
- LavalinkServer/build/libs/Lavalink.jar
76
- LavalinkServer/build/libs/Lavalink-musl.jar
73
+ path : LavalinkServer/build/libs/Lavalink.jar
77
74
78
- - name : Docker Meta
79
- id : meta
80
- uses : docker/metadata-action@v5
75
+ - name : Upload Lavalink-musl.jar
76
+ uses : actions/upload-artifact@v4
81
77
with :
82
- images : |
83
- ghcr.io/${{ github.repository }}
84
- ${{ env.DOCKER_IMAGE }}
85
- tags : |
86
- type=ref,event=branch
87
- type=ref,event=pr
88
- type=semver,pattern={{version}}
89
- type=semver,pattern={{major}}.{{minor}}
90
- type=semver,pattern={{major}}
91
- type=sha,prefix=
78
+ name : Lavalink-musl.jar
79
+ path : LavalinkServer/build/libs/Lavalink-musl.jar
92
80
93
- - name : Docker Meta Alpine
94
- id : meta-alpine
95
- uses : docker/metadata-action@v5
81
+ build-docker :
82
+ needs : build
83
+ runs-on : ubuntu-latest
84
+ strategy :
85
+ fail-fast : false
86
+ matrix :
87
+ include :
88
+ - name : Ubuntu
89
+ dockerfile : LavalinkServer/docker/Dockerfile
90
+ suffix : ' '
91
+ platforms : linux/amd64,linux/arm/v7,linux/arm64/v8
92
+ - name : Alpine
93
+ dockerfile : LavalinkServer/docker/alpine.Dockerfile
94
+ suffix : ' -alpine'
95
+ platforms : linux/amd64,linux/arm64/v8
96
+ - name : Distroless
97
+ dockerfile : LavalinkServer/docker/distroless.Dockerfile
98
+ suffix : ' -distroless'
99
+ platforms : linux/amd64,linux/arm64/v8
100
+ steps :
101
+ - name : Checkout
102
+ uses : actions/checkout@v4
103
+
104
+ - name : Download Lavalink.jar
105
+ if : ${{ matrix.name == 'Ubuntu' || matrix.name == 'Distroless' }}
106
+ uses : actions/download-artifact@v4
96
107
with :
97
- images : |
98
- ghcr.io/${{ github.repository }}
99
- ${{ env.DOCKER_IMAGE }}
100
- flavor : |
101
- suffix=-alpine,onlatest=true
102
- tags : |
103
- type=ref,event=branch
104
- type=ref,event=pr
105
- type=semver,pattern={{version}}
106
- type=semver,pattern={{major}}.{{minor}}
107
- type=semver,pattern={{major}}
108
- type=sha,prefix=
108
+ name : Lavalink.jar
109
+ path : LavalinkServer/build/libs/Lavalink.jar
110
+
111
+ - name : Download Lavalink-musl.jar
112
+ if : ${{ matrix.name == 'Alpine' }}
113
+ uses : actions/download-artifact@v4
114
+ with :
115
+ name : Lavalink-musl.jar
116
+ path : LavalinkServer/build/libs/Lavalink-musl.jar
109
117
110
118
- name : Set up QEMU
111
119
uses : docker/setup-qemu-action@v3
@@ -121,29 +129,41 @@ jobs:
121
129
password : ${{ secrets.GITHUB_TOKEN }}
122
130
123
131
- name : Log in to docker registry
124
- if : env.DOCKER_USERNAME && env.DOCKER_TOKEN && env.DOCKER_REGISTRY && env.DOCKER_IMAGE
132
+ env :
133
+ DOCKER_REGISTRY : ${{ secrets.DOCKER_REGISTRY }}
134
+ DOCKER_USERNAME : ${{ secrets.DOCKER_USERNAME }}
135
+ DOCKER_TOKEN : ${{ secrets.DOCKER_TOKEN }}
136
+ DOCKER_IMAGE : ${{ secrets.DOCKER_IMAGE }}
137
+ if : env.DOCKER_REGISTRY != '' && env.DOCKER_USERNAME != '' && env.DOCKER_TOKEN != '' && env.DOCKER_IMAGE != ''
125
138
uses : docker/login-action@v3
126
139
with :
127
- registry : ${{ env .DOCKER_REGISTRY }}
128
- username : ${{ env .DOCKER_USERNAME }}
129
- password : ${{ env .DOCKER_TOKEN }}
140
+ registry : ${{ secrets .DOCKER_REGISTRY }}
141
+ username : ${{ secrets .DOCKER_USERNAME }}
142
+ password : ${{ secrets .DOCKER_TOKEN }}
130
143
131
- - name : Build Ubuntu and Push
132
- uses : docker/build-push-action@v5
144
+ - name : Docker Meta ${{ matrix.name }}
145
+ id : meta
146
+ uses : docker/metadata-action@v5
133
147
with :
134
- file : LavalinkServer/docker/Dockerfile
135
- context : .
136
- platforms : linux/amd64,linux/arm/v7,linux/arm64/v8
137
- push : true
138
- tags : ${{ steps.meta.outputs.tags }}
139
- labels : ${{ steps.meta.outputs.labels }}
148
+ images : |
149
+ ghcr.io/${{ github.repository }}
150
+ ${{ secrets.DOCKER_IMAGE }}
151
+ flavor : |
152
+ suffix=${{ matrix.suffix }},onlatest=true
153
+ tags : |
154
+ type=ref,event=branch
155
+ type=ref,event=pr
156
+ type=semver,pattern={{version}}
157
+ type=semver,pattern={{major}}.{{minor}}
158
+ type=semver,pattern={{major}}
159
+ type=sha,prefix=
140
160
141
- - name : Build Alpine and Push
142
- uses : docker/build-push-action@v5
161
+ - name : Docker Build ${{ matrix.name }} and Push
162
+ uses : docker/build-push-action@v6
143
163
with :
144
- file : LavalinkServer/docker/alpine.Dockerfile
164
+ file : ${{ matrix.dockerfile }}
145
165
context : .
146
- platforms : linux/amd64,linux/arm64/v8
166
+ platforms : ${{ matrix.platforms }}
147
167
push : true
148
- tags : ${{ steps.meta-alpine .outputs.tags }}
149
- labels : ${{ steps.meta-alpine .outputs.labels }}
168
+ tags : ${{ steps.meta.outputs.tags }}
169
+ labels : ${{ steps.meta.outputs.labels }}
0 commit comments