config.yml 16.9 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
            python -c "import torchaudio"

211
  smoke_test_docker_image_build:
Mingbo Wan's avatar
Mingbo Wan committed
212
213
214
215
216
217
218
219
220
221
222
    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: |
223
            cd .circleci/smoke_test/docker && docker build . -t ${image_name}:${CIRCLE_WORKFLOW_ID}
Mingbo Wan's avatar
Mingbo Wan committed
224
225
226
227
228
229
230
231
232
233
234
235
      - 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}

moto's avatar
moto committed
236
237
238
  unittest_linux:
    <<: *binary_common
    docker:
239
      - image: "pytorch/torchaudio_unittest_base:manylinux"
moto's avatar
moto committed
240
241
242
243
244
245
    resource_class: 2xlarge+
    steps:
      - checkout
      - restore_cache:

          keys:
246
            - env-v1-linux-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/scripts/environment.yml" }}
moto's avatar
moto committed
247
248
249

      - run:
          name: Setup
250
          command: .circleci/unittest/scripts/setup_env.sh
moto's avatar
moto committed
251
252
      - save_cache:

253
          key: env-v1-linux-{{ arch }}-py<< parameters.python_version >>-{{ checksum ".circleci/unittest/scripts/environment.yml" }}
moto's avatar
moto committed
254
255
256
257
258

          paths:
            - conda
            - env
      - run:
259
260
          name: Install torchaudio
          command: .circleci/unittest/scripts/install.sh
moto's avatar
moto committed
261
      - run:
262
263
          name: Run tests
          command: .circleci/unittest/scripts/run_test.sh
moto's avatar
moto committed
264
265
      - run:
          name: Post process
266
          command: .circleci/unittest/scripts/post_process.sh
moto's avatar
moto committed
267
268
      - store_test_results:
          path: test-results
moto's avatar
moto committed
269

270
271
272
workflows:
  build:
    jobs:
273
274
275
      - circleci_consistency
      - binary_linux_wheel:
          name: binary_linux_wheel_py3.6
276
          python_version: '3.6'
277
278
      - binary_linux_wheel:
          name: binary_linux_wheel_py3.7
279
          python_version: '3.7'
280
281
282
      - binary_linux_wheel:
          name: binary_linux_wheel_py3.8
          python_version: '3.8'
283
284
      - binary_macos_wheel:
          name: binary_macos_wheel_py3.6
285
          python_version: '3.6'
286
287
      - binary_macos_wheel:
          name: binary_macos_wheel_py3.7
288
          python_version: '3.7'
289
290
291
      - binary_macos_wheel:
          name: binary_macos_wheel_py3.8
          python_version: '3.8'
292
293
      - binary_linux_conda:
          name: binary_linux_conda_py3.6
294
          python_version: '3.6'
295
296
      - binary_linux_conda:
          name: binary_linux_conda_py3.7
297
          python_version: '3.7'
298
299
300
      - binary_linux_conda:
          name: binary_linux_conda_py3.8
          python_version: '3.8'
301
302
      - binary_macos_conda:
          name: binary_macos_conda_py3.6
303
          python_version: '3.6'
304
305
      - binary_macos_conda:
          name: binary_macos_conda_py3.7
306
          python_version: '3.7'
307
308
309
      - binary_macos_conda:
          name: binary_macos_conda_py3.8
          python_version: '3.8'
peterjc123's avatar
peterjc123 committed
310
311
312
      - binary_win_conda:
          name: torchaudio_win_py3.6
          python_version: "3.6"
moto's avatar
moto committed
313
314
315
316
317
318
319
320
321
322
323
  unittest:
    jobs:
      - unittest_linux:
          name: unittest_linux_py3.6
          python_version: '3.6'
      - unittest_linux:
          name: unittest_linux_py3.7
          python_version: '3.7'
      - unittest_linux:
          name: unittest_linux_py3.8
          python_version: '3.8'
Edward Z. Yang's avatar
Edward Z. Yang committed
324
325
  nightly:
    jobs:
moto's avatar
moto committed
326
327
328
329
      - circleci_consistency:
          filters:
            branches:
              only: nightly
Edward Z. Yang's avatar
Edward Z. Yang committed
330
      - binary_linux_wheel:
Edward Z. Yang's avatar
Edward Z. Yang committed
331
332
333
          filters:
            branches:
              only: nightly
334
335
          name: nightly_binary_linux_wheel_py3.6
          python_version: '3.6'
Edward Z. Yang's avatar
Edward Z. Yang committed
336
337
      - binary_wheel_upload:
          context: org-member
338
339
340
          filters:
            branches:
              only: nightly
341
          name: nightly_binary_linux_wheel_py3.6_upload
Edward Z. Yang's avatar
Edward Z. Yang committed
342
          requires:
343
          - nightly_binary_linux_wheel_py3.6
Mingbo Wan's avatar
Mingbo Wan committed
344
      - smoke_test_linux_pip:
Edward Z. Yang's avatar
Edward Z. Yang committed
345
346
347
          filters:
            branches:
              only: nightly
348
349
350
351
          name: nightly_binary_linux_wheel_py3.6_smoke_test_pip
          python_version: '3.6'
          requires:
          - nightly_binary_linux_wheel_py3.6_upload
352
      - binary_linux_wheel:
Edward Z. Yang's avatar
Edward Z. Yang committed
353
354
355
          filters:
            branches:
              only: nightly
