1- name : Python Wheels
1+ name : Release
22
33on :
4- push :
5- branches : ["main"]
6- tags :
7- - " **"
8- pull_request :
94 workflow_dispatch :
5+ inputs :
6+ following_version :
7+ description : " The post (dev) version to set"
8+ dry_run :
9+ description : " Dry Run?"
10+ default : false
11+ type : boolean
12+ schedule :
13+ - cron : ' 30 5 * * *'
14+
15+ env :
16+ # Changes per repo
17+ PRODUCT_NAME : Flask-PyMongo
18+ # Constant
19+ # inputs will be empty on a scheduled run. so, we only set dry_run
20+ # to 'false' when the input is set to 'false'.
21+ DRY_RUN : ${{ ! contains(inputs.dry_run, 'false') }}
22+ FOLLOWING_VERSION : ${{ inputs.following_version || '' }}
1023
1124concurrency :
1225 group : wheels-${{ github.ref }}
@@ -17,83 +30,84 @@ defaults:
1730 shell : bash -eux {0}
1831
1932jobs :
20-
21- build_dist :
22- name : Build Distribution Files
33+ pre-publish :
34+ environment : release
2335 runs-on : ubuntu-latest
36+ if : github.repository_owner == 'mongodb-labs' || github.event_name == 'workflow_dispatch'
37+ permissions :
38+ id-token : write
39+ contents : write
40+ outputs :
41+ version : ${{ steps.pre-publish.outputs.version }}
2442 steps :
25- - uses : actions/ checkout@v4
43+ - uses : mongodb-labs/drivers-github-tools/secure- checkout@v2
2644 with :
27- fetch-depth : 0
28- persist-credentials : false
29-
30- - uses : actions/setup-python@v5
45+ app_id : ${{ vars.APP_ID }}
46+ private_key : ${{ secrets.APP_PRIVATE_KEY }}
47+ - uses : mongodb-labs/drivers-github-tools/setup@v2
3148 with :
32- # Build sdist on lowest supported Python
33- python-version : ' 3.9'
34-
35- - name : Install build
36- run : |
37- python -m pip install build
38-
39- - name : build the dist files
40- run : |
41- python -m build .
42-
43- - name : Upload the dist files
44- uses : actions/upload-artifact@v4
49+ aws_role_arn : ${{ secrets.AWS_ROLE_ARN }}
50+ aws_region_name : ${{ vars.AWS_REGION_NAME }}
51+ aws_secret_id : ${{ secrets.AWS_SECRET_ID }}
52+ artifactory_username : ${{ vars.ARTIFACTORY_USERNAME }}
53+ - uses : mongodb-labs/drivers-github-tools/python-labs/pre-publish@v2
54+ id : pre-publish
4555 with :
46- name : dist-${{ github.run_id }}
47- path : ./dist/*.*
56+ dry_run : ${{ env.DRY_RUN }}
4857
49- test_dist :
50- needs : [build_dist]
51- name : Test Distribution Files
52- runs-on : ubuntu-latest
53- steps :
54- - uses : actions/checkout@v4
55- with :
56- fetch-depth : 0
57- persist-credentials : false
58-
59- - uses : actions/setup-python@v5
60- with :
61- # Build sdist on lowest supported Python
62- python-version : ' 3.9'
63-
64- - name : Download the dists
65- uses : actions/download-artifact@v4
66- with :
67- name : dist-${{ github.run_id }}
68- path : dist/
69-
70- - name : Test the sdist
71- run : |
72- cd dist
73- pip install *.tar.gz
74- python -c "import flask_pymongo"
75- pip uninstall -y flask_pymongo
76-
77- - name : Test the wheel
78- run : |
79- cd dist
80- pip install *.whl
81- python -c "import flask_pymongo"
82- pip uninstall -y flask_pymongo
58+ build-dist :
59+ needs : [pre-publish]
60+ uses : ./.github/workflows/dist-python.yml
61+ with :
62+ ref : ${{ needs.pre-publish.outputs.version }}
8363
8464 publish :
8565 # https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/#publishing-the-distribution-to-pypi
86- needs : [test_dist ]
87- if : startsWith (github.ref, 'refs/tags/')
66+ needs : [build-dist ]
67+ if : (github.repository_owner == 'mongodb-labs' && github.event_name != 'pull_request') || github.event_name == 'workflow_dispatch'
8868 runs-on : ubuntu-latest
8969 environment : release
9070 permissions :
9171 id-token : write
9272 steps :
93- - name : Download the dists
73+ - name : Download all the dists
9474 uses : actions/download-artifact@v4
9575 with :
96- name : dist-${{ github.run_id }}
76+ name : all- dist-${{ github.run_id }}
9777 path : dist/
78+ - name : Publish package distributions to TestPyPI
79+ uses : pypa/gh-action-pypi-publish@release/v1
80+ with :
81+ repository-url : https://test.pypi.org/legacy/
82+ skip-existing : true
83+ attestations : ${{ !startsWith(github.ref, 'refs/tags/') }}
9884 - name : Publish distribution 📦 to PyPI
85+ if : startsWith(github.ref, 'refs/tags/')
9986 uses : pypa/gh-action-pypi-publish@release/v1
87+
88+ post-publish :
89+ needs : [publish]
90+ runs-on : ubuntu-latest
91+ environment : release
92+ permissions :
93+ id-token : write
94+ contents : write
95+ attestations : write
96+ security-events : write
97+ steps :
98+ - uses : mongodb-labs/drivers-github-tools/secure-checkout@v2
99+ with :
100+ app_id : ${{ vars.APP_ID }}
101+ private_key : ${{ secrets.APP_PRIVATE_KEY }}
102+ - uses : mongodb-labs/drivers-github-tools/setup@v2
103+ with :
104+ aws_role_arn : ${{ secrets.AWS_ROLE_ARN }}
105+ aws_region_name : ${{ vars.AWS_REGION_NAME }}
106+ aws_secret_id : ${{ secrets.AWS_SECRET_ID }}
107+ artifactory_username : ${{ vars.ARTIFACTORY_USERNAME }}
108+ - uses : mongodb-labs/drivers-github-tools/python-labs/post-publish@v2
109+ with :
110+ following_version : ${{ env.FOLLOWING_VERSION }}
111+ product_name : ${{ env.PRODUCT_NAME }}
112+ token : ${{ github.token }}
113+ dry_run : ${{ env.DRY_RUN }}
0 commit comments