Bonjour,
sur la base de la documentation officielle j’ai réalisé un template d’intégration continue pour Gitlab permettant de produire une image valide de Dokos à chaque nouveau tag.
Vous trouverez le fichier ci-dessous. Il se base sur le dépôt officiel de Frappe.
Attention : il n’intègre pas HRMS et n’installe pas Payments.
Mode d’emploi :
- cloner le dépôt GitHub - frappe/frappe_docker: Docker images for production and development setups of the Frappe framework and ERPNext
- y ajouter le fichier .gitlab-cy.yml (vérifier les variables en fonction de celles de Dokos et du dépôt Frappe : voir la doc officielle Dokos et le fichier docker-bake.hcl)
- pousser sur votre instance Gitlab
- tagger (ici il faut que le tag commence par ‘dokos’ pour activer le job, cf rules l. 40) et pousser le tag
- l’image devrait se générer et être poussée dans votre registre via Kaniko
Pour instancier, il faut penser à :
- ajouter/configurer les bonnes variables dans .env
- utiliser docker compose en assemblant les fichiers qui vous intéressent (dans mon cas :
docker compose -f compose.yaml -f overrides/compose.redis.yaml -f overrides/compose.mariadb.yaml -f overrides/compose.noproxy.yaml up -d
) - lancer la création du site “à la main” :
docker compose exec backend bench new-site frontend --no-mariadb-socket --admin-password=XXX --db-root-password=XXXX --install-app erpnext --set-default
- nota : pour l’utiliser en local bien faire attention que la valeur de variable d’environnement FRAPPE_SITE_NAME_HEADER corresponde au nom du site créé (cf : frappe_docker/single-compose-setup.md at main · frappe/frappe_docker · GitHub)
- de façon générale lisez la doc du dépôt on y apprend pas mal de choses …
Fichier en code source ci-dessous : .gitlab-ci.yml
default:
## FROM : https://docs.gitlab.com/ee/ci/docker/using_kaniko.html
## l.9 : Ajout des codes d'accès au registre (si nécessaire)
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
before_script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
variables:
## en fonction des releases en cours
PAYMENTS_VERSION: "v3.x.x"
DOKOS_VERSION: "v3.20.0"
FRAPPE_BRANCH: "v3.21.0"
## voir docker-bake.hcl
PYTHON_VERSION: "3.10.5"
NODE_VERSION: "16.18.0"
build_docker_dokos:
stage: build
script:
- >-
APPS_JSON="[{\"url\": \"https://gitlab.com/dokos/payments\",\"branch\": \"${PAYMENTS_VERSION}\"},{\"url\": \"https://gitlab.com/dokos/dokos\",\"branch\": \"${DOKOS_VERSION}\"}]"
APPS_JSON_BASE64=$(echo ${APPS_JSON} | base64)
/kaniko/executor
--context "${CI_PROJECT_DIR}/"
--dockerfile "${CI_PROJECT_DIR}/images/custom/Containerfile"
--build-arg "FRAPPE_PATH=https://gitlab.com/dokos/dodock"
--build-arg "FRAPPE_BRANCH=${FRAPPE_BRANCH}"
--build-arg "PYTHON_VERSION=${PYTHON_VERSION}"
--build-arg "NODE_VERSION=${NODE_VERSION}"
--build-arg "APPS_JSON_BASE64=${APPS_JSON_BASE64}"
--cache=true
--destination "${CI_REGISTRY_IMAGE}/dokos:${CI_COMMIT_TAG}"
--snapshotMode=redo
## SI le TAG commence par "dokos" .. alors action
rules:
- if: '$CI_COMMIT_TAG =~ /^dokos/'
when: always
allow_failure: true