fime/.gitlab-ci.yml

93 lines
2.6 KiB
YAML

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
# pipenv dependency resolution is platform dependant; pyinstaller has extra dependency on Windows -> resolve at package time
- C:\\Python310\\python.exe -m pipenv install --dev --skip-lock
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