version: 1 policy: pullRequests: public tasks: $let: decision_task_id: {$eval: as_slugid("decision_task")} expires_in: {$fromNow: '1 year'} 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} in: $if: 'tasks_for in ["github-pull-request", "github-push"]' then: - taskId: {$eval: as_slugid("lint_task")} created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: aws-provisioner-v1 workerType: github-worker payload: maxRunTime: 3600 image: python command: - "/bin/bash" - "-lcx" - "git clone ${repository} && cd bugbug && git checkout ${head_rev} && pip install -r test-requirements.txt && pre-commit run -a" # TODO Be smarter and run only on modified files metadata: name: bugbug lint description: bugbug lint owner: ${user}@users.noreply.github.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: aws-provisioner-v1 workerType: github-worker payload: maxRunTime: 3600 image: python command: - "/bin/bash" - "-lcx" - "git clone ${repository} && cd bugbug && git checkout ${head_rev} && python infra/version_check.py" metadata: name: bugbug tag version check description: bugbug tag version check owner: ${user}@users.noreply.github.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - taskId: {$eval: as_slugid("tests_task")} created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: aws-provisioner-v1 workerType: github-worker payload: maxRunTime: 3600 image: python command: - "/bin/bash" - "-lcx" - "git clone ${repository} && cd bugbug && git checkout ${head_rev} && pip install -r requirements.txt && pip install -r test-requirements.txt && python -m pytest tests/test_*.py" metadata: name: bugbug tests description: bugbug tests owner: ${user}@users.noreply.github.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - taskId: {$eval: as_slugid("rollback_test_task")} created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: aws-provisioner-v1 workerType: github-worker payload: maxRunTime: 3600 image: python command: - "/bin/bash" - "-lcx" - "git clone ${repository} && cd bugbug && git checkout ${head_rev} && pip install -r requirements.txt && python -c 'from bugbug import bugzilla, db; db.download()' && python -m bugbug.bug_snapshot" metadata: name: bugbug rollback test description: bugbug rollback test owner: ${user}@users.noreply.github.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - taskId: {$eval: as_slugid("packaging_test_task")} created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: aws-provisioner-v1 workerType: github-worker payload: maxRunTime: 3600 image: python command: - "/bin/bash" - "-lcx" - "git clone ${repository} && cd bugbug && git checkout ${head_rev} && pip install -r requirements.txt && python setup.py sdist && pip install dist/bugbug-$(cat VERSION).tar.gz" metadata: name: bugbug packaging test description: bugbug packaging test owner: ${user}@users.noreply.github.com source: ${repository}/raw/${head_rev}/.taskcluster.yml - taskId: {$eval: as_slugid("docker_build")} created: {$fromNow: ''} deadline: {$fromNow: '3 hours'} provisionerId: aws-provisioner-v1 workerType: releng-svc payload: capabilities: privileged: true maxRunTime: 10800 image: mozilla/taskboot:latest command: - "/bin/sh" - "-lcxe" - "git clone ${repository} /code && cd /code && git checkout ${head_rev} && python http_service/download_models.py && taskboot --target /code build-compose --registry=registry.hub.docker.com --write /images" artifacts: public/bugbug: expires: {$fromNow: '2 weeks'} path: /images type: directory scopes: - docker-worker:capability:privileged metadata: name: bugbug docker build description: bugbug docker build owner: ${user}@users.noreply.github.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("rollback_test_task")} - {$eval: as_slugid("packaging_test_task")} - {$eval: as_slugid("version_check_task")} scopes: - secrets:get:project/relman/bugbug/deploy created: {$fromNow: ''} deadline: {$fromNow: '1 hour'} provisionerId: aws-provisioner-v1 workerType: github-worker payload: features: taskclusterProxy: true maxRunTime: 3600 image: python command: - "/bin/bash" - "-lcx" - "git clone ${repository} && cd bugbug && git checkout ${head_rev} && python setup.py sdist bdist_wheel && pip install twine && python infra/pypi.py" metadata: name: bugbug PyPI release description: bugbug PyPI release owner: ${user}@users.noreply.github.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")} scopes: - secrets:get:project/relman/bugbug/deploy taskId: {$eval: as_slugid("docker_push")} created: {$fromNow: ''} deadline: {$fromNow: '4 hours'} provisionerId: aws-provisioner-v1 workerType: github-worker payload: features: taskclusterProxy: true maxRunTime: 3600 image: mozilla/taskboot:latest env: TASKCLUSTER_SECRET: project/relman/bugbug/deploy command: - taskboot - push-artifact metadata: name: bugbug docker push description: bugbug docker push 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")} dependencies: - {$eval: as_slugid("docker_push")} scopes: - hooks:modify-hook:project-relman/bugbug - assume:hook-id:project-relman/bugbug created: {$fromNow: ''} deadline: {$fromNow: '5 hours'} provisionerId: aws-provisioner-v1 workerType: github-worker payload: features: taskclusterProxy: true maxRunTime: 3600 image: mozilla/taskboot:latest env: GIT_REPOSITORY: ${repository} GIT_REVISION: ${head_rev} command: - taskboot - build-hook - infra/taskcluster-hook-pipeline-start.json - project-relman - bugbug metadata: name: bugbug update hooks description: bugbug update hooks owner: ${user}@users.noreply.github.com source: ${repository}/raw/${head_rev}/.taskcluster.yml