356
357
          name: nightly_binary_linux_wheel_py3.7
          python_version: '3.7'
358
359
      - binary_wheel_upload:
          context: org-member
360
361
362
          filters:
            branches:
              only: nightly
363
          name: nightly_binary_linux_wheel_py3.7_upload
364
          requires:
365
          - nightly_binary_linux_wheel_py3.7
Mingbo Wan's avatar
Mingbo Wan committed
366
      - smoke_test_linux_pip:
Edward Z. Yang's avatar
Edward Z. Yang committed
367
368
369
          filters:
            branches:
              only: nightly
370
371
372
373
          name: nightly_binary_linux_wheel_py3.7_smoke_test_pip
          python_version: '3.7'
          requires:
          - nightly_binary_linux_wheel_py3.7_upload
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
      - 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
396
      - binary_macos_wheel:
Edward Z. Yang's avatar
Edward Z. Yang committed
397
398
399
          filters:
            branches:
              only: nightly
400
401
          name: nightly_binary_macos_wheel_py3.6
          python_version: '3.6'
Edward Z. Yang's avatar
Edward Z. Yang committed
402
403
      - binary_wheel_upload:
          context: org-member
Edward Z. Yang's avatar
Edward Z. Yang committed
404
405
406
          filters:
            branches:
              only: nightly
407
408
409
          name: nightly_binary_macos_wheel_py3.6_upload
          requires:
          - nightly_binary_macos_wheel_py3.6
410
      - binary_macos_wheel:
Edward Z. Yang's avatar
Edward Z. Yang committed
411
412
413
          filters:
            branches:
              only: nightly
414
415
          name: nightly_binary_macos_wheel_py3.7
          python_version: '3.7'
416
417
      - binary_wheel_upload:
          context: org-member
Edward Z. Yang's avatar
Edward Z. Yang committed
418
419
420
          filters:
            branches:
              only: nightly
421
422
423
          name: nightly_binary_macos_wheel_py3.7_upload
          requires:
          - nightly_binary_macos_wheel_py3.7
424
425
426
427
428
429
430
431
432
433
434
435
436
437
      - 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
438
      - binary_linux_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
439
440
441
          filters:
            branches:
              only: nightly
442
443
          name: nightly_binary_linux_conda_py3.6
          python_version: '3.6'
Edward Z. Yang's avatar
Edward Z. Yang committed
444
445
      - binary_conda_upload:
          context: org-member
446
447
448
          filters:
            branches:
              only: nightly
449
          name: nightly_binary_linux_conda_py3.6_upload
Edward Z. Yang's avatar
Edward Z. Yang committed
450
          requires:
451
          - nightly_binary_linux_conda_py3.6
Mingbo Wan's avatar
Mingbo Wan committed
452
      - smoke_test_linux_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
453
454
455
          filters:
            branches:
              only: nightly
456
457
458
459
          name: nightly_binary_linux_conda_py3.6_smoke_test_conda
          python_version: '3.6'
          requires:
          - nightly_binary_linux_conda_py3.6_upload
460
      - binary_linux_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
461
462
463
          filters:
            branches:
              only: nightly
464
465
          name: nightly_binary_linux_conda_py3.7
          python_version: '3.7'
466
467
      - binary_conda_upload:
          context: org-member
468
469
470
          filters:
            branches:
              only: nightly
471
          name: nightly_binary_linux_conda_py3.7_upload
472
          requires:
473
          - nightly_binary_linux_conda_py3.7
Mingbo Wan's avatar
Mingbo Wan committed
474
      - smoke_test_linux_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
475
476
477
          filters:
            branches:
              only: nightly
478
479
480
481
          name: nightly_binary_linux_conda_py3.7_smoke_test_conda
          python_version: '3.7'
          requires:
          - nightly_binary_linux_conda_py3.7_upload
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
      - 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
504
      - binary_macos_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
505
506
507
          filters:
            branches:
              only: nightly
508
509
          name: nightly_binary_macos_conda_py3.6
          python_version: '3.6'
Edward Z. Yang's avatar
Edward Z. Yang committed
510
511
      - binary_conda_upload:
          context: org-member
Edward Z. Yang's avatar
Edward Z. Yang committed
512
513
514
          filters:
            branches:
              only: nightly
515
516
517
          name: nightly_binary_macos_conda_py3.6_upload
          requires:
          - nightly_binary_macos_conda_py3.6
518
      - binary_macos_conda:
Edward Z. Yang's avatar
Edward Z. Yang committed
519
520
521
          filters:
            branches:
              only: nightly
522
523
          name: nightly_binary_macos_conda_py3.7
          python_version: '3.7'
524
525
      - binary_conda_upload:
          context: org-member
Edward Z. Yang's avatar
Edward Z. Yang committed
526
527
          filters:
            branches:
Mingbo Wan's avatar
Mingbo Wan committed
528
              only: nightly
529
530
531
          name: nightly_binary_macos_conda_py3.7_upload
          requires:
          - nightly_binary_macos_conda_py3.7
532
533
534
535
536
537
538
539
540
541
542
543
544
545
      - 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
546
547
548
549
550
551
552
553
554
  docker_build:
    triggers:
      - schedule:
          cron: "0 10 * * 0"
          filters:
            branches:
              only:
                - master
    jobs:
555
      - smoke_test_docker_image_build