From 3ff4e24872dc8eaf6d6cfc70ef95da97f791bf15 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Thu, 2 Jul 2026 22:57:29 +0800 Subject: [PATCH] ci: build ingest and stream images for amd64 and arm64 Add Drone pipelines building both container images per architecture and merging them into multi-arch manifests under registry.nemunai.re/radieo. Co-Authored-By: Claude Opus 4.8 --- .drone-manifest-ingest.yml | 17 +++++ .drone-manifest-stream.yml | 17 +++++ .drone.yml | 153 +++++++++++++++++++++++++++++++++++++ docker-compose.yml | 4 +- 4 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 .drone-manifest-ingest.yml create mode 100644 .drone-manifest-stream.yml create mode 100644 .drone.yml diff --git a/.drone-manifest-ingest.yml b/.drone-manifest-ingest.yml new file mode 100644 index 0000000..617de92 --- /dev/null +++ b/.drone-manifest-ingest.yml @@ -0,0 +1,17 @@ +image: registry.nemunai.re/radieo/ingest:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} +{{#if build.tags}} +tags: +{{#each build.tags}} + - {{this}} +{{/each}} +{{/if}} +manifests: + - image: registry.nemunai.re/radieo/ingest:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 + platform: + architecture: amd64 + os: linux + - image: registry.nemunai.re/radieo/ingest:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 + platform: + architecture: arm64 + os: linux + variant: v8 diff --git a/.drone-manifest-stream.yml b/.drone-manifest-stream.yml new file mode 100644 index 0000000..7ac2eca --- /dev/null +++ b/.drone-manifest-stream.yml @@ -0,0 +1,17 @@ +image: registry.nemunai.re/radieo/stream:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} +{{#if build.tags}} +tags: +{{#each build.tags}} + - {{this}} +{{/each}} +{{/if}} +manifests: + - image: registry.nemunai.re/radieo/stream:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 + platform: + architecture: amd64 + os: linux + - image: registry.nemunai.re/radieo/stream:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 + platform: + architecture: arm64 + os: linux + variant: v8 diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..e88748d --- /dev/null +++ b/.drone.yml @@ -0,0 +1,153 @@ +--- +kind: pipeline +type: docker +name: build-amd64 + +platform: + os: linux + arch: amd64 + +steps: + - name: publish ingest container image + image: plugins/docker + settings: + registry: registry.nemunai.re + repo: registry.nemunai.re/radieo/ingest + context: ingest + dockerfile: ingest/Dockerfile + auto_tag: true + auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} + username: + from_secret: docker_username + password: + from_secret: docker_password + when: + event: + exclude: + - tag + + - name: publish stream container image + image: plugins/docker + settings: + registry: registry.nemunai.re + repo: registry.nemunai.re/radieo/stream + context: stream + dockerfile: stream/Dockerfile + auto_tag: true + auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} + username: + from_secret: docker_username + password: + from_secret: docker_password + when: + event: + exclude: + - tag + +trigger: + branch: + exclude: + - renovate/* + event: + - cron + - push + - tag + +--- +kind: pipeline +type: docker +name: build-arm64 + +platform: + os: linux + arch: arm64 + +steps: + - name: publish ingest container image + image: plugins/docker + settings: + registry: registry.nemunai.re + repo: registry.nemunai.re/radieo/ingest + context: ingest + dockerfile: ingest/Dockerfile + auto_tag: true + auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} + username: + from_secret: docker_username + password: + from_secret: docker_password + when: + event: + exclude: + - tag + + - name: publish stream container image + image: plugins/docker + settings: + registry: registry.nemunai.re + repo: registry.nemunai.re/radieo/stream + context: stream + dockerfile: stream/Dockerfile + auto_tag: true + auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} + username: + from_secret: docker_username + password: + from_secret: docker_password + when: + event: + exclude: + - tag + +trigger: + branch: + exclude: + - renovate/* + event: + - cron + - push + - tag + +--- +kind: pipeline +name: docker-manifest + +platform: + os: linux + arch: arm64 + +steps: + - name: publish ingest manifest + image: plugins/manifest + settings: + auto_tag: true + ignore_missing: true + spec: .drone-manifest-ingest.yml + username: + from_secret: docker_username + password: + from_secret: docker_password + + - name: publish stream manifest + image: plugins/manifest + settings: + auto_tag: true + ignore_missing: true + spec: .drone-manifest-stream.yml + username: + from_secret: docker_username + password: + from_secret: docker_password + +trigger: + branch: + exclude: + - renovate/* + event: + - cron + - push + - tag + +depends_on: + - build-amd64 + - build-arm64 diff --git a/docker-compose.yml b/docker-compose.yml index 7ada3d7..286d4f3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ services: ingest: build: ./ingest - image: radieo-ingest + image: registry.nemunai.re/radieo/ingest volumes: - ./cache:/cache # volume partagé avec le stream (rw : téléchargements) - ./state:/state # état persistant (SQLite) hors du cache éphémère @@ -41,7 +41,7 @@ services: stream: build: ./stream - image: radieo-stream + image: registry.nemunai.re/radieo/stream depends_on: ingest: condition: service_healthy