config.yml 15.6 KB
Newer Older
1
2
version: 2.1

3
# How to test the Linux jobs:
4
#   - Install CircleCI local CLI: https://circleci.com/docs/2.0/local-cli/
5
6
#   - circleci config process .circleci/config.yml > gen.yml && circleci local execute -c gen.yml --job binary_linux_wheel_py3.8
#     - Replace binary_linux_wheel_py3.8 with the name of the job you want to test.
Edward Z. Yang's avatar
Edward Z. Yang committed
7
#       Job names are 'name:' key.
8

peterjc123's avatar
peterjc123 committed
9
10
11
orbs:
  win: circleci/windows@2.0.0

12
13
binary_common: &binary_common
  parameters:
Edward Z. Yang's avatar
Edward Z. Yang committed
14
    # Edit these defaults to do a release
15
16
17
18
19
20
21
22
23
24
    build_version:
      description: "version number of release binary; by default, build a nightly"
      type: string
      default: ""
    pytorch_version:
      description: "PyTorch version to build against; by default, use a nightly"
      type: string
      default: ""
    # Don't edit these
    python_version:
25
      description: "Python version to build against (e.g., 3.8)"
26
27
28
29
30
      type: string
  environment:
    PYTHON_VERSION: << parameters.python_version >>
    BUILD_VERSION: << parameters.build_version >>
    PYTORCH_VERSION: << parameters.pytorch_version >>
Edward Z. Yang's avatar
Edward Z. Yang committed
31
    CU_VERSION: cpu
32

Mingbo Wan's avatar
Mingbo Wan committed
33
34
35
36
37
38
39
40
smoke_test_common: &smoke_test_common
  <<: *binary_common
  docker:
    - image: 308535385114.dkr.ecr.us-east-1.amazonaws.com/torchaudio/smoke_test:d26af7d0-8458-face-book-84239b5c75c0
      aws_auth:
        aws_access_key_id: ${ECR_AWS_ACCESS_KEY}
        aws_secret_access_key: ${ECR_AWS_SECRET_ACCESS_KEY}

41
jobs:
42
43
  circleci_consistency:
    docker:
44
      - image: circleci/python:3.8
45
46
47
48
    steps:
      - checkout
      - run:
          command: |
49
            pip install --user --progress-bar off jinja2 pyyaml
50
51
52
            python .circleci/regenerate.py
            git diff --exit-code || (echo ".circleci/config.yml not in sync with config.yml.in! Run .circleci/regenerate.py to update config"; exit 1)

53
  binary_linux_wheel:
54
    <<: *binary_common
55
    docker:
56
      - image: "pytorch/manylinux-cuda100"
57
58
59
    resource_class: 2xlarge+
    steps:
      - checkout
60
      - run: packaging/build_wheel.sh
61
      - store_artifacts:
62
          path: dist
Edward Z. Yang's avatar
Edward Z. Yang committed
63
64
65
66
      - persist_to_workspace:
          root: dist
          paths:
            - "*"
67
68

  binary_linux_conda:
69
    <<: *binary_common
70
    docker:
71
      - image: "pytorch/conda-cuda"
72
73
74
    resource_class: 2xlarge+
    steps:
      - checkout
75
      - run: packaging/build_conda.sh
76
77
      - store_artifacts:
          path: /opt/conda/conda-bld/linux-64
Edward Z. Yang's avatar
Edward Z. Yang committed
78
79
80
81
      - persist_to_workspace:
          root: /opt/conda/conda-bld/linux-64
          paths:
            - "*"
82

