1+ name : Build Torch-TensorRT wheel on Linux
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_URLS : ${{ matrix.tensorrt.urls }}
93+ TENSORRT_SHA256 : ${{ matrix.tensorrt.sha256 }}
94+ name : release_${{ matrix.build_name }}
95+ runs-on : ${{ matrix.validation_runner }}
96+ container :
97+ image : ${{ matrix.container_image }}
98+ options : ${{ matrix.gpu_arch_type == 'cuda' && '--gpus all' || ' ' }}
99+ # If a build is taking longer than 120 minutes on these runners we need
100+ # to have a conversation
101+ timeout-minutes : 120
102+
103+ steps :
104+ - name : Clean workspace
105+ shell : bash -l {0}
106+ run : |
107+ set -x
108+ echo "::group::Cleanup debug output"
109+ rm -rf "${GITHUB_WORKSPACE}"
110+ mkdir -p "${GITHUB_WORKSPACE}"
111+ if [[ "${{ inputs.architecture }}" = "aarch64" ]]; then
112+ rm -rf "${RUNNER_TEMP}/*"
113+ fi
114+ echo "::endgroup::"
115+ - uses : actions/checkout@v3
116+ with :
117+ # Support the use case where we need to checkout someone's fork
118+ repository : ${{ inputs.test-infra-repository }}
119+ ref : ${{ inputs.test-infra-ref }}
120+ path : test-infra
121+ - uses : actions/checkout@v3
122+ if : ${{ env.ARCH == 'aarch64' }}
123+ with :
124+ # Support the use case where we need to checkout someone's fork
125+ repository : " pytorch/builder"
126+ ref : " main"
127+ path : builder
128+ - name : Set linux aarch64 CI
129+ if : ${{ inputs.architecture == 'aarch64' }}
130+ shell : bash -l {0}
131+ env :
132+ DESIRED_PYTHON : ${{ matrix.python_version }}
133+ run : |
134+ set +e
135+ # TODO: This is temporary aarch64 setup script, this should be integrated into aarch64 docker.
136+ ${GITHUB_WORKSPACE}/builder/aarch64_linux/aarch64_ci_setup.sh
137+ echo "/opt/conda/bin" >> $GITHUB_PATH
138+ set -e
139+ - uses : ./test-infra/.github/actions/set-channel
140+ - name : Set PYTORCH_VERSION
141+ if : ${{ env.CHANNEL == 'test' }}
142+ run : |
143+ # When building RC, set the version to be the current candidate version,
144+ # otherwise, leave it alone so nightly will pick up the latest
145+ echo "PYTORCH_VERSION=${{ matrix.stable_version }}" >> "${GITHUB_ENV}"
146+ - uses : ./test-infra/.github/actions/setup-binary-builds
147+ env :
148+ PLATFORM : ${{ inputs.architecture == 'aarch64' && 'linux-aarch64' || ''}}
149+ with :
150+ repository : ${{ inputs.repository }}
151+ ref : ${{ inputs.ref }}
152+ submodules : ${{ inputs.submodules }}
153+ setup-miniconda : ${{ inputs.setup-miniconda }}
154+ python-version : ${{ env.PYTHON_VERSION }}
155+ cuda-version : ${{ env.CU_VERSION }}
156+ arch : ${{ env.ARCH }}
157+ - name : Combine Env Var and Build Env Files
158+ if : ${{ inputs.env-var-script != '' }}
159+ working-directory : ${{ inputs.repository }}
160+ shell : bash -l {0}
161+ run : |
162+ cat "${{ inputs.env-var-script }}" >> "${BUILD_ENV_FILE}"
163+ - name : Install torch dependency
164+ shell : bash -l {0}
165+ run : |
166+ set -x
167+ # shellcheck disable=SC1090
168+ source "${BUILD_ENV_FILE}"
169+ # shellcheck disable=SC2086
170+ ${CONDA_RUN} ${PIP_INSTALL_TORCH}
171+ - name : Run Pre-Script with Caching
172+ if : ${{ inputs.pre-script != '' }}
173+ uses : ./test-infra/.github/actions/run-script-with-cache
174+ with :
175+ cache-path : ${{ inputs.cache-path }}
176+ cache-key : ${{ inputs.cache-key }}
177+ repository : ${{ inputs.repository }}
178+ script : ${{ inputs.pre-script }}
179+ - name : Build clean
180+ working-directory : ${{ inputs.repository }}
181+ shell : bash -l {0}
182+ run : |
183+ set -x
184+ source "${BUILD_ENV_FILE}"
185+ ${CONDA_RUN} python setup.py clean
186+ - name : Build the wheel (bdist_wheel)
187+ working-directory : ${{ inputs.repository }}
188+ shell : bash -l {0}
189+ run : |
190+ set -x
191+ source "${BUILD_ENV_FILE}"
192+ ${CONDA_RUN} python setup.py bdist_wheel
193+
194+ - name : Run Post-Script
195+ if : ${{ inputs.post-script != '' }}
196+ uses : ./test-infra/.github/actions/run-script-with-cache
197+ with :
198+ repository : ${{ inputs.repository }}
199+ script : ${{ inputs.post-script }}
200+ - name : Smoke Test
201+ shell : bash -l {0}
202+ env :
203+ PACKAGE_NAME : ${{ inputs.package-name }}
204+ SMOKE_TEST_SCRIPT : ${{ inputs.smoke-test-script }}
205+ run : |
206+ set -x
207+ source "${BUILD_ENV_FILE}"
208+ # TODO: add smoke test for the auditwheel tarball built
209+
210+ # NB: Only upload to GitHub after passing smoke tests
211+ - name : Upload wheel to GitHub
212+ continue-on-error : true
213+ uses : actions/upload-artifact@v3
214+ with :
215+ name : ${{ env.ARTIFACT_NAME }}
216+ path : ${{ inputs.repository }}/dist
217+
218+ concurrency :
219+ group : ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }}-${{ inputs.repository }}-${{ github.event_name == 'workflow_dispatch' }}-${{ inputs.job-name }}-${{ inputs.cxx11-tarball-release }}
220+ cancel-in-progress : true
0 commit comments