1010 - ' .github/workflows/docs-pr.yml'
1111 workflow_call :
1212 secrets :
13+ DOCKER_REGISTRY :
14+ required : false
1315 DOCKER_USERNAME :
1416 required : false
1517 DOCKER_TOKEN :
1618 required : false
17- DOCKER_REGISTRY :
18- required : false
1919 DOCKER_IMAGE :
2020 required : false
2121 MAVEN_USERNAME :
2222 required : false
2323 MAVEN_PASSWORD :
2424 required : false
25- ORG_GRADLE_PROJECT_mavenCentralPassword :
25+ MAVEN_CENTRAL_USERNAME :
2626 required : false
27- ORG_GRADLE_PROJECT_mavenCentralUsername :
27+ MAVEN_CENTRAL_PASSWORD :
2828 required : false
29- ORG_GRADLE_PROJECT_signingInMemoryKey :
29+ SIGNING_IN_MEMORY_KEY :
3030 required : false
31- ORG_GRADLE_PROJECT_signingInMemoryKeyPassword :
31+ SIGNING_IN_MEMORY_KEY_PASSWORD :
3232 required : false
3333
3434jobs :
3535 build :
3636 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 }}
4837 steps :
4938 - name : Checkout
5039 uses : actions/checkout@v4
@@ -56,56 +45,67 @@ jobs:
5645 java-version : 17
5746
5847 - name : Setup Gradle
59- uses : gradle/actions/setup-gradle@v3
48+ uses : gradle/actions/setup-gradle@v4
6049
61- - name : Execute Gradle build
50+ - name : Build Lavalink
6251 run : ./gradlew build
6352
64- - name : Execute Gradle build
53+ - name : Build Lavalink musl
6554 run : ./gradlew build -PtargetPlatform=musl
6655
6756 - 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+ run : ./gradlew publish
65+
66+ - name : Upload Lavalink.jar
7167 uses : actions/upload-artifact@v4
7268 with :
7369 name : Lavalink.jar
74- path : |
75- LavalinkServer/build/libs/Lavalink.jar
76- LavalinkServer/build/libs/Lavalink-musl.jar
70+ path : LavalinkServer/build/libs/Lavalink.jar
7771
78- - name : Docker Meta
79- id : meta
80- uses : docker/metadata-action@v5
72+ - name : Upload Lavalink-musl.jar
73+ uses : actions/upload-artifact@v4
8174 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=
75+ name : Lavalink-musl.jar
76+ path : LavalinkServer/build/libs/Lavalink-musl.jar
9277
93- - name : Docker Meta Alpine
94- id : meta-alpine
95- uses : docker/metadata-action@v5
78+ build-docker :
79+ needs : build
80+ runs-on : ubuntu-latest
81+ strategy :
82+ fail-fast : false
83+ matrix :
84+ include :
85+ - name : Ubuntu
86+ dockerfile : LavalinkServer/docker/Dockerfile
87+ suffix : ' '
88+ platforms : linux/amd64,linux/arm/v7,linux/arm64/v8
89+ artifact : Lavalink.jar
90+ - name : Alpine
91+ dockerfile : LavalinkServer/docker/alpine.Dockerfile
92+ suffix : ' -alpine'
93+ platforms : linux/amd64,linux/arm64/v8
94+ artifact : Lavalink-musl.jar
95+ - name : Distroless
96+ dockerfile : LavalinkServer/docker/distroless.Dockerfile
97+ suffix : ' -distroless'
98+ platforms : linux/amd64,linux/arm64/v8
99+ artifact : Lavalink.jar
100+ steps :
101+ - name : Checkout
102+ uses : actions/checkout@v4
103+
104+ - name : Download ${{ matrix.artifact }}
105+ uses : actions/download-artifact@v4
96106 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=
107+ name : ${{ matrix.artifact }}
108+ path : LavalinkServer/build/libs/
109109
110110 - name : Set up QEMU
111111 uses : docker/setup-qemu-action@v3
@@ -121,29 +121,41 @@ jobs:
121121 password : ${{ secrets.GITHUB_TOKEN }}
122122
123123 - name : Log in to docker registry
124- if : env.DOCKER_USERNAME && env.DOCKER_TOKEN && env.DOCKER_REGISTRY && env.DOCKER_IMAGE
124+ env :
125+ DOCKER_REGISTRY : ${{ secrets.DOCKER_REGISTRY }}
126+ DOCKER_USERNAME : ${{ secrets.DOCKER_USERNAME }}
127+ DOCKER_TOKEN : ${{ secrets.DOCKER_TOKEN }}
128+ DOCKER_IMAGE : ${{ secrets.DOCKER_IMAGE }}
129+ if : env.DOCKER_REGISTRY != '' && env.DOCKER_USERNAME != '' && env.DOCKER_TOKEN != '' && env.DOCKER_IMAGE != ''
125130 uses : docker/login-action@v3
126131 with :
127- registry : ${{ env .DOCKER_REGISTRY }}
128- username : ${{ env .DOCKER_USERNAME }}
129- password : ${{ env .DOCKER_TOKEN }}
132+ registry : ${{ secrets .DOCKER_REGISTRY }}
133+ username : ${{ secrets .DOCKER_USERNAME }}
134+ password : ${{ secrets .DOCKER_TOKEN }}
130135
131- - name : Build Ubuntu and Push
132- uses : docker/build-push-action@v5
136+ - name : Docker Meta ${{ matrix.name }}
137+ id : meta
138+ uses : docker/metadata-action@v5
133139 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 }}
140+ images : |
141+ ghcr.io/${{ github.repository }}
142+ ${{ secrets.DOCKER_IMAGE }}
143+ flavor : |
144+ suffix=${{ matrix.suffix }},onlatest=true
145+ tags : |
146+ type=ref,event=branch
147+ type=ref,event=pr
148+ type=semver,pattern={{version}}
149+ type=semver,pattern={{major}}.{{minor}}
150+ type=semver,pattern={{major}}
151+ type=sha,prefix=
140152
141- - name : Build Alpine and Push
142- uses : docker/build-push-action@v5
153+ - name : Docker Build ${{ matrix.name }} and Push
154+ uses : docker/build-push-action@v6
143155 with :
144- file : LavalinkServer/docker/alpine.Dockerfile
156+ file : ${{ matrix.dockerfile }}
145157 context : .
146- platforms : linux/amd64,linux/arm64/v8
158+ platforms : ${{ matrix.platforms }}
147159 push : true
148- tags : ${{ steps.meta-alpine .outputs.tags }}
149- labels : ${{ steps.meta-alpine .outputs.labels }}
160+ tags : ${{ steps.meta.outputs.tags }}
161+ labels : ${{ steps.meta.outputs.labels }}
0 commit comments