1
+ name : Build Torch-TensorRT wheel on Linux with Future TensorRT Versions
2
+
3
+ on :
4
+ workflow_call :
5
+ inputs :
6
+ repository :
7
+ description : ' Repository to checkout, defaults to ""'
8
+ default : " "
9
+ type : string
10
+ ref :
11
+ description : ' Reference to checkout, defaults to "nightly"'
12
+ default : " nightly"
13
+ type : string
14
+ test-infra-repository :
15
+ description : " Test infra repository to use"
16
+ default : " pytorch/test-infra"
17
+ type : string
18
+ test-infra-ref :
19
+ description : " Test infra reference to use"
20
+ default : " "
21
+ type : string
22
+ build-matrix :
23
+ description : " Build matrix to utilize"
24
+ default : " "
25
+ type : string
26
+ pre-script :
27
+ description : " Pre script to run prior to build"
28
+ default : " "
29
+ type : string
30
+ post-script :
31
+ description : " Post script to run prior to build"
32
+ default : " "
33
+ type : string
34
+ smoke-test-script :
35
+ description : " Script for Smoke Test for a specific domain"
36
+ default : " "
37
+ type : string
38
+ env-var-script :
39
+ description : " Script that sets Domain-Specific Environment Variables"
40
+ default : " "
41
+ type : string
42
+ package-name :
43
+ description : " Name of the actual python package that is imported"
44
+ default : " "
45
+ type : string
46
+ trigger-event :
47
+ description : " Trigger Event in caller that determines whether or not to upload"
48
+ default : " "
49
+ type : string
50
+ cache-path :
51
+ description : " The path(s) on the runner to cache or restore. The path is relative to repository."
52
+ default : " "
53
+ type : string
54
+ cache-key :
55
+ description : " The key created when saving a cache and the key used to search for a cache."
56
+ default : " "
57
+ type : string
58
+ architecture :
59
+ description : Architecture to build for x86_64 for default Linux, or aarch64 for Linux aarch64 builds
60
+ required : false
61
+ type : string
62
+ default : x86_64
63
+ submodules :
64
+ description : Works as stated in actions/checkout, but the default value is recursive
65
+ required : false
66
+ type : string
67
+ default : recursive
68
+ setup-miniconda :
69
+ description : Set to true if setup-miniconda is needed
70
+ required : false
71
+ type : boolean
72
+ default : true
73
+
74
+ permissions :
75
+ id-token : write
76
+ contents : read
77
+
78
+ jobs :
79
+ build :
80
+ strategy :
81
+ fail-fast : false
82
+ matrix : ${{ fromJSON(inputs.build-matrix) }}
83
+ env :
84
+ PYTHON_VERSION : ${{ matrix.python_version }}
85
+ PACKAGE_TYPE : wheel
86
+ REPOSITORY : ${{ inputs.repository }}
87
+ REF : ${{ inputs.ref }}
88
+ CU_VERSION : ${{ matrix.desired_cuda }}
89
+ UPLOAD_TO_BASE_BUCKET : ${{ matrix.upload_to_base_bucket }}
90
+ ARCH : ${{ inputs.architecture }}
91
+ TENSORRT_STRIP_PREFIX : ${{ matrix.tensorrt.strip_prefix }}
92
+ TENSORRT_VERSION : ${{ matrix.tensorrt.version }}
93
+ TENSORRT_URLS : ${{ matrix.tensorrt.urls }}
94
+ TENSORRT_SHA256 : ${{ matrix.tensorrt.sha256 }}
95
+ UPLOAD_ARTIFACT_NAME : pytorch_tensorrt_${{ matrix.tensorrt.version }}_${{ matrix.python_version }}_${{ matrix.desired_cuda }}_${{ inputs.architecture }}
96
+ name : build_tensorrt${{ matrix.tensorrt.version }}_py${{matrix.python_version}}_${{matrix.desired_cuda}}
97
+ runs-on : ${{ matrix.validation_runner }}
98
+ container :
99
+ image : ${{ matrix.container_image }}
100
+ options : ${{ matrix.gpu_arch_type == 'cuda' && '--gpus all' || ' ' }}
101
+ # If a build is taking longer than 120 minutes on these runners we need
102
+ # to have a conversation
103
+ timeout-minutes : 120
104
+
105
+ steps :
106
+ - name : Clean workspace
107
+ shell : bash -l {0}
108
+ run : |
109
+ set -x
110
+ echo "::group::Cleanup debug output"
111
+ rm -rf "${GITHUB_WORKSPACE}"
112
+ mkdir -p "${GITHUB_WORKSPACE}"
113
+ if [[ "${{ inputs.architecture }}" = "aarch64" ]]; then
114
+ rm -rf "${RUNNER_TEMP}/*"
115
+ fi
116
+ echo "::endgroup::"
117
+ - uses : actions/checkout@v3
118
+ with :
119
+ # Support the use case where we need to checkout someone's fork
120
+ repository : ${{ inputs.test-infra-repository }}
121
+ ref : ${{ inputs.test-infra-ref }}
122
+ path : test-infra
123
+ - uses : actions/checkout@v3
124
+ if : ${{ env.ARCH == 'aarch64' }}
125
+ with :
126
+ # Support the use case where we need to checkout someone's fork
127
+ repository : " pytorch/builder"
128
+ ref : " main"
129
+ path : builder
130
+ - name : Set linux aarch64 CI
131
+ if : ${{ inputs.architecture == 'aarch64' }}
132
+ shell : bash -l {0}
133
+ env :
134
+ DESIRED_PYTHON : ${{ matrix.python_version }}
135
+ run : |
136
+ set +e
137
+ # TODO: This is temporary aarch64 setup script, this should be integrated into aarch64 docker.
138
+ ${GITHUB_WORKSPACE}/builder/aarch64_linux/aarch64_ci_setup.sh
139
+ echo "/opt/conda/bin" >> $GITHUB_PATH
140
+ set -e
141
+ - uses : ./test-infra/.github/actions/set-channel
142
+ - name : Set PYTORCH_VERSION
143
+ if : ${{ env.CHANNEL == 'test' }}
144
+ run : |
145
+ # When building RC, set the version to be the current candidate version,
146
+ # otherwise, leave it alone so nightly will pick up the latest
147
+ echo "PYTORCH_VERSION=${{ matrix.stable_version }}" >> "${GITHUB_ENV}"
148
+ - uses : ./test-infra/.github/actions/setup-binary-builds
149
+ env :
150
+ PLATFORM : ${{ inputs.architecture == 'aarch64' && 'linux-aarch64' || ''}}
151
+ with :
152
+ repository : ${{ inputs.repository }}
153
+ ref : ${{ inputs.ref }}
154
+ submodules : ${{ inputs.submodules }}
155
+ setup-miniconda : ${{ inputs.setup-miniconda }}
156
+ python-version : ${{ env.PYTHON_VERSION }}
157
+ cuda-version : ${{ env.CU_VERSION }}
158
+ arch : ${{ env.ARCH }}
159
+ - name : Combine Env Var and Build Env Files
160
+ if : ${{ inputs.env-var-script != '' }}
161
+ working-directory : ${{ inputs.repository }}
162
+ shell : bash -l {0}
163
+ run : |
164
+ cat "${{ inputs.env-var-script }}" >> "${BUILD_ENV_FILE}"
165
+ - name : Install torch dependency
166
+ shell : bash -l {0}
167
+ run : |
168
+ set -x
169
+ # shellcheck disable=SC1090
170
+ source "${BUILD_ENV_FILE}"
171
+ # shellcheck disable=SC2086
172
+ ${CONDA_RUN} ${PIP_INSTALL_TORCH}
173
+ - name : Run Pre-Script with Caching
174
+ if : ${{ inputs.pre-script != '' }}
175
+ uses : ./test-infra/.github/actions/run-script-with-cache
176
+ with :
177
+ cache-path : ${{ inputs.cache-path }}
178
+ cache-key : ${{ inputs.cache-key }}
179
+ repository : ${{ inputs.repository }}
180
+ script : ${{ inputs.pre-script }}
181
+ - name : Build clean
182
+ working-directory : ${{ inputs.repository }}
183
+ shell : bash -l {0}
184
+ run : |
185
+ set -x
186
+ source "${BUILD_ENV_FILE}"
187
+ ${CONDA_RUN} python setup.py clean
188
+ - name : Build the wheel (bdist_wheel)
189
+ working-directory : ${{ inputs.repository }}
190
+ shell : bash -l {0}
191
+ run : |
192
+ set -x
193
+ source "${BUILD_ENV_FILE}"
194
+ ${CONDA_RUN} python setup.py bdist_wheel
195
+
196
+ - name : Run Post-Script
197
+ if : ${{ inputs.post-script != '' }}
198
+ uses : ./test-infra/.github/actions/run-script-with-cache
199
+ with :
200
+ repository : ${{ inputs.repository }}
201
+ script : ${{ inputs.post-script }}
202
+ - name : Smoke Test
203
+ shell : bash -l {0}
204
+ env :
205
+ PACKAGE_NAME : ${{ inputs.package-name }}
206
+ SMOKE_TEST_SCRIPT : ${{ inputs.smoke-test-script }}
207
+ run : |
208
+ set -x
209
+ source "${BUILD_ENV_FILE}"
210
+ # TODO: add smoke test for the auditwheel tarball built
211
+
212
+ # NB: Only upload to GitHub after passing smoke tests
213
+ - name : Upload wheel to GitHub
214
+ continue-on-error : true
215
+ uses : actions/upload-artifact@v3
216
+ with :
217
+ name : ${{ env.UPLOAD_ARTIFACT_NAME }}
218
+ path : ${{ inputs.repository }}/dist
219
+
220
+ concurrency :
221
+ group : ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }}-${{ inputs.repository }}-${{ github.event_name == 'workflow_dispatch' }}-${{ inputs.job-name }}
222
+ cancel-in-progress : true
0 commit comments