From 4de119daac91716136af17feea8677c6a9ccda81 Mon Sep 17 00:00:00 2001 From: Splayfer Date: Sun, 10 Aug 2025 15:36:06 +0200 Subject: [PATCH 1/6] Update gradle-publish.yml --- .github/workflows/gradle-publish.yml | 109 +++++++++++++++++++++++---- 1 file changed, 95 insertions(+), 14 deletions(-) diff --git a/.github/workflows/gradle-publish.yml b/.github/workflows/gradle-publish.yml index 4cdbe47..caccd34 100644 --- a/.github/workflows/gradle-publish.yml +++ b/.github/workflows/gradle-publish.yml @@ -5,21 +5,32 @@ name: Build and Deploy to Staging server on: push: - branches: [ master ] + branches: [ ghcr-test ] pull_request: - branches: [ master ] + branches: [ ghcr-test ] + + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + REMOTE_PATH: /opt/dockerfiles/radio + GHCR_USER: splayfery + TAGS: latest jobs: - build-and-deploy: + build-and-publish: runs-on: ubuntu-latest permissions: contents: read packages: write + attestations: write + id-token: write steps: - - uses: actions/checkout@v3 + - name: Checkout Repository + uses: actions/checkout@v4 - name: Set up Coretto 21 uses: actions/setup-java@v3 @@ -42,6 +53,66 @@ jobs: - name: Build with Gradle run: ./gradlew build --parallel --no-daemon --configuration-cache + - name: Set up QEMU (for ARM emulation) + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + install: true + driver: docker-container + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Cleanup old latest images in GHCR + uses: actions/delete-package-versions@v5 + with: + package-name: radio + package-type: container + min-versions-to-keep: 1 + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: ${{ env.TAGS }} + + - name: Build and push multi-arch Docker image + id: push + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: linux/amd64,linux/arm64 + + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v2 + with: + subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}} + subject-digest: ${{ steps.push.outputs.digest }} + push-to-registry: true + + start-service: + + runs-on: ubuntu-latest + needs: build-and-publish + + permissions: + contents: read + packages: write + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + - name: Install SSH Key uses: shimataro/ssh-key-action@v2 with: @@ -66,15 +137,25 @@ jobs: env: SSH_USER: ${{ secrets.USERNAME }} SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }} - SSH_HOST: ${{ secrets.HOST }} - - - name: Deploy Gradle Artifacts - run: rsync -avz /home/runner/work/Radio/Radio/build/libs/ ${{ secrets.USERNAME }}@${{ secrets.HOST }}:/opt/dockerfiles/radio - - - name: Sync Docker Configuration - run: rsync -avz --include="Dockerfile" --include="docker-compose.yaml" --exclude="*" . ${{ secrets.USERNAME }}@${{ secrets.HOST }}:/opt/dockerfiles/radio + SSH_HOST: ${{ secrets.HOST }} - - name: Rebuild container + - name: Set lowercase IMAGE_NAME + run: echo "IMAGE_NAME=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV + + - name: Deploy and Restart Container run: | - ssh staging docker compose -f /opt/dockerfiles/radio/docker-compose.yaml down - ssh staging docker compose -f /opt/dockerfiles/radio/docker-compose.yaml up -d + ssh staging " + echo '${{ secrets.GHCR_TOKEN }}' | docker login ghcr.io -u ${{ env.GHCR_USER }} --password-stdin && + + # Stop running container + docker compose -f ${REMOTE_PATH}/docker-compose.yaml down || true && + + # Pull latest image + docker pull ${REGISTRY}/${IMAGE_NAME}:${{ env.TAGS }} && + + # Remove unused old images + docker image prune -af && + + # Start new container + docker compose -f ${REMOTE_PATH}/docker-compose.yaml up -d + " From 80d8521fbc0b0f44149c269d7fc64f8a00cac59d Mon Sep 17 00:00:00 2001 From: Splayfer Date: Sun, 10 Aug 2025 15:52:02 +0200 Subject: [PATCH 2/6] Update gradle-publish.yml --- .github/workflows/gradle-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/gradle-publish.yml b/.github/workflows/gradle-publish.yml index caccd34..056d12e 100644 --- a/.github/workflows/gradle-publish.yml +++ b/.github/workflows/gradle-publish.yml @@ -71,6 +71,7 @@ jobs: - name: Cleanup old latest images in GHCR uses: actions/delete-package-versions@v5 + continue-on-error: true with: package-name: radio package-type: container From db9720d2b4804cfd45970de6c555394c24b25786 Mon Sep 17 00:00:00 2001 From: Splayfer Date: Sun, 10 Aug 2025 19:39:20 +0200 Subject: [PATCH 3/6] Update build.gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 4952432..e59ce95 100644 --- a/build.gradle +++ b/build.gradle @@ -46,7 +46,7 @@ dependencies { api libs.dev.lavalink.youtube.common } -group = 'de.splayfer' +group = 'de.splayfunityde' version = '1.0-SNAPSHOT' description = 'radio' java.sourceCompatibility = JavaVersion.VERSION_21 From 0286c7e401a9f8a4ca83b8dca38dc14dec1d543b Mon Sep 17 00:00:00 2001 From: Splayfer Date: Sun, 10 Aug 2025 19:40:06 +0200 Subject: [PATCH 4/6] Update docker-compose.yaml --- docker-compose.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 8fe7475..d8f8499 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,8 +1,6 @@ services: radio: - build: - context: . - dockerfile: Dockerfile + image: ghcr.io/splayfunityde/radio:latest restart: always volumes: - /opt/dockerfiles/radio:/bot From d76b8b4b487a92fde2ad6eb361a18079148e68ec Mon Sep 17 00:00:00 2001 From: Splayfer Date: Sun, 10 Aug 2025 19:42:35 +0200 Subject: [PATCH 5/6] Update Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 04df85d..409efc8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM amazoncorretto:21 RUN mkdir /bot -COPY radio-1.0-SNAPSHOT.jar /bot +COPY build/libs/radio-1.0-SNAPSHOT.jar /bot ENTRYPOINT ["java", "-jar", "/bot/radio-1.0-SNAPSHOT.jar"] From 29f879dfcd5d8641305743c855f322954bc6f837 Mon Sep 17 00:00:00 2001 From: Splayfer Date: Sun, 10 Aug 2025 19:47:11 +0200 Subject: [PATCH 6/6] Update gradle-publish.yml --- .github/workflows/gradle-publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-publish.yml b/.github/workflows/gradle-publish.yml index 056d12e..39804d4 100644 --- a/.github/workflows/gradle-publish.yml +++ b/.github/workflows/gradle-publish.yml @@ -5,9 +5,9 @@ name: Build and Deploy to Staging server on: push: - branches: [ ghcr-test ] + branches: [ master ] pull_request: - branches: [ ghcr-test ] + branches: [ master ] env: