config.yml 8.29 KB
Newer Older
1
version: 2.1
2
setup: true
3
orbs:
4
    continuation: circleci/continuation@0.1.0
5

6
7
8
9
parameters:
    nightly:
        type: boolean
        default: false
10

Julien Chaumond's avatar
Julien Chaumond committed
11
jobs:
12
13
14
    # Ensure running with CircleCI/huggingface
    check_circleci_user:
        docker:
15
            - image: cimg/python:3.8.12
16
17
18
19
20
21
22
23
24
        parallelism: 1
        steps:
            - run: echo $CIRCLE_PROJECT_USERNAME
            - run: |
                if [ "$CIRCLE_PROJECT_USERNAME" = "huggingface" ]; then
                    exit 0
                else
                    echo "The CI is running under $CIRCLE_PROJECT_USERNAME personal account. Please follow https://support.circleci.com/hc/en-us/articles/360008097173-Troubleshooting-why-pull-requests-are-not-triggering-jobs-on-my-organization- to fix it."; exit -1
                fi
Sylvain Gugger's avatar
Sylvain Gugger committed
25
26
    # Fetch the tests to run
    fetch_tests:
27
        working_directory: ~/transformers
28
        docker:
29
            - image: cimg/python:3.8.12
30
31
32
        parallelism: 1
        steps:
            - checkout
33
            - run: pip install --upgrade pip
Sylvain Gugger's avatar
Sylvain Gugger committed
34
35
36
37
            - run: pip install GitPython
            - run: pip install .
            - run: mkdir -p test_preparation
            - run: python utils/tests_fetcher.py | tee tests_fetched_summary.txt
38
            - store_artifacts:
39
                  path: ~/transformers/tests_fetched_summary.txt
40
            - run: |
Sylvain Gugger's avatar
Sylvain Gugger committed
41
                if [ -f test_list.txt ]; then
42
                    cp test_list.txt test_preparation/test_list.txt
Sylvain Gugger's avatar
Sylvain Gugger committed
43
44
45
                else
                    touch test_preparation/test_list.txt
                fi
Sylvain Gugger's avatar
Sylvain Gugger committed
46
47
48
49
50
51
52
            - run: |
                if [ -f test_repo_utils.txt ]; then
                    mv test_repo_utils.txt test_preparation/test_repo_utils.txt
                else
                    touch test_preparation/test_repo_utils.txt
                fi
            - run: python utils/tests_fetcher.py --filter_tests
53
54
55
56
57
58
            - run: |
                if [ -f test_list.txt ]; then
                    mv test_list.txt test_preparation/filtered_test_list.txt
                else
                    touch test_preparation/filtered_test_list.txt
                fi
59
60
61
62
63
64
65
            - run: python utils/tests_fetcher.py --filters tests examples | tee examples_tests_fetched_summary.txt
            - run: |
                  if [ -f test_list.txt ]; then
                      mv test_list.txt test_preparation/examples_test_list.txt
                  else
                      touch test_preparation/examples_test_list.txt
                  fi
Yih-Dar's avatar
Yih-Dar committed
66
67
68
69
70
71
            - run: |
                  if [ -f filtered_test_list_cross_tests.txt ]; then
                      mv filtered_test_list_cross_tests.txt test_preparation/filtered_test_list_cross_tests.txt
                  else
                      touch test_preparation/filtered_test_list_cross_tests.txt
                  fi
72
73
            - store_artifacts:
                  path: test_preparation/test_list.txt
74
75
            - store_artifacts:
                  path: ~/transformers/test_preparation/filtered_test_list.txt
76
            - store_artifacts:
77
78
                  path: test_preparation/examples_test_list.txt
            - run: python .circleci/create_circleci_config.py --fetcher_folder test_preparation
79
            - run: |
80
81
82
83
84
85
86
                  if [ ! -s test_preparation/generated_config.yml ]; then
                      echo "No tests to run, exiting early!"
                      circleci-agent step halt
                  fi
            - run: cp test_preparation/generated_config.yml test_preparation/generated_config.txt
            - store_artifacts:
                  path: test_preparation/generated_config.txt
Yih-Dar's avatar
Yih-Dar committed
87
88
            - store_artifacts:
                  path: test_preparation/filtered_test_list_cross_tests.txt
89
90
            - continuation/continue:
                  configuration_path: test_preparation/generated_config.yml
91

Sylvain Gugger's avatar
Sylvain Gugger committed
92
93
94
95
    # To run all tests for the nightly build
    fetch_all_tests:
        working_directory: ~/transformers
        docker:
96
            - image: cimg/python:3.8.12
Sylvain Gugger's avatar
Sylvain Gugger committed
97
98
        parallelism: 1
        steps:
99
            - checkout
100
            - run: pip install --upgrade pip
ydshieh's avatar
ydshieh committed
101
            - run: pip install GitPython
102
            - run: pip install .
Sylvain Gugger's avatar
Sylvain Gugger committed
103
104
            - run: |
                  mkdir test_preparation
Yih-Dar's avatar
Yih-Dar committed
105
106
107
108
109
110
111
                  echo -n "tests" > test_preparation/test_list.txt
                  echo -n "tests" > test_preparation/examples_test_list.txt
                  echo -n "tests/repo_utils" > test_preparation/test_repo_utils.txt
            - run: |
                  echo -n "tests" > test_list.txt
                  python utils/tests_fetcher.py --filter_tests
                  mv test_list.txt test_preparation/filtered_test_list.txt
112
113
            - run: python .circleci/create_circleci_config.py --fetcher_folder test_preparation
            - run: cp test_preparation/generated_config.yml test_preparation/generated_config.txt
114
            - store_artifacts:
115
116
117
                  path: test_preparation/generated_config.txt
            - continuation/continue:
                  configuration_path: test_preparation/generated_config.yml
118

Aymeric Augustin's avatar
Aymeric Augustin committed
119
120
121
    check_code_quality:
        working_directory: ~/transformers
        docker:
122
            - image: cimg/python:3.8.12
Lysandre's avatar
Lysandre committed
123
        resource_class: large
124
125
        environment:
            TRANSFORMERS_IS_CI: yes
126
            PYTEST_TIMEOUT: 120
Aymeric Augustin's avatar
Aymeric Augustin committed
127
128
129
        parallelism: 1
        steps:
            - checkout
130
131
            - restore_cache:
                  keys:
132
133
                      - v0.6-code_quality-{{ checksum "setup.py" }}
                      - v0.6-code-quality
134
            - run: pip install --upgrade pip
135
            - run: pip install .[all,quality]
136
            - save_cache:
Yih-Dar's avatar
Yih-Dar committed
137
                  key: v0.5-code_quality-{{ checksum "setup.py" }}
138
139
                  paths:
                      - '~/.cache/pip'
140
141
142
143
144
            - run:
                name: Show installed libraries and their versions
                command: pip freeze | tee installed.txt
            - store_artifacts:
                  path: ~/transformers/installed.txt
145
146
            - run: black --check examples tests src utils
            - run: ruff examples tests src utils
Sylvain Gugger's avatar
Sylvain Gugger committed
147
            - run: python utils/custom_init_isort.py --check_only
148
            - run: python utils/sort_auto_mappings.py --check_only
149
            - run: doc-builder style src/transformers docs/source --max_len 119 --check_only --path_to_docs docs/source
Sylvain Gugger's avatar
Sylvain Gugger committed
150
            - run: python utils/check_doc_toc.py
151

152
    check_repository_consistency:
R茅mi Louf's avatar
R茅mi Louf committed
153
154
        working_directory: ~/transformers
        docker:
155
            - image: cimg/python:3.8.12
Sylvain Gugger's avatar
Sylvain Gugger committed
156
157
158
        resource_class: large
        environment:
            TRANSFORMERS_IS_CI: yes
159
            PYTEST_TIMEOUT: 120
R茅mi Louf's avatar
R茅mi Louf committed
160
161
162
        parallelism: 1
        steps:
            - checkout
Sylvain Gugger's avatar
Sylvain Gugger committed
163
164
            - restore_cache:
                  keys:
165
166
                      - v0.6-repository_consistency-{{ checksum "setup.py" }}
                      - v0.6-repository_consistency
Sylvain Gugger's avatar
Sylvain Gugger committed
167
168
169
            - run: pip install --upgrade pip
            - run: pip install .[all,quality]
            - save_cache:
Yih-Dar's avatar
Yih-Dar committed
170
                  key: v0.5-repository_consistency-{{ checksum "setup.py" }}
Sylvain Gugger's avatar
Sylvain Gugger committed
171
172
                  paths:
                      - '~/.cache/pip'
173
174
175
176
177
            - run:
                name: Show installed libraries and their versions
                command: pip freeze | tee installed.txt
            - store_artifacts:
                  path: ~/transformers/installed.txt
Sylvain Gugger's avatar
Sylvain Gugger committed
178
179
180
181
182
            - run: python utils/check_copies.py
            - run: python utils/check_table.py
            - run: python utils/check_dummies.py
            - run: python utils/check_repo.py
            - run: python utils/check_inits.py
183
            - run: python utils/check_config_docstrings.py
184
            - run: python utils/check_config_attributes.py
185
            - run: python utils/check_doctest_list.py
Sylvain Gugger's avatar
Sylvain Gugger committed
186
            - run: make deps_table_check_updated
187
            - run: python utils/update_metadata.py --check-only
188
            - run: python utils/check_task_guides.py
189

190
workflows:
LysandreJik's avatar
LysandreJik committed
191
    version: 2
192
193
194
    setup_and_quality:
        when:
            not: <<pipeline.parameters.nightly>>
LysandreJik's avatar
LysandreJik committed
195
        jobs:
196
            - check_circleci_user
Aymeric Augustin's avatar
Aymeric Augustin committed
197
            - check_code_quality
198
            - check_repository_consistency
Sylvain Gugger's avatar
Sylvain Gugger committed
199
            - fetch_tests
200

201
    nightly:
202
        when: <<pipeline.parameters.nightly>>
203
        jobs:
204
            - check_circleci_user
205
206
207
            - check_code_quality
            - check_repository_consistency
            - fetch_all_tests