1
- name : Python Wheels
1
+ name : Release
2
2
3
3
on :
4
- push :
5
- branches : ["main"]
6
- tags :
7
- - " **"
8
- pull_request :
9
4
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 : python-bsonjs
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 || '' }}
10
23
11
24
concurrency :
12
25
group : wheels-${{ github.ref }}
@@ -17,83 +30,90 @@ defaults:
17
30
shell : bash -eux {0}
18
31
19
32
jobs :
20
-
21
- build_dist :
22
- name : Build Distribution Files
23
- runs-on : ubuntu-latest
24
- steps :
25
- - uses : actions/checkout@v4
26
- with :
27
- fetch-depth : 0
28
- persist-credentials : false
29
-
30
- - uses : actions/setup-python@v5
31
- with :
32
- # Build sdist on lowest supported Python
33
- python-version : ' 3.10'
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
45
- with :
46
- name : dist-${{ github.run_id }}
47
- path : ./dist/*.*
48
-
49
- test_dist :
50
- needs : [build_dist]
51
- name : Test Distribution Files
33
+ pre-publish :
34
+ environment : release
52
35
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 }}
53
42
steps :
54
- - uses : actions/ checkout@v4
43
+ - uses : mongodb-labs/drivers-github-tools/secure- checkout@v2
55
44
with :
56
- fetch-depth : 0
57
- persist-credentials : false
58
-
59
- - 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
60
48
with :
61
- # Build sdist on lowest supported Python
62
- python-version : ' 3.10'
63
-
64
- - name : Download the dists
65
- uses : actions/download-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
66
55
with :
67
- name : dist-${{ github.run_id }}
68
- path : dist/
56
+ dry_run : ${{ env.DRY_RUN }}
69
57
70
- - name : Test the sdist
71
- run : |
72
- cd dist
73
- pip install *.tar.gz
74
- python -c "import pymongo_voyageai"
75
- pip uninstall -y pymongo_voyageai
58
+ build-dist :
59
+ needs : [pre-publish]
60
+ uses : ./.github/workflows/dist.yml
61
+ with :
62
+ ref : ${{ needs.pre-publish.outputs.version }}
76
63
77
- - name : Test the wheel
78
- run : |
79
- cd dist
80
- pip install *.whl
81
- python -c "import pymongo_voyageai"
82
- pip uninstall -y pymongo_voyageai
64
+ static-scan :
65
+ needs : [pre-publish]
66
+ uses : ./.github/workflows/codeql.yml
67
+ with :
68
+ ref : ${{ needs.pre-publish.outputs.version }}
83
69
84
70
publish :
85
71
# 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/')
72
+ needs : [build-dist, static-scan ]
73
+ if : (github.repository_owner == 'mongodb-labs' && github.event_name != 'pull_request') || github.event_name == 'workflow_dispatch'
88
74
runs-on : ubuntu-latest
89
75
environment : release
90
76
permissions :
91
77
id-token : write
92
78
steps :
93
- - name : Download the dists
79
+ - name : Download all the dists
94
80
uses : actions/download-artifact@v4
95
81
with :
96
- name : dist-${{ github.run_id }}
82
+ name : all- dist-${{ github.run_id }}
97
83
path : dist/
84
+ - name : Publish package distributions to TestPyPI
85
+ uses : pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # release/v1
86
+ with :
87
+ repository-url : https://test.pypi.org/legacy/
88
+ skip-existing : true
89
+ attestations : ${{ env.DRY_RUN }}
98
90
- name : Publish distribution 📦 to PyPI
99
- uses : pypa/gh-action-pypi-publish@release/v1
91
+ if : startsWith(env.DRY_RUN, 'false')
92
+ uses : pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # release/v1
93
+
94
+ post-publish :
95
+ needs : [publish]
96
+ runs-on : ubuntu-latest
97
+ environment : release
98
+ permissions :
99
+ id-token : write
100
+ contents : write
101
+ attestations : write
102
+ security-events : write
103
+ steps :
104
+ - uses : mongodb-labs/drivers-github-tools/secure-checkout@v2
105
+ with :
106
+ app_id : ${{ vars.APP_ID }}
107
+ private_key : ${{ secrets.APP_PRIVATE_KEY }}
108
+ - uses : mongodb-labs/drivers-github-tools/setup@v2
109
+ with :
110
+ aws_role_arn : ${{ secrets.AWS_ROLE_ARN }}
111
+ aws_region_name : ${{ vars.AWS_REGION_NAME }}
112
+ aws_secret_id : ${{ secrets.AWS_SECRET_ID }}
113
+ artifactory_username : ${{ vars.ARTIFACTORY_USERNAME }}
114
+ - uses : mongodb-labs/drivers-github-tools/python-labs/post-publish@v2
115
+ with :
116
+ following_version : ${{ env.FOLLOWING_VERSION }}
117
+ product_name : ${{ env.PRODUCT_NAME }}
118
+ token : ${{ github.token }}
119
+ dry_run : ${{ env.DRY_RUN }}
0 commit comments