variables: # Version de git utilisée GIT_VERSION: v2.30.1 # Branche cible pour les PDF (modifiable via CI/CD variables) PDF_BRANCH: "pdf" FILE_NAMES: presentation build_tex: stage: build image: danteev/texlive:latest # texlive plus inkscape and others script: - | for FILE_NAME in $FILE_NAMES do echo "Compiling ${FILE_NAME}" pdflatex --shell-escape ${FILE_NAME}.tex if test -f ${FILE_NAME}.bcf; then echo "Found ${FILE_NAME}.bcf, running biber" biber ${FILE_NAME} fi pdflatex --shell-escape ${FILE_NAME}.tex done after_script: - | for FILE_NAME in $FILE_NAMES do echo "============================================" cat ${FILE_NAME}.log echo "============================================" done artifacts: paths: - "*.pdf" deploy: stage: deploy image: name: alpine/git:${GIT_VERSION} entrypoint: [""] before_script: # Clone le repo dans un dossier temporaire - git clone "https://${GITLAB_USERNAME}:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git" "${CI_COMMIT_SHA}" # Configure l’identité git - git config --global user.email "${GIT_USER_EMAIL:-$GITLAB_USER_EMAIL}" - git config --global user.name "${GIT_USER_NAME:-$GITLAB_USER_NAME}" script: # Déplace les PDFs compilés dans le repo cloné - cd "${CI_COMMIT_SHA}" # Crée une branche orpheline (vierge, sans historique ni fichiers) - git checkout --orphan "${PDF_BRANCH}" - git reset --hard - mv ../*.pdf ./ # Ajoute uniquement les PDF - git add -f *.pdf # Vérifie s’il y a des changements et push - | CHANGES=$(git status --porcelain | wc -l) if [ "$CHANGES" -gt "0" ]; then git commit -m "${COMMIT_MESSAGE:-Updating PDF files}" git push --force origin "${PDF_BRANCH}" -o ci.skip else echo "No PDF changes to commit" fi