fime/.gitlab-ci.yml

154 lines
4.1 KiB
YAML
Raw Normal View History

image: python:3.10
2022-09-21 21:53:45 +00:00
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
2022-09-21 21:58:23 +00:00
PIPENV_VENV_IN_PROJECT: 1
2022-09-21 21:53:45 +00:00
2022-09-27 17:21:03 +00:00
cache:
paths:
- .cache/pip
- .venv/
2022-09-30 10:18:41 +00:00
workflow:
rules:
- if: $CI_COMMIT_AUTHOR == "Gitlab CI <ci@gitlab.com>"
when: never
- when: always
2022-09-27 16:29:07 +00:00
stages:
2022-09-27 17:21:03 +00:00
- prepare
2022-09-30 10:18:41 +00:00
- deps
2022-09-27 16:29:07 +00:00
- build
- deploy
- release
2022-09-27 17:21:03 +00:00
prepare:
stage: prepare
before_script:
- pip install setuptools_scm>=6.2
script:
2022-09-27 18:18:39 +00:00
- PYTHON_VERSION=$(python --version | cut -d " " -f2)
- echo "PYTHON_VERSION=${PYTHON_VERSION}" | tee -a build.env
2022-09-27 17:21:03 +00:00
- VERSION=$(python -m setuptools_scm)
- echo "VERSION=${VERSION}" | tee -a build.env
- echo "LINUX_AMD64_BINARY=fime_linux_amd64_${VERSION}" | tee -a build.env
2022-09-27 18:18:39 +00:00
- echo "WINDOWS_AMD64_BINARY=fime_windows_amd64_${VERSION}" | tee -a build.env
2022-09-27 17:21:03 +00:00
- echo "PACKAGE_REGISTRY_URL=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/fime/${VERSION}" | tee -a build.env
artifacts:
paths:
- src/fime/_version.py
2022-09-27 17:21:03 +00:00
reports:
dotenv: build.env
2022-09-21 21:53:45 +00:00
2022-09-30 10:18:41 +00:00
update_windows_deps:
stage: deps
tags:
- shared-windows
- windows
- windows-1809
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_COMMIT_BRANCH == "main"
when: always
#- changes:
# - Pipfile
# - Pipfile.lock
# when: always
before_script:
2022-09-30 10:42:54 +00:00
- Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
2022-09-30 10:18:41 +00:00
- choco install python --version=$PYTHON_VERSION -y --no-progress
- choco install openssh -y --no-progress
- refreshenv
- python --version
- pip install pipenv
2022-09-30 11:01:19 +00:00
- Get-Service -Name ssh-agent | Set-Service -StartupType Manual
- ssh-agent
2022-09-30 10:18:41 +00:00
- cat "${WINDOWS_SSH_PRIVATE_KEY}" | ssh-add -
- git config --global user.name "Gitlab CI"
- git config --global user.email "ci@gitlab.com"
script:
- pipenv lock --dev --keep-outdated
- git commit -m "Updated windows deps from CI" Pipfile.lock
- git push
2022-09-27 16:29:07 +00:00
package_linux:
2022-09-21 21:53:45 +00:00
stage: build
2022-09-27 16:29:07 +00:00
before_script:
2022-09-21 21:53:45 +00:00
- python --version
2022-09-27 16:29:07 +00:00
- pip install pipenv
2022-09-21 21:56:18 +00:00
- pipenv sync --dev
2022-09-27 16:29:07 +00:00
script:
2022-09-27 16:34:15 +00:00
- pipenv run python -m build -w
- pipenv run pyinstaller --onefile --name "${LINUX_AMD64_BINARY}" src/fime/main.py
2022-09-21 21:53:45 +00:00
artifacts:
paths:
- dist/*.whl
2022-09-27 16:50:35 +00:00
- dist/fime_linux_*
2022-09-27 18:18:39 +00:00
package_windows:
stage: build
tags:
- shared-windows
- windows
- windows-1809
# takes forever, so only run if it is worthwhile
rules:
- if: $CI_COMMIT_TAG
2022-09-27 18:18:39 +00:00
before_script:
- choco install python --version=$PYTHON_VERSION -y --no-progress
- C:\\Python310\\python.exe --version
- C:\\Python310\\python.exe -m pip install pipenv
2022-09-29 22:04:03 +00:00
- C:\\Python310\\python.exe -m pipenv sync --dev
2022-09-27 18:18:39 +00:00
script:
2022-09-27 20:17:50 +00:00
- C:\\Python310\\python.exe -m pipenv run pyinstaller --onefile --windowed --name "${WINDOWS_AMD64_BINARY}" -i icon.ico src/fime/main.py
2022-09-27 18:18:39 +00:00
artifacts:
paths:
- dist/fime_windows_*
2022-09-27 23:26:40 +00:00
pypi_package:
stage: deploy
environment: pypi
rules:
- if: $CI_COMMIT_TAG
2022-09-27 23:26:40 +00:00
before_script:
- pip install twine
script:
2022-09-27 23:45:25 +00:00
- twine upload dist/fime-*.whl
2022-09-27 23:26:40 +00:00
gitlab_package:
2022-09-27 16:50:35 +00:00
stage: deploy
2022-09-27 17:21:03 +00:00
image: curlimages/curl:latest
rules:
- if: $CI_COMMIT_TAG
2022-09-27 16:50:35 +00:00
script:
2022-09-27 23:26:40 +00:00
- curl --version
2022-09-27 17:21:03 +00:00
- |
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file "dist/${LINUX_AMD64_BINARY}" "${PACKAGE_REGISTRY_URL}/${LINUX_AMD64_BINARY}"
- |
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file "dist/${WINDOWS_AMD64_BINARY}.exe" "${PACKAGE_REGISTRY_URL}/${WINDOWS_AMD64_BINARY}.exe"
2022-09-21 22:10:31 +00:00
release_job:
2022-09-27 16:29:07 +00:00
stage: release
2022-09-21 22:10:31 +00:00
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
- name: "${WINDOWS_AMD64_BINARY}.exe"
url: "${PACKAGE_REGISTRY_URL}/${WINDOWS_AMD64_BINARY}.exe"
filepath: "/bin/fime_windows_amd64.exe"
link_type: package