Files
sublime-music/.gitlab-ci.yml
2020-05-07 01:27:46 -06:00

142 lines
3.2 KiB
YAML

stages:
- build-containers
- test
- build
- deploy
- verify
- release
variables:
GIT_SUBMODULE_STRATEGY: recursive
LC_ALL: "C.UTF-8"
LANG: "C.UTF-8"
image: registry.gitlab.com/sumner/sublime-music/python-build:latest
lint:
stage: test
before_script:
- ./cicd/install-project-deps.sh
script:
- pipenv run python setup.py check -mrs
- pipenv run flake8
- pipenv run mypy sublime
- pipenv run cicd/custom_style_check.py
test:
stage: test
before_script:
- ./cicd/install-project-deps.sh
- ./cicd/start-dbus.sh
script:
- pipenv run ./cicd/pytest.sh
artifacts:
paths:
- htmlcov
build:
stage: build
before_script:
- ./cicd/install-project-deps.sh
script:
- pipenv run python setup.py sdist
artifacts:
paths:
- dist/*
expire_in: 7 days
build_flatpak:
image: registry.gitlab.com/sumner/sublime-music/flatpak-build:latest
stage: build
script:
- cd flatpak
- ./flatpak_build.sh
artifacts:
paths:
- flatpak/sublime-music.flatpak
# Deploy documenation and code coverage to GitLab Pages
pages:
only:
- master
stage: deploy
before_script:
- ./cicd/install-project-deps.sh
- ./cicd/start-dbus.sh
script:
- ./cicd/pages-build.sh
artifacts:
paths:
- public
deploy_pypi:
image: python:3.8-alpine
stage: deploy
only:
variables:
# Only do a deploy if it's a version tag.
- $CI_COMMIT_TAG =~ /^v.*/
before_script:
- apk add gcc musl-dev libffi-dev openssl-dev
- pip install twine
- './cicd/create-pypirc.sh'
script:
# Upload to the test PyPi instance, then upload to the real one.
- twine upload -r pypi_test dist/*
- twine upload dist/*
after_script:
- echo "" > ~/.pypirc && rm -f ~/.pypirc
verify_deploy:
stage: verify
only:
variables:
# Only verify the deploy if it's a version tag.
- $CI_COMMIT_TAG =~ /^v.*/
script:
- pip3 install sublime-music
publish_release:
stage: release
only:
variables:
# Only verify the deploy if it's a version tag.
- $CI_COMMIT_TAG =~ /^v.*/
before_script:
- ./cicd/install-project-deps.sh
script:
- pipenv run ./cicd/publish-gitlab-release.sh
# Scheduled Jobs
# =============================================================================
# Create the Docker image for Flatpak builds.
flatpak_docker:
image: docker:1.13
stage: build-containers
only:
variables:
- $REBUILD_FLATPAK_DOCKER == "True"
services:
- docker:dind
script:
- docker version
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE/flatpak-build:latest ./cicd/flatpak-build
- docker push $CI_REGISTRY_IMAGE/flatpak-build
# Create the Docker image for Python testing/builds.
python_docker:
image: docker:1.13
stage: build-containers
only:
variables:
- $REBUILD_PYTHON_DOCKER == "True"
services:
- docker:dind
script:
- docker version
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE/python-build:latest ./cicd/python-build
- docker push $CI_REGISTRY_IMAGE/python-build:latest