forked from rigetti/pyquil
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
147 lines (127 loc) · 3.9 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# other GitLab CI YAML files to pull jobs and job templates from -- note that there is an
# additional "forest" directory here, as the GitLab version of the repo is used by include
include:
- project: rigetti/forest/gitlab-pipelines
file: docker.gitlab-ci.yml
- project: rigetti/forest/gitlab-pipelines
file: python.gitlab-ci.yml
# global build variables
variables:
IMAGE: rigetti/forest
QVM_URL: "http://qvm:5000"
QUILC_URL: "tcp://quilc:5555"
# Docker images to spin up along with the various CI jobs
services:
- name: rigetti/qvm
alias: qvm
command: ["-S"]
- name: rigetti/quilc
alias: quilc
command: ["-R"]
####################################################################################################
# EVERY-COMMIT JOBS
####################################################################################################
# build the Sphinx documentation
# for all Python jobs, see rigetti/gitlab-pipelines/python.gitlab-ci.yml
build-docs:
extends: .python
image: python:3.6
script:
- apt-get update && apt-get install -y pandoc
- make docs
# validate code format against Black
check-format:
extends: .python
script:
- make check-format
# validate code style against flake8
check-style:
extends: .python
script:
- make check-style
# perform static type checking with mypy
check-types:
extends: .python
script:
- make check-types
# run the unit tests with Python 3.6
test-py36:
extends: .python
image: python:3.6
script:
- make test
# run the unit tests with Python 3.7, and report coverage
test-py37:
extends: .python
script:
- make test
coverage: '/TOTAL.*\s(\d+)%/'
# run the unit tests with Python 3.8
test-py38:
extends: .python
image: python:3.8
script:
- make test
# test for coverage using coveralls
test-coverage:
extends: .python
script:
- make coverage
####################################################################################################
# MASTER-ONLY JOBS
####################################################################################################
# create a Docker image from this master commit (see rigetti/gitlab-pipelines/docker.gitlab-ci.yml)
docker-edge:
extends: .docker-edge
# upload the source distribution of this master commit to TestPyPI
upload-testpypi:
extends: .python
stage: deploy
image: python:3.6
only:
refs:
- master
script:
- make version > VERSION.txt
- make dist
- make upload
allow_failure: true
####################################################################################################
# BRANCH-ONLY JOBS
####################################################################################################
# create a Docker image from this branch commit (see rigetti/gitlab-pipelines/docker.gitlab-ci.yml)
docker-branch:
extends: .docker-branch
####################################################################################################
# RELEASE-ONLY JOBS
####################################################################################################
# create a Docker image from this release (see rigetti/gitlab-pipelines/docker.gitlab-ci.yml)
docker-stable:
extends: .docker-stable
# test that the latest Docker image doesn't error when performing simple tasks
test-docker:
stage: test
image: docker:stable
tags:
- dockerd
- github
only:
refs:
- /^v(\d+\.)?(\d+\.)?(\d+)$/
script:
- docker run --rm $IMAGE:edge python -c "from pyquil import get_qc; qvm = get_qc('9q-qvm')"
# test that installing from TestPyPI completes successfully
install-testpypi:
stage: test
image: python:3.6
tags:
- github
only:
refs:
- /^v(\d+\.)?(\d+\.)?(\d+)$/
variables:
PYPI_URL: https://pypi.org/simple
TEST_PYPI_URL: https://test.pypi.org/simple/
script:
- pip install --index-url ${TEST_PYPI_URL} --extra-index-url ${PYPI_URL} pyquil
- python -c "import pyquil"