stages: - build - push cache: key: texlive-cache paths: - /usr/local/texlive - /var/cache/tlmgr - /var/cache/apt/archives variables: IMAGE_NAME: sharelatex-with-texlive-full ARCHIVED_IMAGE: sharelatex_with_texlive_full.tar TEXLIVE_REPO: https://ftp.tu-chemnitz.de/pub/tex/systems/texlive/tlnet IMAGE_ENTRYPOINT: "/sbin/my_init" GITEA_IMAGE_NAME: ${GITEA_REGISTRY}/tex-projects/${IMAGE_NAME} DOCKER_HUB_IMAGE_NAME: ${DOCKER_HUB_USER}/${IMAGE_NAME} workflow: rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH build: stage: build tags: - privileged image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker services: - name: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:dind alias: docker before_script: - echo "$CI_DEPENDENCY_PROXY_PASSWORD" | docker login $CI_DEPENDENCY_PROXY_SERVER -u $CI_DEPENDENCY_PROXY_USER --password-stdin script: - | if [ ! -f $ARCHIVED_IMAGE ]; then apk add --no-cache curl curl -sSfL https://raw.githubusercontent.com/overleaf/toolkit/master/lib/config-seed/version -o version.txt OVERLEAF_VERSION=$(cat version.txt) echo "*** Image version: $OVERLEAF_VERSION" docker pull --quiet ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sharelatex/sharelatex:$OVERLEAF_VERSION docker run --name temp --entrypoint /bin/bash ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sharelatex/sharelatex:$OVERLEAF_VERSION -c "\ tlmgr option repository $TEXLIVE_REPO && \ tlmgr update --self --all && \ tlmgr install scheme-full && \ luaotfload-tool -fu && \ tlmgr path add && \ apt update && apt install -y inkscape lilypond python3-pygments && \ echo shell_escape = t >> /usr/local/texlive/2025/texmf.cnf && \ echo 'server_tokens off;' > /etc/nginx/conf.d/security.conf" docker commit --change "ENTRYPOINT $IMAGE_ENTRYPOINT" temp $IMAGE_NAME:$OVERLEAF_VERSION docker tag $IMAGE_NAME:$OVERLEAF_VERSION $IMAGE_NAME:latest docker save -o $ARCHIVED_IMAGE $IMAGE_NAME:$OVERLEAF_VERSION $IMAGE_NAME:latest docker system prune -f fi artifacts: paths: - $ARCHIVED_IMAGE - version.txt expire_in: 7 days push: stage: push tags: - privileged image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker services: - name: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:dind alias: docker dependencies: - build script: - OVERLEAF_VERSION=$(cat version.txt) - echo $CI_JOB_TOKEN | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - docker load -i $ARCHIVED_IMAGE - docker tag ${IMAGE_NAME}:${OVERLEAF_VERSION} ${CI_REGISTRY}/${CI_PROJECT_PATH}/${IMAGE_NAME}:${OVERLEAF_VERSION} - docker tag ${IMAGE_NAME}:latest ${CI_REGISTRY}/${CI_PROJECT_PATH}/${IMAGE_NAME}:latest - echo "*** Pushing ${CI_REGISTRY}/${CI_PROJECT_PATH}/${IMAGE_NAME}:${OVERLEAF_VERSION}" - docker push --quiet ${CI_REGISTRY}/${CI_PROJECT_PATH}/${IMAGE_NAME}:${OVERLEAF_VERSION} - echo "*** Pushing ${CI_REGISTRY}/${CI_PROJECT_PATH}/${IMAGE_NAME}:latest" - docker push --quiet ${CI_REGISTRY}/${CI_PROJECT_PATH}/${IMAGE_NAME}:latest - echo $GITEA_REGISTRY_PASSWORD | docker login -u $GITEA_REGISTRY_USER --password-stdin $GITEA_REGISTRY - docker tag ${IMAGE_NAME}:${OVERLEAF_VERSION} ${GITEA_IMAGE_NAME}:${OVERLEAF_VERSION} - docker tag ${IMAGE_NAME}:latest ${GITEA_IMAGE_NAME}:latest - echo "*** Pushing ${GITEA_IMAGE_NAME}:${OVERLEAF_VERSION}" - docker push --quiet ${GITEA_IMAGE_NAME}:${OVERLEAF_VERSION} - echo "*** Pushing ${GITEA_IMAGE_NAME}:latest" - docker push --quiet ${GITEA_IMAGE_NAME}:latest - echo $DOCKER_HUB_PASSWORD | docker login -u $DOCKER_HUB_USER --password-stdin - docker tag ${IMAGE_NAME}:${OVERLEAF_VERSION} ${DOCKER_HUB_IMAGE_NAME}:${OVERLEAF_VERSION} - docker tag ${IMAGE_NAME}:latest ${DOCKER_HUB_IMAGE_NAME}:latest - echo "*** Pushing ${DOCKER_HUB_IMAGE_NAME}:${OVERLEAF_VERSION}" - docker push --quiet ${DOCKER_HUB_IMAGE_NAME}:${OVERLEAF_VERSION} - echo "*** Pushing ${DOCKER_HUB_IMAGE_NAME}:latest" - docker push --quiet ${DOCKER_HUB_IMAGE_NAME}:latest artifacts: paths: - $ARCHIVED_IMAGE - version.txt expire_in: 7 days