• ydshieh's avatar
    try · 8e3fbca4
    ydshieh authored
    8e3fbca4
Forked from zhusg / transformers-new
1062 commits behind, 1 commit ahead of the upstream repository.
config.yml 9.95 KiB
version: 2.1
setup: true
orbs:
    continuation: circleci/continuation@0.1.0
parameters:
    nightly:
        type: boolean
        default: false
jobs:
    # Ensure running with CircleCI/huggingface
    check_circleci_user:
        docker:
            - image: python:3.10-slim
        resource_class: small
        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
    # Fetch the tests to run
    fetch_tests:
        working_directory: ~/transformers
        docker:
            - image: huggingface/transformers-quality
        parallelism: 1
        steps:
            - checkout
            - run: uv pip install -U -e .
            - run: echo 'export "GIT_COMMIT_MESSAGE=$(git show -s --format=%s)"' >> "$BASH_ENV" && source "$BASH_ENV"
            - run: mkdir -p test_preparation
            - run: python utils/tests_fetcher.py | tee tests_fetched_summary.txt
            - run: python utils/tests_fetcher.py --filter_tests
            - run: export "GIT_COMMIT_MESSAGE=$(git show -s --format=%s)" && echo $GIT_COMMIT_MESSAGE && python .circleci/create_circleci_config.py --fetcher_folder test_preparation
            - run: |
                if [ ! -s test_preparation/generated_config.yml ]; then
                    echo "No tests to run, exiting early!"
                    circleci-agent step halt
            - store_artifacts:
                path: test_preparation
            - run:
                name: "Retrieve Artifact Paths"
                # [reference] https://circleci.com/docs/api/v2/index.html#operation/getJobArtifacts
                # `CIRCLE_TOKEN` is defined as an environment variables set within a context, see `https://circleci.com/docs/contexts/`
                command: |
                    project_slug="gh/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
                    job_number=${CIRCLE_BUILD_NUM}
                    url="https://circleci.com/api/v2/project/${project_slug}/${job_number}/artifacts"
                    curl -o test_preparation/artifacts.json ${url} --header "Circle-Token: $CIRCLE_TOKEN"
            - run:
                name: "Prepare pipeline parameters"
                command: |
                    python utils/process_test_artifacts.py
            # To avoid too long generated_config.yaml on the continuation orb, we pass the links to the artifacts as parameters.
            # Otherwise the list of tests was just too big. Explicit is good but for that it was a limitation.
            # We used:
            # https://circleci.com/docs/api/v2/index.html#operation/getJobArtifacts : to get the job artifacts
            # We could not pass a nested dict, which is why we create the test_file_... parameters for every single job
            - store_artifacts: