Compare commits
2
Commits
318329a683
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d67ce3681 | ||
|
|
65242ac3c7 |
@@ -0,0 +1,171 @@
|
||||
# Pipeline Gitea Actions pour Kazier — lint + test + build + image registre.
|
||||
#
|
||||
# Prérequis act_runner (une seule fois) :
|
||||
# - Runner act_runner enregistré contre l'instance Gitea, labels `ubuntu-24.04` dispo.
|
||||
# - Executor docker : privilégié (jobs docker:dind + containers) — sinon le
|
||||
# job `docker` et le service `dind` échouent.
|
||||
# - Gitea app.ini : [actions] ENABLED=true, DEFAULT_ACTIONS_URL=https://github.com
|
||||
# - Droits d'écriture du runner sur son répertoire de travail/cache.
|
||||
#
|
||||
# Secrets (Settings > Actions) :
|
||||
# - CONTAINER_REGISTRY_TOKEN PAT scope write:packages (registre conteneur)
|
||||
# - CONTAINER_REGISTRY_USER utilisateur propriétaire du PAT ci-dessus
|
||||
|
||||
name: CI
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
tags: ["v*"]
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
GO_VERSION: "1.26"
|
||||
ANDROID_IMAGE: cimg/android:2024.01
|
||||
CGO_ENABLED: "0"
|
||||
# Registre conteneur Gitea (ex: cname de l'instance)
|
||||
REGISTRY_HOST: gitea.thirdshop.fr
|
||||
|
||||
jobs:
|
||||
lint-backend:
|
||||
runs-on: ubuntu-24.04
|
||||
container: golang:${{ env.GO_VERSION }}-alpine
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
/go/pkg/mod
|
||||
~/.cache/go-build
|
||||
key: go-${{ runner.os }}-${{ hashFiles('backend/go.sum') }}
|
||||
restore-keys: |
|
||||
go-${{ runner.os }}-
|
||||
|
||||
- run: go mod download
|
||||
working-directory: backend
|
||||
- run: go vet ./...
|
||||
working-directory: backend
|
||||
- run: go install honnef.co/go/tools/cmd/staticcheck@latest && staticcheck ./...
|
||||
working-directory: backend
|
||||
|
||||
lint-mobile:
|
||||
runs-on: ubuntu-24.04
|
||||
container: ${{ env.ANDROID_IMAGE }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: gradle-${{ runner.os }}-${{ hashFiles('mobile-kotlin/gradle/libs.versions.toml') }}
|
||||
restore-keys: |
|
||||
gradle-${{ runner.os }}-
|
||||
- run: ./gradlew :app:lint -q
|
||||
working-directory: mobile-kotlin
|
||||
|
||||
test-backend:
|
||||
runs-on: ubuntu-24.04
|
||||
container: golang:${{ env.GO_VERSION }}-alpine
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:17-alpine
|
||||
env:
|
||||
POSTGRES_DB: kazier_test
|
||||
POSTGRES_USER: kazier
|
||||
POSTGRES_PASSWORD: kazier
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
/go/pkg/mod
|
||||
~/.cache/go-build
|
||||
key: go-${{ runner.os }}-${{ hashFiles('backend/go.sum') }}
|
||||
restore-keys: |
|
||||
go-${{ runner.os }}-
|
||||
- run: go test ./...
|
||||
working-directory: backend
|
||||
env:
|
||||
TEST_DATABASE_URL: postgres://kazier:kazier@postgres:5432/kazier_test?sslmode=disable
|
||||
|
||||
test-mobile:
|
||||
runs-on: ubuntu-24.04
|
||||
container: ${{ env.ANDROID_IMAGE }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: gradle-${{ runner.os }}-${{ hashFiles('mobile-kotlin/gradle/libs.versions.toml') }}
|
||||
restore-keys: |
|
||||
gradle-${{ runner.os }}-
|
||||
- run: ./gradlew :app:testDebugUnitTest -q
|
||||
working-directory: mobile-kotlin
|
||||
|
||||
build-backend:
|
||||
runs-on: ubuntu-24.04
|
||||
container: golang:${{ env.GO_VERSION }}-alpine
|
||||
needs: [lint-backend, test-backend]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- run: |
|
||||
export VERSION="$(cat VERSION)"
|
||||
CGO_ENABLED=0 GOOS=ubuntu-24.04 go build \
|
||||
-trimpath \
|
||||
-ldflags "-s -w -X main.version=${VERSION}" \
|
||||
-o bin/kazier-server \
|
||||
cmd/server/main.go
|
||||
./bin/kazier-server --version
|
||||
working-directory: backend
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: kazier-server
|
||||
path: backend/bin/kazier-server
|
||||
if-no-files-found: error
|
||||
|
||||
docker:
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [build-backend]
|
||||
# Push branches uniquement : pas sur PR (pas de build d'image à la review),
|
||||
# pas sur tag (c'est release.yml qui construit, évite une course dans le
|
||||
# registre entre le job `docker` et `release-docker`).
|
||||
if: github.event_name == 'push' && github.ref_type == 'branch'
|
||||
container:
|
||||
image: docker:27
|
||||
env:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
services:
|
||||
docker:
|
||||
image: docker:27-dind
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Login registre Gitea
|
||||
env:
|
||||
CONTAINER_REGISTRY_TOKEN: ${{ secrets.CONTAINER_REGISTRY_TOKEN }}
|
||||
CONTAINER_REGISTRY_USER: ${{ secrets.CONTAINER_REGISTRY_USER }}
|
||||
run: |
|
||||
: "${CONTAINER_REGISTRY_TOKEN:?CONTAINER_REGISTRY_TOKEN manquant (PAT scope write:packages)}"
|
||||
: "${CONTAINER_REGISTRY_USER:?CONTAINER_REGISTRY_USER manquant (propriétaire du PAT)}"
|
||||
echo "$CONTAINER_REGISTRY_TOKEN" | docker login "$REGISTRY_HOST" -u "$CONTAINER_REGISTRY_USER" --password-stdin
|
||||
echo "REGISTRY_IMAGE=${REGISTRY_HOST}/${{ github.repository_owner }}/kasier" >> "$GITHUB_ENV"
|
||||
echo "IMAGE_TAG=${GITHUB_REF_NAME}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Build + push (registre Gitea)
|
||||
run: |
|
||||
docker build \
|
||||
--build-arg VERSION="$(cat VERSION)" \
|
||||
--build-arg BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
||||
-t "$REGISTRY_IMAGE:$IMAGE_TAG" \
|
||||
./backend
|
||||
docker push "$REGISTRY_IMAGE:$IMAGE_TAG"
|
||||
docker run --rm "$REGISTRY_IMAGE:$IMAGE_TAG" --version
|
||||
@@ -0,0 +1,129 @@
|
||||
# Pipeline Gitea Actions pour Kazier — Release (tags vX.Y.Z uniquement).
|
||||
#
|
||||
# Construit l'APK signé (assembleRelease), crée la Release Gitea avec l'APK en
|
||||
# asset (API, équivalent de `glab release create`), puis pousse l'image
|
||||
# kazier-server sur le registre conteneur Gitea + Docker Hub (tag + latest).
|
||||
#
|
||||
# Secrets (Settings > Actions) :
|
||||
# - RELEASE_KEYSTORE_B64 base64 du keystore release Android (jamais en clair)
|
||||
# - SIGNING_STORE_PASSWORD SIGNING_KEY_ALIAS SIGNING_KEY_PASSWORD
|
||||
# - RELEASE_API_TOKEN PAT scope write:repository (API : création Release)
|
||||
# - CONTAINER_REGISTRY_TOKEN PAT scope write:packages (registre conteneur Gitea)
|
||||
# - CONTAINER_REGISTRY_USER utilisateur propriétaire du PAT ci-dessus
|
||||
# - DOCKERHUB_USER DOCKERHUB_TOKEN PAT Docker Hub (push public)
|
||||
|
||||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags: ["v*"]
|
||||
|
||||
env:
|
||||
ANDROID_IMAGE: cimg/android:2024.01
|
||||
DOCKERHUB_IMAGE: docker.io/thirdshop/kasier
|
||||
# API Gitea (host de l'instance)
|
||||
API_HOST: gitea.thirdshop.fr
|
||||
|
||||
jobs:
|
||||
release-apk:
|
||||
runs-on: ubuntu-24.04
|
||||
container: ${{ env.ANDROID_IMAGE }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: gradle-${{ runner.os }}-${{ hashFiles('mobile-kotlin/gradle/libs.versions.toml') }}
|
||||
restore-keys: |
|
||||
gradle-${{ runner.os }}-
|
||||
|
||||
- name: Signer + assembler l'APK release
|
||||
working-directory: mobile-kotlin
|
||||
env:
|
||||
RELEASE_KEYSTORE_B64: ${{ secrets.RELEASE_KEYSTORE_B64 }}
|
||||
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
|
||||
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
|
||||
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
|
||||
run: |
|
||||
if [ -z "${RELEASE_KEYSTORE_B64:-}" ]; then
|
||||
echo "RELEASE_KEYSTORE_B64 manquant — release non signée." >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "$RELEASE_KEYSTORE_B64" | base64 -d > app/release.keystore
|
||||
cat > app/signing.properties <<EOF
|
||||
storeFile=release.keystore
|
||||
storePassword=${SIGNING_STORE_PASSWORD:?}
|
||||
keyAlias=${SIGNING_KEY_ALIAS:?}
|
||||
keyPassword=${SIGNING_KEY_PASSWORD:?}
|
||||
EOF
|
||||
./gradlew :app:assembleRelease -q
|
||||
|
||||
- name: Créer la Release Gitea + upload APK
|
||||
env:
|
||||
RELEASE_API_TOKEN: ${{ secrets.RELEASE_API_TOKEN }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
VERSION="$(cat VERSION)"
|
||||
API="https://${API_HOST}/api/v1"
|
||||
AUTH="Authorization: token ${RELEASE_API_TOKEN:?RELEASE_API_TOKEN manquant (PAT scope write:repository)}"
|
||||
NOTES="$(python3 -c 'import json,sys;print(json.dumps(open("CHANGELOG.md", encoding="utf-8").read()))' 2>/dev/null)" || NOTES=""
|
||||
RELEASE_JSON="$(curl -sSf -X POST "${API}/repos/${GITHUB_REPOSITORY}/releases" \
|
||||
-H "${AUTH}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"tag_name\":\"v${VERSION}\",\"name\":\"Kazier v${VERSION}\",\"body\":${NOTES}}")"
|
||||
RELEASE_ID="$(printf '%s' "${RELEASE_JSON}" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)"
|
||||
curl -sSf -X POST \
|
||||
"${API}/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets?name=app-release.apk" \
|
||||
-H "${AUTH}" \
|
||||
-F "attachment=@mobile-kotlin/app/build/outputs/apk/release/app-release.apk"
|
||||
|
||||
release-docker:
|
||||
runs-on: ubuntu-24.04
|
||||
container:
|
||||
image: docker:27
|
||||
env:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
services:
|
||||
docker:
|
||||
image: docker:27-dind
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Login registre Gitea
|
||||
env:
|
||||
CONTAINER_REGISTRY_TOKEN: ${{ secrets.CONTAINER_REGISTRY_TOKEN }}
|
||||
CONTAINER_REGISTRY_USER: ${{ secrets.CONTAINER_REGISTRY_USER }}
|
||||
run: |
|
||||
: "${CONTAINER_REGISTRY_TOKEN:?CONTAINER_REGISTRY_TOKEN manquant (PAT scope write:packages)}"
|
||||
: "${CONTAINER_REGISTRY_USER:?CONTAINER_REGISTRY_USER manquant (propriétaire du PAT)}"
|
||||
echo "$CONTAINER_REGISTRY_TOKEN" | docker login "$API_HOST" -u "$CONTAINER_REGISTRY_USER" --password-stdin
|
||||
echo "REGISTRY_IMAGE=${API_HOST}/${{ github.repository_owner }}/kasier" >> "$GITHUB_ENV"
|
||||
|
||||
- name: "Build + push (registre Gitea : vX.Y.Z)"
|
||||
run: |
|
||||
VERSION="$(cat VERSION)"
|
||||
docker build \
|
||||
--build-arg VERSION="${VERSION}" \
|
||||
--build-arg BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
||||
-t "$REGISTRY_IMAGE:v${VERSION}" \
|
||||
./backend
|
||||
docker push "$REGISTRY_IMAGE:v${VERSION}"
|
||||
docker run --rm "$REGISTRY_IMAGE:v${VERSION}" --version
|
||||
echo "TAG=v${VERSION}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Push Docker Hub (tag + latest)
|
||||
env:
|
||||
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
|
||||
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
run: |
|
||||
: "${DOCKERHUB_USER:?DOCKERHUB_USER manquant}"
|
||||
: "${DOCKERHUB_TOKEN:?DOCKERHUB_TOKEN manquant}"
|
||||
IMAGE="$DOCKERHUB_IMAGE"
|
||||
echo "$DOCKERHUB_TOKEN" | docker login -u "$DOCKERHUB_USER" --password-stdin docker.io
|
||||
docker tag "$REGISTRY_IMAGE:$TAG" "$IMAGE:$TAG"
|
||||
docker tag "$REGISTRY_IMAGE:$TAG" "$IMAGE:latest"
|
||||
docker push "$IMAGE:$TAG"
|
||||
docker push "$IMAGE:latest"
|
||||
-196
@@ -1,196 +0,0 @@
|
||||
# Pipeline GitLab pour Kazier — CI + Release.
|
||||
#
|
||||
# Prérequis runner :
|
||||
# - Un runner avec executor Docker pour les jobs d'images (postgres service,
|
||||
# docker:dind). Les jobs Android utilisent $ANDROID_IMAGE (défaut
|
||||
# cimg/android) ; remplacez par l'image installée sur vos workers.
|
||||
#
|
||||
# Variables CI/CD à définir (Settings > CI/CD > Variables) :
|
||||
# - RELEASE_KEYSTORE_B64 base64 du keystore release Android (jamais en clair)
|
||||
# - SIGNING_STORE_PASSWORD SIGNING_KEY_ALIAS SIGNING_KEY_PASSWORD
|
||||
# - GITLAB_API_TOKEN token (scope api, write_repository) pour créer la GitLab Release
|
||||
# - DOCKERHUB_USER DOCKERHUB_TOKEN PAT Docker Hub (push public)
|
||||
#
|
||||
# Publication : à chaque tag vX.Y.Z → GitLab Release (APK attaché, latest +
|
||||
# historique) + image $CI_REGISTRY + image Docker Hub (docker.io/thirdshop/kasier).
|
||||
|
||||
stages:
|
||||
- lint
|
||||
- test
|
||||
- build
|
||||
- docker
|
||||
- release
|
||||
|
||||
variables:
|
||||
GO_IMAGE: "golang:1.26-alpine"
|
||||
POSTGRES_IMAGE: "postgres:17-alpine"
|
||||
ANDROID_IMAGE: "cimg/android:2024.01"
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle-home"
|
||||
CGO_ENABLED: "0"
|
||||
DOCKERHUB_IMAGE: "docker.io/thirdshop/kasier"
|
||||
GLAB_VERSION: "1.118.0"
|
||||
|
||||
default:
|
||||
interruptible: true
|
||||
retry:
|
||||
max: 1
|
||||
|
||||
# ---------------------------------------------------------------- lint ----
|
||||
lint-backend:
|
||||
stage: lint
|
||||
image: $GO_IMAGE
|
||||
script:
|
||||
- go mod download
|
||||
- go vet ./...
|
||||
- go install honnef.co/go/tools/cmd/staticcheck@latest && staticcheck ./...
|
||||
|
||||
lint-mobile:
|
||||
stage: lint
|
||||
image: $ANDROID_IMAGE
|
||||
cache:
|
||||
key: gradle-cache
|
||||
paths:
|
||||
- .gradle-home/caches
|
||||
- .gradle-home/wrapper
|
||||
script:
|
||||
- cd mobile-kotlin && ./gradlew :app:lint -q
|
||||
|
||||
# ---------------------------------------------------------------- test ----
|
||||
test-backend:
|
||||
stage: test
|
||||
image: $GO_IMAGE
|
||||
services:
|
||||
- name: $POSTGRES_IMAGE
|
||||
alias: postgres
|
||||
variables:
|
||||
POSTGRES_DB: kazier_test
|
||||
POSTGRES_USER: kazier
|
||||
POSTGRES_PASSWORD: kazier
|
||||
TEST_DATABASE_URL: postgres://kazier:kazier@postgres:5432/kazier_test?sslmode=disable
|
||||
script:
|
||||
- mkdir -p .go-cache && export GOPATH="$CI_PROJECT_DIR/.go-cache"
|
||||
- go mod download
|
||||
- go test ./...
|
||||
cache:
|
||||
key: go-cache
|
||||
paths:
|
||||
- .go-cache
|
||||
|
||||
test-mobile:
|
||||
stage: test
|
||||
image: $ANDROID_IMAGE
|
||||
cache:
|
||||
key: gradle-cache
|
||||
paths:
|
||||
- .gradle-home/caches
|
||||
- .gradle-home/wrapper
|
||||
script:
|
||||
- cd mobile-kotlin && ./gradlew :app:testDebugUnitTest -q
|
||||
|
||||
# ---------------------------------------------------------------- build ----
|
||||
build-backend:
|
||||
stage: build
|
||||
image: $GO_IMAGE
|
||||
script:
|
||||
- export VERSION=$(cat VERSION)
|
||||
- mkdir -p backend/bin
|
||||
- cd backend && CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags "-s -w -X main.version=$VERSION" -o bin/kazier-server cmd/server/main.go
|
||||
- ./bin/kazier-server --version
|
||||
artifacts:
|
||||
paths:
|
||||
- backend/bin/kazier-server
|
||||
expire_in: 1 week
|
||||
|
||||
# --------------------------------------------------------------- docker ----
|
||||
docker:
|
||||
stage: docker
|
||||
image: docker:27
|
||||
services:
|
||||
- name: docker:27-dind
|
||||
alias: docker
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
IMAGE_TAG: "$CI_COMMIT_TAG"
|
||||
script:
|
||||
- export IMAGE_TAG="${IMAGE_TAG:-$CI_COMMIT_REF_SLUG}"
|
||||
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
|
||||
- docker build
|
||||
--build-arg VERSION="$(cat VERSION)"
|
||||
--build-arg BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
||||
-t "$CI_REGISTRY_IMAGE:$IMAGE_TAG"
|
||||
./backend
|
||||
- docker push "$CI_REGISTRY_IMAGE:$IMAGE_TAG"
|
||||
- docker run --rm "$CI_REGISTRY_IMAGE:$IMAGE_TAG" --version
|
||||
needs: ["build-backend"]
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
||||
|
||||
# -------------------------------------------------------------- release ----
|
||||
release-apk:
|
||||
stage: release
|
||||
image: $ANDROID_IMAGE
|
||||
cache:
|
||||
key: gradle-cache
|
||||
paths:
|
||||
- .gradle-home/caches
|
||||
- .gradle-home/wrapper
|
||||
script:
|
||||
- export VERSION=$(cat VERSION)
|
||||
- cd mobile-kotlin
|
||||
- |
|
||||
if [ -n "${RELEASE_KEYSTORE_B64:-}" ]; then
|
||||
echo "$RELEASE_KEYSTORE_B64" | base64 -d > app/release.keystore
|
||||
cat > app/signing.properties <<EOF
|
||||
storeFile=release.keystore
|
||||
storePassword=${SIGNING_STORE_PASSWORD:?}
|
||||
keyAlias=${SIGNING_KEY_ALIAS:?}
|
||||
keyPassword=${SIGNING_KEY_PASSWORD:?}
|
||||
EOF
|
||||
else
|
||||
echo "RELEASE_KEYSTORE_B64 manquant — release non signée." >&2
|
||||
exit 1
|
||||
fi
|
||||
- ./gradlew :app:assembleRelease -q
|
||||
- cd "$CI_PROJECT_DIR"
|
||||
- |
|
||||
# glab : création de la GitLab Release + upload de l'APK en asset.
|
||||
curl -sSLf \
|
||||
"https://gitlab.com/gitlab-org/cli/-/releases/v${GLAB_VERSION}/downloads/glab_${GLAB_VERSION}_linux_amd64.tar.gz" \
|
||||
| tar xz --strip-components=1 -C /usr/local/bin bin/glab
|
||||
- glab --version
|
||||
- export GITLAB_TOKEN="$GITLAB_API_TOKEN"
|
||||
- glab release create "v$VERSION"
|
||||
--name "Kazier v$VERSION"
|
||||
--notes-file CHANGELOG.md
|
||||
"mobile-kotlin/app/build/outputs/apk/release/app-release.apk"
|
||||
needs: ["docker"]
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
|
||||
release-docker:
|
||||
stage: release
|
||||
image: docker:27
|
||||
services:
|
||||
- name: docker:27-dind
|
||||
alias: docker
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
script:
|
||||
- export VERSION=$(cat VERSION)
|
||||
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
|
||||
- docker pull "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG"
|
||||
- |
|
||||
: "${DOCKERHUB_USER:?DOCKERHUB_USER manquant}"
|
||||
: "${DOCKERHUB_TOKEN:?DOCKERHUB_TOKEN manquant}"
|
||||
echo "$DOCKERHUB_TOKEN" | docker login -u "$DOCKERHUB_USER" --password-stdin docker.io
|
||||
IMAGE="$DOCKERHUB_IMAGE"
|
||||
docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG" "$IMAGE:$CI_COMMIT_TAG"
|
||||
docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG" "$IMAGE:latest"
|
||||
docker push "$IMAGE:$CI_COMMIT_TAG"
|
||||
docker push "$IMAGE:latest"
|
||||
needs: ["docker"]
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
+1
-1
@@ -34,7 +34,7 @@ LABEL org.opencontainers.image.title="kazier-server" \
|
||||
org.opencontainers.image.description="Kazier backend API (Go/Gin + PostgreSQL) — local-first document vault" \
|
||||
org.opencontainers.image.version="${VERSION}" \
|
||||
org.opencontainers.image.licenses="AGPL-3.0-only" \
|
||||
org.opencontainers.image.source="https://gitlab.thirdshop.fr/thirdshop/kasier" \
|
||||
org.opencontainers.image.source="https://gitea.thirdshop.fr/thirdshop/kasier" \
|
||||
org.opencontainers.image.url="https://thirdshop.fr/en/applications/kazier/" \
|
||||
org.opencontainers.image.created="${BUILD_DATE}" \
|
||||
org.opencontainers.image.revision=""
|
||||
|
||||
Reference in New Issue
Block a user