peterjc123's avatar
peterjc123 committed
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
  binary_win_conda:
    <<: *binary_common
    executor:
      name: win/default
      shell: bash.exe
    steps:
      - checkout
      - run:
          command: |
            choco install miniconda3
            (& "C:\tools\miniconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression
            conda activate base
            conda install -yq conda-build "conda-package-handling!=1.5.0"
            bash packaging/build_conda.sh
          shell: powershell.exe

99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
  binary_macos_wheel:
    <<: *binary_common
    macos:
      xcode: "9.0"
    steps:
      - checkout
      - run:
          # Cannot easily deduplicate this as source'ing activate
          # will set environment variables which we need to propagate
          # to build_wheel.sh
          command: |
            curl -o conda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
            sh conda.sh -b
            source $HOME/miniconda3/bin/activate
            packaging/build_wheel.sh
      - store_artifacts:
          path: dist
Edward Z. Yang's avatar
Edward Z. Yang committed
116
117
118
119
      - persist_to_workspace:
          root: dist
          paths:
            - "*"
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135

  binary_macos_conda:
    <<: *binary_common
    macos:
      xcode: "9.0"
    steps:
      - checkout
      - run:
          command: |
            curl -o conda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
            sh conda.sh -b
            source $HOME/miniconda3/bin/activate
            conda install -yq conda-build
            packaging/build_conda.sh
      - store_artifacts:
          path: /Users/distiller/miniconda3/conda-bld/osx-64
Edward Z. Yang's avatar
Edward Z. Yang committed
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
      - persist_to_workspace:
          root: /Users/distiller/miniconda3/conda-bld/osx-64
          paths:
            - "*"

  # Requires org-member context
  binary_conda_upload:
    docker:
      - image: continuumio/miniconda
    steps:
      - attach_workspace:
          at: ~/workspace
      - run:
          command: |
            # Prevent credential from leaking
            conda install -yq anaconda-client
            set -x
153
            anaconda -t "${CONDA_PYTORCHBOT_TOKEN}" upload ~/workspace/*.tar.bz2 -u pytorch-nightly --label main --no-progress --force
Edward Z. Yang's avatar
Edward Z. Yang committed
154
155
156
157

  # Requires org-member context
  binary_wheel_upload:
    docker:
158
      - image: circleci/python:3.8
Edward Z. Yang's avatar
Edward Z. Yang committed
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
    steps:
      - attach_workspace:
          at: ~/workspace
      - checkout
      - run:
          command: |
            pip install --user awscli
            export PATH="$HOME/.local/bin:$PATH"
            # Prevent credential from leaking
            set +x
            export AWS_ACCESS_KEY_ID="${PYTORCH_BINARY_AWS_ACCESS_KEY_ID}"
            export AWS_SECRET_ACCESS_KEY="${PYTORCH_BINARY_AWS_SECRET_ACCESS_KEY}"
            set -x
            for pkg in ~/workspace/*.whl; do
              aws s3 cp "$pkg" "s3://pytorch/whl/nightly/" --acl public-read
            done
175

Mingbo Wan's avatar
Mingbo Wan committed
176
177
178
  smoke_test_linux_conda:
    <<: *smoke_test_common
    steps:
Mingbo Wan's avatar
Mingbo Wan committed
179
180
      - attach_workspace:
          at: ~/workspace
Mingbo Wan's avatar
Mingbo Wan committed
181
      - run:
Mingbo Wan's avatar
Mingbo Wan committed
182
          name: install binaries
Mingbo Wan's avatar
Mingbo Wan committed
183
184
185
          command: |
            set -x
            source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
Mingbo Wan's avatar
Mingbo Wan committed
186
187
188
189
190
191
            conda install -v -y -c pytorch-nightly pytorch
            conda install -v -y $(ls ~/workspace/torchaudio*.tar.bz2)
      - run:
          name: smoke test
          command: |
            source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
Mingbo Wan's avatar
Mingbo Wan committed
192
193
194
195
196
            python -c "import torchaudio"

  smoke_test_linux_pip:
    <<: *smoke_test_common
    steps:
Mingbo Wan's avatar
Mingbo Wan committed
197
198
      - attach_workspace:
          at: ~/workspace
Mingbo Wan's avatar
Mingbo Wan committed
199
      - run:
Mingbo Wan's avatar
Mingbo Wan committed
200
          name: install binaries
Mingbo Wan's avatar
Mingbo Wan committed
201
202
203
          command: |
            set -x
            source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
Mingbo Wan's avatar
Mingbo Wan committed
204
205
206
207
208
            pip install $(ls ~/workspace/torchaudio*.whl) -f https://download.pytorch.org/whl/nightly/torch_nightly.html
      - run:
          name: smoke test
          command: |
            source /usr/local/etc/profile.d/conda.sh && conda activate python${PYTHON_VERSION}
Mingbo Wan's avatar
Mingbo Wan committed
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
            python -c "import torchaudio"

  docker_image_build:
    machine:
      image: ubuntu-1604:201903-01
    resource_class: large
    environment:
      image_name: torchaudio/smoke_test
    steps:
      - checkout
      - run:
          name: build_docker image
          no_output_timeout: "1h"
          command: |
            cd .circleci/docker && docker build . -t ${image_name}:${CIRCLE_WORKFLOW_ID}
      - run:
          name: upload docker image
          no_output_timeout: "1h"
          command: |
            set +x
            export AWS_ACCESS_KEY_ID=${ECR_AWS_ACCESS_KEY}
            export AWS_SECRET_ACCESS_KEY=${ECR_AWS_SECRET_ACCESS_KEY}
            eval $(aws ecr get-login --region us-east-1 --no-include-email)
            set -x
            docker tag ${image_name}:${CIRCLE_WORKFLOW_ID} 308535385114.dkr.ecr.us-east-1.amazonaws.com/${image_name}:${CIRCLE_WORKFLOW_ID}
            docker push 308535385114.dkr.ecr.us-east-1.amazonaws.com/${image_name}:${CIRCLE_WORKFLOW_ID}

236
237
238
workflows:
  build:
    jobs:
239
240
241
      - circleci_consistency
      - binary_linux_wheel:
          name: binary_linux_wheel_py3.6
242
          python_version: '3.6'
243
244
      - binary_linux_wheel:
          name: binary_linux_wheel_py3.7
245
          python_version: '3.7'
246
247
248
      - binary_linux_wheel:
          name: binary_linux_wheel_py3.8
          python_version: '3.8'
249
250
      - binary_macos_wheel:
          name: binary_macos_wheel_py3.6
251
          python_version: '3.6'
252
253
      - binary_macos_wheel:
          name: binary_macos_wheel_py3.7
254
          python_version: '3.7'
255
256
257
      - binary_macos_wheel:
          name: binary_macos_wheel_py3.8
          python_version: '3.8'
258
259
      - binary_linux_conda:
          name: binary_linux_conda_py3.6
260
          python_version: '3.6'
261
262
      - binary_linux_conda:
          name: binary_linux_conda_py3.7
263
          python_version: '3.7'
264
265
266
      - binary_linux_conda:
          name: binary_linux_conda_py3.8
          python_version: '3.8'
267
268
      - binary_macos_conda:
          name: binary_macos_conda_py3.6
269
          python_version: '3.6'
270
271
      - binary_macos_conda:
          name: binary_macos_conda_py3.7
272
          python_version: '3.7'
273
274
275
      - binary_macos_conda:
          name: binary_macos_conda_py3.8
          python_version: '3.8'
peterjc123's avatar
peterjc123 committed
276
277
278
      - binary_win_conda:
          name: torchaudio_win_py3.6
          python_version: "3.6"
Edward Z. Yang's avatar
Edward Z. Yang committed
279
280
281
282
283

  nightly:
    jobs:
      - circleci_consistency
      - binary_linux_wheel:
Edward Z. Yang's avatar
Edward Z. Yang committed
284
285
286
          filters:
            branches:
              only: nightly
287
288
          name: nightly_binary_linux_wheel_py3.6
          python_version: '3.6'
Edward Z. Yang's avatar
Edward Z. Yang committed
289
290
      - binary_wheel_upload:
          context: org-member
291
292
293
          filters:
            branches:
              only: nightly
294
          name: nightly_binary_linux_wheel_py3.6_upload
Edward Z. Yang's avatar
Edward Z. Yang committed
295
          requires:
296
          - nightly_binary_linux_wheel_py3.6
Mingbo Wan's avatar
Mingbo Wan committed
297
      - smoke_test_linux_pip:
Edward Z. Yang's avatar
Edward Z. Yang committed
298
299
300
          filters:
            branches:
              only: nightly
301
302
303
304
          name: nightly_binary_linux_wheel_py3.6_smoke_test_pip
          python_version: '3.6'
          requires:
          - nightly_binary_linux_wheel_py3.6_upload
305
      - binary_linux_wheel:
Edward Z. Yang's avatar
Edward Z. Yang committed
306
307
308
          filters:
            branches:
              only: nightly
309
310
          name: nightly_binary_linux_wheel_py3.7
          python_version: '3.7'
311
312
      - binary_wheel_upload:
          context: org-member
313
314
315
          filters:
            branches:
              only: nightly
316
          name: nightly_binary_linux_wheel_py3.7_upload
317
          requires:
318
          - nightly_binary_linux_wheel_py3.7
Mingbo Wan's avatar
Mingbo Wan committed
319
      - smoke_test_linux_pip:
Edward Z. Yang's avatar
Edward Z. Yang committed
320
321
322
          filters:
            branches:
              only: nightly
323
324
325
326
          name: nightly_binary_linux_wheel_py3.7_smoke_test_pip
          python_version: '3.7'
          requires:
          - nightly_binary_linux_wheel_py3.7_upload
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
      - binary_linux_wheel:
          filters:
            branches:
              only: nightly
          name: nightly_binary_linux_wheel_py3.8
          python_version: '3.8'
      - binary_wheel_upload:
          context: org-member
          filters:
            branches:
              only: nightly
          name: nightly_binary_linux_wheel_py3.8_upload
          requires:
          - nightly_binary_linux_wheel_py3.8
      - smoke_test_linux_pip:
          filters:
            branches:
              only: nightly
          name: nightly_binary_linux_wheel_py3.8_smoke_test_pip
          python_version: '3.8'
          requires:
          - nightly_binary_linux_wheel_py3.8_upload
Edward Z. Yang's avatar
Edward Z. Yang committed
349
      - binary_macos_wheel:
Edward Z. Yang's avatar
Edward Z. Yang committed
350
351
352
          filters:
            branches:
              only: nightly
353
354
          name: nightly_binary_macos_wheel_py3.6
          python_version: '3.6'
Edward Z. Yang's avatar
Edward Z. Yang committed
355
356
      - binary_wheel_upload:
          context: org-member
Edward Z. Yang's avatar
Edward Z. Yang committed
357
358
359
          filters:
            branches:
              only: nightly
360
361
362
          name: nightly_binary_macos_wheel_py3.6_upload
          requires:
          - nightly_binary_macos_wheel_py3.6
363
      - binary_macos_wheel:
Edward Z. Yang's avatar
Edward Z. Yang committed
364
365
366
          filters:
            branches:
              only: nightly
367
368
          name: nightly_binary_macos_wheel_py3.7
          python_version: '3.7'
369
370
      - binary_wheel_upload:
          context: org-member
Edward Z. Yang's avatar
Edward Z. Yang committed
371
372
373
          filters:
            branches:
              only: nightly
374
375
376
          name: nightly_binary_macos_wheel_py3.7_upload
          requires:
          - nightly_binary_macos_wheel_py3.7
377
378
379
380
381
382
383
384
385
386
387
388
389
390
      - binary_macos_wheel:
          filters:
            branches:
              only: nightly
          name: nightly_binary_macos_wheel_py3.8
          python_version: '3.8'
      - binary_wheel_upload:
          context: org-member
          filters:
            branches:
              only: nightly
          name: nightly_binary_macos_wheel_py3.8_upload
          requires:
          - nightly_binary_macos_wheel_py3.8
Edward Z. Yang's avatar
Edward Z. Yang committed
391
      - binary_linux_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
392
393
394
          filters:
            branches:
              only: nightly
395
396
          name: nightly_binary_linux_conda_py3.6
          python_version: '3.6'
Edward Z. Yang's avatar
Edward Z. Yang committed
397
398
      - binary_conda_upload:
          context: org-member
399
400
401
          filters:
            branches:
              only: nightly
402
          name: nightly_binary_linux_conda_py3.6_upload
Edward Z. Yang's avatar
Edward Z. Yang committed
403
          requires:
404
          - nightly_binary_linux_conda_py3.6
Mingbo Wan's avatar
Mingbo Wan committed
405
      - smoke_test_linux_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
406
407
408
          filters:
            branches:
              only: nightly
409
410
411
412
          name: nightly_binary_linux_conda_py3.6_smoke_test_conda
          python_version: '3.6'
          requires:
          - nightly_binary_linux_conda_py3.6_upload
413
      - binary_linux_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
414
415
416
          filters:
            branches:
              only: nightly
417
418
          name: nightly_binary_linux_conda_py3.7
          python_version: '3.7'
419
420
      - binary_conda_upload:
          context: org-member
421
422
423
          filters:
            branches:
              only: nightly
424
          name: nightly_binary_linux_conda_py3.7_upload
425
          requires:
426
          - nightly_binary_linux_conda_py3.7
Mingbo Wan's avatar
Mingbo Wan committed
427
      - smoke_test_linux_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
428
429
430
          filters:
            branches:
              only: nightly
431
432
433
434
          name: nightly_binary_linux_conda_py3.7_smoke_test_conda
          python_version: '3.7'
          requires:
          - nightly_binary_linux_conda_py3.7_upload
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
      - binary_linux_conda:
          filters:
            branches:
              only: nightly
          name: nightly_binary_linux_conda_py3.8
          python_version: '3.8'
      - binary_conda_upload:
          context: org-member
          filters:
            branches:
              only: nightly
          name: nightly_binary_linux_conda_py3.8_upload
          requires:
          - nightly_binary_linux_conda_py3.8
      - smoke_test_linux_conda:
          filters:
            branches:
              only: nightly
          name: nightly_binary_linux_conda_py3.8_smoke_test_conda
          python_version: '3.8'
          requires:
          - nightly_binary_linux_conda_py3.8_upload
Edward Z. Yang's avatar
Edward Z. Yang committed
457
      - binary_macos_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
458
459
460
          filters:
            branches:
              only: nightly
461
462
          name: nightly_binary_macos_conda_py3.6
          python_version: '3.6'
Edward Z. Yang's avatar
Edward Z. Yang committed
463
464
      - binary_conda_upload:
          context: org-member
Edward Z. Yang's avatar
Edward Z. Yang committed
465
466
467
          filters:
            branches:
              only: nightly
468
469
470
          name: nightly_binary_macos_conda_py3.6_upload
          requires:
          - nightly_binary_macos_conda_py3.6
471
      - binary_macos_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
472
473
474
          filters:
            branches:
              only: nightly
475
476
          name: nightly_binary_macos_conda_py3.7
          python_version: '3.7'
477
478
      - binary_conda_upload:
          context: org-member
Edward Z. Yang's avatar
Edward Z. Yang committed
479
480
          filters:
            branches:
Mingbo Wan's avatar
Mingbo Wan committed
481
              only: nightly
482
483
484
          name: nightly_binary_macos_conda_py3.7_upload
          requires:
          - nightly_binary_macos_conda_py3.7
485
486
487
488
489
490
491
492
493
494
495
496
497
498
      - binary_macos_conda:
          filters:
            branches:
              only: nightly
          name: nightly_binary_macos_conda_py3.8
          python_version: '3.8'
      - binary_conda_upload:
          context: org-member
          filters:
            branches:
              only: nightly
          name: nightly_binary_macos_conda_py3.8_upload
          requires:
          - nightly_binary_macos_conda_py3.8
Mingbo Wan's avatar
Mingbo Wan committed
499
500
501
502
503
504
505
506
507
508
  docker_build:
    triggers:
      - schedule:
          cron: "0 10 * * 0"
          filters:
            branches:
              only:
                - master
    jobs:
      - docker_image_build