11
22test-tmpl : &test-tmpl
33 command : |
4+ pwd
45 . ../venv/bin/activate
56 export DEBUG=1
67 export SERVER_FIXTURES_HOSTNAME=127.0.0.1
@@ -11,7 +12,7 @@ job-tmpl: &job-tmpl
1112 machine :
1213 image : ubuntu-2004:edge
1314
14- working_directory : ~ /src
15+ working_directory : /home/circleci /src
1516
1617 steps :
1718 - run : env
@@ -59,51 +60,51 @@ job-tmpl: &job-tmpl
5960 make develop
6061 - run :
6162 name : Run Tests - pytest-fixture-config
62- working_directory : ~ /src/pytest-fixture-config
63+ working_directory : /home/circleci /src/pytest-fixture-config
6364 << : *test-tmpl
6465 - run :
6566 name : Run Tests - pytest-shutil
66- working_directory : ~ /src/pytest-shutil
67+ working_directory : /home/circleci /src/pytest-shutil
6768 << : *test-tmpl
6869 - run :
6970 name : Run Tests - pytest-server-fixtures
70- working_directory : ~ /src/pytest-server-fixtures
71+ working_directory : /home/circleci /src/pytest-server-fixtures
7172 << : *test-tmpl
7273 - run :
7374 name : Run Tests - pytest-pyramid-server
74- working_directory : ~ /src/pytest-pyramid-server
75+ working_directory : /home/circleci /src/pytest-pyramid-server
7576 << : *test-tmpl
7677 - run :
7778 name : Run Tests - pytest-devpi-server
78- working_directory : ~ /src/pytest-devpi-server
79+ working_directory : /home/circleci /src/pytest-devpi-server
7980 << : *test-tmpl
8081 - run :
8182 name : Run Tests - pytest-listener
82- working_directory : ~ /src/pytest-listener
83+ working_directory : /home/circleci /src/pytest-listener
8384 << : *test-tmpl
8485 - run :
8586 name : Run Tests - pytest-svn
86- working_directory : ~ /src/pytest-svn
87+ working_directory : /home/circleci /src/pytest-svn
8788 << : *test-tmpl
8889 - run :
8990 name : Run Tests - pytest-git
90- working_directory : ~ /src/pytest-git
91+ working_directory : /home/circleci /src/pytest-git
9192 << : *test-tmpl
9293 - run :
9394 name : Run Tests - pytest-virtualenv
94- working_directory : ~ /src/pytest-virtualenv
95+ working_directory : /home/circleci /src/pytest-virtualenv
9596 << : *test-tmpl
9697 - run :
9798 name : Run Tests - pytest-webdriver
98- working_directory : ~ /src/pytest-webdriver
99+ working_directory : /home/circleci /src/pytest-webdriver
99100 << : *test-tmpl
100101 - run :
101102 name : Run Tests - pytest-profiling
102- working_directory : ~ /src/pytest-profiling
103+ working_directory : /home/circleci /src/pytest-profiling
103104 << : *test-tmpl
104105 - run :
105106 name : Run Tests - pytest-verbose-parametrize
106- working_directory : ~ /src/pytest-verbose-parametrize
107+ working_directory : /home/circleci /src/pytest-verbose-parametrize
107108 << : *test-tmpl
108109 - run :
109110 name : Archive Junit and Coverage
@@ -121,6 +122,31 @@ job-tmpl: &job-tmpl
121122 - run :
122123 name : Explode if tests have failed
123124 command : compgen -G FAILED-* && exit 1 || true
125+ - run :
126+ name : Build artifacts
127+ command : |
128+ . venv/bin/activate
129+ make wheels
130+ make sdists
131+ mkdir dist
132+ mv */dist/* dist
133+ - run :
134+ name : Move artifacts to workspace
135+ command : |
136+ mkdir -p /tmp/to-release/dist
137+ if [ "$PYTHON" = "python3.6" ]; then
138+ cp -r /home/circleci/src/dist /tmp/to-release/
139+ cp /home/circleci/src/VERSION /tmp/to-release/VERSION
140+ cp /home/circleci/src/CHANGES.md /tmp/to-release/CHANGES.md
141+ fi
142+ # Save artifacts. This is silly but wildcards aren't supported.
143+ - store_artifacts :
144+ path : /home/circleci/src/dist/
145+ - persist_to_workspace :
146+ root : /tmp/to-release/
147+ paths :
148+ - ./*
149+ - ./dist/*
124150
125151version : 2
126152jobs :
@@ -134,9 +160,81 @@ jobs:
134160 environment :
135161 PYTHON : " python3.7"
136162
163+ pypi-release :
164+ docker :
165+ - image : cimg/python:3.11.0
166+ steps :
167+ - attach_workspace :
168+ at : /tmp/to-release
169+ - run :
170+ name : Upload to TestPyPI
171+ command : | # install twine and publish to Test PyPI
172+ cd /tmp/to-release
173+ sudo add-apt-repository universe -y
174+ sudo apt-get update
175+ sudo apt install -y python3-pip
176+ sudo pip install pipenv
177+ pipenv install twine
178+ pipenv run twine upload --skip-existing --verbose dist/*
179+
180+
181+ publish-github-release :
182+ docker :
183+ - image : cibuilds/github:0.13
184+ steps :
185+ - attach_workspace :
186+ at : /tmp/to-release
187+ - run :
188+ name : Output useful stuff
189+ command : |
190+ cd /tmp/to-release/
191+ VERSION_FILE="/tmp/to-release/VERSION"
192+ if [ ! -f "$VERSION_FILE" ]; then
193+ echo "Error: Version file not found at $VERSION_FILE"
194+ exit 1
195+ fi
196+ VERSION=$(cat "$VERSION_FILE" | tr -d '[:space:]')
197+ if [ -z "$VERSION" ]; then
198+ echo "Error: Version file is empty"
199+ exit 1
200+ fi
201+ # Find the lines of the changelog between releases, escape double quotes, delete empty lines
202+ awk '/### '"$VERSION"'/,/^$/{print}' CHANGES.md | sed '1d;$d' > latest_changes.md
203+ - run :
204+ name : " Publish release on GitHub"
205+ command : |
206+ VERSION=$(cat /tmp/to-release/VERSION)
207+ CHANGES=$(cat /tmp/to-release/latest_changes.md)
208+ ghr -t ${GITHUB_TOKEN} \
209+ -u ${CIRCLE_PROJECT_USERNAME} \
210+ -r ${CIRCLE_PROJECT_REPONAME} \
211+ -c ${CIRCLE_SHA1} \
212+ -n ${VERSION} \
213+ -b "${CHANGES}" \
214+ -soft \
215+ ${VERSION} /tmp/to-release/dist
216+
217+
137218workflows :
138219 version : 2
139220 pytest-plugins :
140221 jobs :
141222 - py36
142223 - py37
224+ - pypi-release :
225+ requires :
226+ - py36
227+ - py37
228+ filters :
229+ branches :
230+ only :
231+ - master
232+ - publish-github-release :
233+ requires :
234+ - py36
235+ - py37
236+ filters :
237+ branches :
238+ only :
239+ - master
240+
0 commit comments