image: python:3.10 variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" PIPENV_VENV_IN_PROJECT: 1 cache: paths: - .cache/pip - .venv/ stages: - prepare - build - deploy - release prepare: stage: prepare before_script: - pip install setuptools_scm>=6.2 script: - PYTHON_VERSION=$(python --version | cut -d " " -f2) - echo "PYTHON_VERSION=${PYTHON_VERSION}" | tee -a build.env - VERSION=$(python -m setuptools_scm) - echo "VERSION=${VERSION}" | tee -a build.env - echo "LINUX_AMD64_BINARY=fime_linux_amd64_${VERSION}" | tee -a build.env - echo "WINDOWS_AMD64_BINARY=fime_windows_amd64_${VERSION}" | tee -a build.env - echo "PACKAGE_REGISTRY_URL=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/fime/${VERSION}" | tee -a build.env artifacts: reports: dotenv: build.env package_linux: stage: build before_script: - python --version - pip install pipenv - pipenv sync --dev script: - pipenv run python -m build -w - pipenv run pyinstaller --onefile --name "${LINUX_AMD64_BINARY}" src/fime/main.py artifacts: paths: - dist/*.whl - dist/fime_linux_* package_windows: stage: build tags: - shared-windows - windows - windows-1809 before_script: - choco install python --version=$PYTHON_VERSION -y --no-progress - C:\\Python310\\python.exe --version - C:\\Python310\\python.exe -m pip install pipenv - C:\\Python310\\python.exe -m pipenv sync --dev # pyinstaller windows only dependencies - C:\\Python310\\python.exe -m pipenv install --skip-lock pillow pywin32-ctypes script: - C:\\Python310\\python.exe -m pipenv run pyinstaller --onefile --windowed --name "${WINDOWS_AMD64_BINARY}" -i src/fime/icons/appointment-new.svg src/fime/main.py artifacts: paths: - dist/fime_windows_* upload: stage: deploy image: curlimages/curl:latest rules: - if: $CI_COMMIT_TAG script: - | curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file "dist/${LINUX_AMD64_BINARY}" "${PACKAGE_REGISTRY_URL}/${LINUX_AMD64_BINARY}" release_job: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest rules: - if: $CI_COMMIT_TAG script: - echo "Running the release job." release: tag_name: $CI_COMMIT_TAG name: 'Release $CI_COMMIT_TAG' description: 'Release created using the release-cli.' assets: links: - name: "${LINUX_AMD64_BINARY}" url: "${PACKAGE_REGISTRY_URL}/${LINUX_AMD64_BINARY}" filepath: "/bin/fime_linux_amd64" link_type: package