stages: - build - upload - release variables: PACKAGE_VERSION: "$CI_COMMIT_TAG" PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/resume" RESUME_FILE: "resume.pdf" # TODO: Cache curl installs and tectonic, for now this works, but is not performant build: stage: build image: alpine:latest variables: TECTONIC_DEPS_CACHE_PATH: "${CI_PROJECT_DIR}/.cache/Tectonic" TECTONIC_BIN_CACHE_PATH: "${CI_PROJECT_DIR}/tectonic" cache: policy: pull-push when: on_success paths: - "${TECTONIC_DEPS_CACHE_PATH}" - "${TECTONIC_BIN_CACHE_PATH}" script: | mkdir -p "${CI_PROJECT_DIR}/.cache" mkdir -p "${HOME}/.cache" if [ -r "${TECTONIC_DEPS_CACHE_PATH}" ]; then mv "${TECTONIC_DEPS_CACHE_PATH}" "${HOME}/.cache" fi if ! [ -x ./tectonic ]; then echo "Cache miss, tectonic binary not in cache! Redownloading!" apk update apk add curl curl -L0 https://github.com/tectonic-typesetting/tectonic/releases/download/tectonic%400.14.1/tectonic-0.14.1-x86_64-unknown-linux-musl.tar.gz --output tectonic.tar.gz tar -xf tectonic.tar.gz fi echo "Compiling resume!" ./tectonic -X compile --keep-logs ./resume.tex echo "Finished compiling resume, saving caches" mv "${HOME}/.cache/Tectonic" "${CI_PROJECT_DIR}/.cache/Tectonic" artifacts: expire_in: 1 week paths: - "${RESUME_FILE}" upload: stage: upload needs: - build rules: - if: $CI_COMMIT_TAG image: curlimages/curl:latest script: - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "${RESUME_FILE}" ${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/${RESUME_FILE}' tag-release: stage: release needs: - upload image: registry.gitlab.com/gitlab-org/release-cli:latest script: - echo "Releasing Resume @ ${CI_COMMIT_TAG}" rules: - if: $CI_COMMIT_TAG && $CI_COMMIT_TAG != "latest" release: tag_name: "${CI_COMMIT_TAG}" description: "${CI_COMMIT_TAG}" ref: "${CI_COMMIT_SHA}" assets: links: - name: "${RESUME_FILE}" url: "${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/${RESUME_FILE}" filepath: /resume.pdf link_type: other