version: 1 policy: pullRequests: public tasks: $let: user: ${event.sender.login} head_branch: $if: 'tasks_for == "github-pull-request"' then: ${event.pull_request.head.ref} else: $if: 'tasks_for == "github-push"' then: ${event.ref} else: ${event.release.target_commitish} head_rev: $if: 'tasks_for == "github-pull-request"' then: ${event.pull_request.head.sha} else: $if: 'tasks_for == "github-push"' then: ${event.after} else: ${event.release.tag_name} repository: $if: 'tasks_for == "github-pull-request"' then: ${event.pull_request.head.repo.html_url} else: ${event.repository.html_url} taskboot_image: "mozilla/taskboot:0.1.10" in: $if: 'tasks_for in ["github-pull-request", "github-push"]' then: - taskId: {$eval: as_slugid("lint_task")} created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: proj-relman workerType: ci payload: maxRunTime: 3600 image: python:3.7 command: - "/bin/bash" - "-lcx" - "git clone --quiet ${repository} && cd bugbug && git -c advice.detachedHead=false checkout ${head_rev} && pip install --disable-pip-version-check --quiet --no-cache-dir -r test-requirements.txt && pre-commit run -a" metadata: name: bugbug lint description: bugbug lint owner: mcastelluccio@mozilla.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - $if: 'tasks_for == "github-push"' then: taskId: {$eval: as_slugid("version_check_task")} created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: proj-relman workerType: ci payload: maxRunTime: 3600 image: python:3.7 command: - "/bin/bash" - "-lcx" - "git clone --quiet ${repository} && cd bugbug && git -c advice.detachedHead=false checkout ${head_rev} && python infra/version_check.py" metadata: name: bugbug tag version check description: bugbug tag version check owner: mcastelluccio@mozilla.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - taskId: {$eval: as_slugid("tests_task")} created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: proj-relman workerType: ci payload: maxRunTime: 3600 image: python:3.7 env: CODECOV_TOKEN: 66162f89-a4d9-420c-84bd-d10f12a428d9 command: - "/bin/bash" - "-lcx" - "apt-get -qq update && apt-get -qq install -y libhdf5-dev && pip install --disable-pip-version-check --quiet --no-cache-dir mercurial==5.2 && hg clone -r 102106f53cb2 https://hg.mozilla.org/hgcustom/version-control-tools /version-control-tools/ && git clone --quiet ${repository} && curl -L https://github.com/mozilla/rust-code-analysis/releases/download/v0.0.8/rust-code-analysis-linux-x86_64.tar.gz | tar -C /usr/bin -xzv --strip=1 && chmod +x /usr/bin/rust-code-analysis && cd bugbug && git -c advice.detachedHead=false checkout ${head_rev} && cp infra/hgrc /root/.hgrc && pip install --disable-pip-version-check --quiet --no-cache-dir -r requirements.txt && pip install --disable-pip-version-check --quiet --no-cache-dir -r extra-nlp-requirements.txt && pip install --disable-pip-version-check --quiet --no-cache-dir -r extra-nn-requirements.txt && pip install --disable-pip-version-check --quiet --no-cache-dir -r infra/spawn_pipeline_requirements.txt && pip install --disable-pip-version-check --quiet --no-cache-dir -r test-requirements.txt && python -m pytest --cov=./ tests/test_*.py && bash <(curl -s https://codecov.io/bash)" metadata: name: bugbug tests description: bugbug tests owner: mcastelluccio@mozilla.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - taskId: {$eval: as_slugid("http_tests_task")} created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: proj-relman workerType: ci payload: maxRunTime: 3600 image: python:3.7 env: CODECOV_TOKEN: 66162f89-a4d9-420c-84bd-d10f12a428d9 command: - "/bin/bash" - "-lcx" - "apt-get -qq update && apt-get -qq install -y python-pip && git clone --quiet ${repository} && cd bugbug && git -c advice.detachedHead=false checkout ${head_rev} && pip install --disable-pip-version-check --quiet --no-cache-dir . && pip install --disable-pip-version-check --quiet --no-cache-dir -r test-requirements.txt && pip install --disable-pip-version-check --quiet --no-cache-dir -r http_service/requirements.txt && pytest --cov=http_service http_service/tests/ -vvv && bash <(curl -s https://codecov.io/bash)" metadata: name: bugbug http service tests description: bugbug http service tests owner: mcastelluccio@mozilla.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - taskId: {$eval: as_slugid("packaging_test_task")} created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: proj-relman workerType: ci payload: maxRunTime: 3600 image: python:3.7 env: CODECOV_TOKEN: 66162f89-a4d9-420c-84bd-d10f12a428d9 command: - "/bin/bash" - "-lcx" - "apt-get -qq update && apt-get -qq install -y libhdf5-dev && git clone --quiet ${repository} && cd bugbug && git -c advice.detachedHead=false checkout ${head_rev} && pip install --disable-pip-version-check --quiet --no-cache-dir -r test-requirements.txt && python -m coverage run setup.py sdist && pip install --disable-pip-version-check --quiet --no-cache-dir dist/bugbug-$(cat VERSION).tar.gz && pip install --disable-pip-version-check --quiet --no-cache-dir dist/bugbug-$(cat VERSION).tar.gz[nlp] && pip install --disable-pip-version-check --quiet --no-cache-dir dist/bugbug-$(cat VERSION).tar.gz[nn] && bash <(curl -s https://codecov.io/bash)" metadata: name: bugbug packaging test description: bugbug packaging test owner: mcastelluccio@mozilla.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - taskId: {$eval: as_slugid("docker_build")} created: {$fromNow: ''} deadline: {$fromNow: '3 hours'} provisionerId: proj-relman workerType: ci payload: capabilities: privileged: true maxRunTime: 10800 image: "${taskboot_image}" env: REGISTRY: registry.hub.docker.com VERSION: $if: 'head_branch[:10] == "refs/tags/"' then: {$eval: 'head_branch[10:]' } else: "latest" command: - "/bin/sh" - "-lcxe" - "git clone --quiet ${repository} /code && cd /code && git -c advice.detachedHead=false checkout ${head_rev} && taskboot --cache /cache --target /code build-compose --write /images --build-arg CHECK_MODELS=0 --tag $VERSION --tag latest" artifacts: public/bugbug: expires: {$fromNow: '2 weeks'} path: /images type: directory cache: bugbug-build: /cache scopes: - docker-worker:capability:privileged - docker-worker:cache:bugbug-build metadata: name: bugbug docker build description: bugbug docker build owner: mcastelluccio@mozilla.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - $if: 'tasks_for == "github-push" && head_branch[:10] == "refs/tags/"' then: dependencies: - {$eval: as_slugid("lint_task")} - {$eval: as_slugid("tests_task")} - {$eval: as_slugid("http_tests_task")} - {$eval: as_slugid("packaging_test_task")} - {$eval: as_slugid("version_check_task")} - {$eval: as_slugid("integration_test")} scopes: - secrets:get:project/relman/bugbug/deploy created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: proj-relman workerType: ci payload: features: taskclusterProxy: true maxRunTime: 3600 image: "${taskboot_image}" command: - taskboot - deploy-pypi env: TASKCLUSTER_SECRET: project/relman/bugbug/deploy GIT_REPOSITORY: "${repository}" GIT_REVISION: "${head_rev}" metadata: name: bugbug PyPI release description: bugbug PyPI release owner: mcastelluccio@mozilla.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - $if: 'tasks_for == "github-push" && head_branch[:10] == "refs/tags/"' then: dependencies: - {$eval: as_slugid("docker_build")} - {$eval: as_slugid("lint_task")} - {$eval: as_slugid("version_check_task")} - {$eval: as_slugid("tests_task")} - {$eval: as_slugid("packaging_test_task")} scopes: - secrets:get:project/relman/bugbug/deploy taskId: {$eval: as_slugid("docker_push")} created: {$fromNow: ''} deadline: {$fromNow: '4 hours'} provisionerId: proj-relman workerType: ci payload: features: taskclusterProxy: true maxRunTime: 3600 image: "${taskboot_image}" env: TASKCLUSTER_SECRET: project/relman/bugbug/deploy command: - taskboot - push-artifact - --exclude-filter - "*http-service*" metadata: name: bugbug docker push description: bugbug docker push owner: mcastelluccio@mozilla.com source: ${repository}/raw/${head_rev}/.taskcluster.yml # It's the same task integration_test as in data-pipeline.yml - $if: 'tasks_for == "github-push" && head_branch[:10] == "refs/tags/"' then: taskId: {$eval: as_slugid("integration_test")} dependencies: - {$eval: as_slugid("docker_push")} created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: proj-relman workerType: ci scopes: - secrets:get:project/relman/bugbug/integration - "docker-worker:cache:bugbug-mercurial-repository" payload: features: taskclusterProxy: true maxRunTime: 10800 image: mozilla/bugbug-commit-retrieval:${head_branch[10:]} env: TC_SECRET_ID: project/relman/bugbug/integration CACHE_DIR: "/cache" command: - "/bin/bash" - "-lcx" - "apt-get -qq update && apt-get -qq install -y redis-server && git clone --quiet ${repository} && cd bugbug && git -c advice.detachedHead=false checkout ${head_rev} && python -c 'import os; print(os.environ.keys())' && bash ./scripts/integration_test.sh" cache: bugbug-mercurial-repository: /cache metadata: name: bugbug integration test description: bugbug integration test owner: ${user}@users.noreply.github.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - $if: 'tasks_for == "github-push" && head_branch[:10] == "refs/tags/"' then: taskId: {$eval: as_slugid("update_hook_data_pipeline")} dependencies: - {$eval: as_slugid("integration_test")} scopes: - hooks:modify-hook:project-relman/bugbug - assume:hook-id:project-relman/bugbug - queue:route:project.relman.bugbug.deploy_ending.* created: {$fromNow: ''} deadline: {$fromNow: '5 hours'} provisionerId: proj-relman workerType: ci payload: features: taskclusterProxy: true maxRunTime: 3600 image: "${taskboot_image}" command: - "/bin/sh" - "-lcxe" - "git clone --quiet ${repository} && cd bugbug && git -c advice.detachedHead=false checkout ${head_rev} && python infra/set_hook_version.py ${head_branch[10:]} infra/taskcluster-hook-data-pipeline.json && taskboot --target . build-hook infra/taskcluster-hook-data-pipeline.json project-relman bugbug" routes: - project.relman.bugbug.deploy_ending metadata: name: bugbug update data hook description: bugbug update data hook owner: mcastelluccio@mozilla.com source: ${repository}/raw/${head_rev}/.taskcluster.yml