-
-
Notifications
You must be signed in to change notification settings - Fork 35
164 lines (150 loc) · 5.84 KB
/
publish_aiobotocore_stubs.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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
name: Publish types-aiobotocore
concurrency: update_types_aiobotocore
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
inputs:
aiobotocore_version:
description: Target aiobotocore version
required: false
type: string
stubs_version:
description: Specify version explicitly instead of finding it automatically
required: false
default: ""
type: string
force:
description: Continue if version is already published
required: false
default: false
type: boolean
skip_published:
description: Skip already published packages
required: false
default: true
type: boolean
no_smart_version:
description: Use exact version provided in stubs_version
required: false
default: false
type: boolean
jobs:
versions:
runs-on: ubuntu-latest
outputs:
aiobotocore: ${{ steps.aiobotocore.outputs.result }}
aiobotocore-url: ${{ steps.aiobotocore-url.outputs.result }}
version: ${{ steps.version.outputs.result }}
extra-flags: ${{ steps.extra-flags.outputs.result }}
steps:
- uses: actions/checkout@v4
- name: Find aiobotocore version
id: aiobotocore
uses: actions/github-script@v7
with:
result-encoding: string
script: |
const { getAioBotocoreVersion, setupGlobals } = require('./.github/workflows/helpers.js')
setupGlobals({ core, context, fetch })
const inputVersion = context.payload.inputs && context.payload.inputs.aiobotocore_version
const version = inputVersion ? inputVersion : await getAioBotocoreVersion()
core.notice(`aiobotocore version ${version}`)
return version
- name: Find build version
id: version
uses: actions/github-script@v7
with:
result-encoding: string
script: |
const { getTypesAioBotocoreVersions, getNextPostVersion, setupGlobals } = require('./.github/workflows/helpers.js')
setupGlobals({ core, context, fetch })
if (context.payload.inputs && context.payload.inputs.stubs_version) {
const version = context.payload.inputs.stubs_version
core.notice(`stubs version ${version}`)
return version
}
const force = context.payload.inputs ? context.payload.inputs.force !== 'false' : false
const aiobotocoreVersion = "${{ steps.aiobotocore.outputs.result }}"
const versions = await getTypesAioBotocoreVersions(aiobotocoreVersion)
core.info(`Built versions ${versions}`)
if (!versions.length) {
core.notice(`No builds found, building initial ${aiobotocoreVersion}`)
return aiobotocoreVersion
}
if (!force) {
core.notice(`Builds ${versions} found, skipping`)
return ''
}
const lastVersion = versions.pop()
core.notice(`Last version ${lastVersion}`)
const version = getNextPostVersion(lastVersion)
core.notice(`Version ${version}`)
return version
- name: Extra flags
id: extra-flags
if: steps.version.outputs.result
uses: actions/github-script@v7
with:
result-encoding: string
script: |
const extraFlags = []
const skipPublished = context.payload.inputs ? context.payload.inputs.skip_published !== 'false' : true
const noSmartVersion = context.payload.inputs ? context.payload.inputs.no_smart_version !== 'false' : true
if (skipPublished) extraFlags.push('--skip-published')
if (noSmartVersion) extraFlags.push('--no-smart-version')
core.notice(`Extra flags = ${extraFlags}`)
return extraFlags.join(' ')
- name: Aiobotocore download URL
id: aiobotocore-url
if: steps.version.outputs.result
uses: actions/github-script@v7
with:
result-encoding: string
script: |
const { getDownloadURL, setupGlobals } = require('./.github/workflows/helpers.js')
setupGlobals({ core, context, fetch })
const url = await getDownloadURL('aiobotocore', "${{ steps.aiobotocore.outputs.result }}")
core.notice(`aiobotocore download URL ${url}`)
return url
publish-types-aiobotocore:
name: Publish types-aiobotocore
runs-on: ubuntu-latest
needs: versions
if: needs.versions.outputs.version
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: pyproject.toml
- name: Install builder
run: |
rm -rf mypy_boto3_builder
python -m pip install mypy_boto3_builder
- name: Install aiobotocore
run: |
mkdir installtemp
cd installtemp
wget ${{ needs.versions.outputs.aiobotocore-url }}
pip uninstall -y s3transfer
pip install aiobotocore*.whl s3transfer
cd ..
rm -rf installtemp
- name: Build all packages
env:
VERSION: ${{ needs.versions.outputs.version }}
EXTRA_FLAGS: ${{ needs.versions.outputs.extra-flags }}
run: |
rm -rf mypy_boto3_output/*
echo "Building all packages"
python -m mypy_boto3_builder mypy_boto3_output -b ${VERSION} --product aiobotocore aiobotocore-services ${EXTRA_FLAGS} -s all -d
- name: Install dependencies for publishing
run: |
python -m pip install setuptools wheel twine
- name: Publish to PyPI
env:
PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }}
PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
python ./scripts/release.py