Skip to content

Commit

Permalink
Auto merge of rust-lang#61772 - alexcrichton:pr-and-master-builds, r=…
Browse files Browse the repository at this point in the history
…pietroalbini

ci: Enable toolstate tracking on Azure

Currently just run it through its paces but don't actually push to
official locations. Instead let's just push to a separate fork (mine) as
well as open issues in a separate fork (mine). Make sure that people
aren't pinged for these issues as well!

This should hopefully ensure that everything is working on Azure and
give us a chance to work through any issues that come up.

Fixes rust-lang#61790
Fixes rust-lang#61371
  • Loading branch information
bors committed Jun 13, 2019
2 parents 57a3300 + 521edee commit 0e4a56b
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 19 deletions.
1 change: 0 additions & 1 deletion .azure-pipelines/auto.yml
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,6 @@ jobs:
IMAGE: x86_64-gnu-aux
x86_64-gnu-tools:
IMAGE: x86_64-gnu-tools
# FIXME if: branch = auto OR (type = pull_request AND commit_message =~ /(?i:^update.*\b(rls|rustfmt|clippy|miri|cargo)\b)/)
x86_64-gnu-debug:
IMAGE: x86_64-gnu-debug
x86_64-gnu-nopt:
Expand Down
9 changes: 5 additions & 4 deletions .azure-pipelines/master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ pr: none
trigger:
- master

variables:
- group: prod-credentials

pool:
vmImage: ubuntu-16.04

Expand All @@ -16,9 +19,7 @@ steps:
- script: |
export MESSAGE_FILE=$(mktemp -t msg.XXXXXX)
. src/ci/docker/x86_64-gnu-tools/repo.sh
# FIXME(pietro): committing is disabled until we switch to Azure Pipelines
# as the source of truth, or until we setup a separate test repo.
#commit_toolstate_change "$MESSAGE_FILE" "$BUILD_SOURCESDIRECTORY/src/tools/publish_toolstate.py" "$(git rev-parse HEAD)" "$(git log --format=%s -n1 HEAD)" "$MESSAGE_FILE" "$TOOLSTATE_REPO_ACCESS_TOKEN"
commit_toolstate_change "$MESSAGE_FILE" "$BUILD_SOURCESDIRECTORY/src/tools/publish_toolstate.py" "$(git rev-parse HEAD)" "$(git log --format=%s -n1 HEAD)" "$MESSAGE_FILE" "$TOOLSTATE_REPO_ACCESS_TOKEN"
displayName: Publish toolstate
env:
TOOLSTATE_REPO_ACCESS_TOKEN: $(TOOLSTATE_REPO_ACCESS_TOKEN_SECRET)
TOOLSTATE_REPO_ACCESS_TOKEN: $(TOOLSTATE_REPO_ACCESS_TOKEN)
21 changes: 16 additions & 5 deletions .azure-pipelines/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,30 @@

trigger: none
pr:
- master # FIXME: really just want any branch, but want an explicit "pr" property set so it's clear
- master

jobs:
- job: Linux
timeoutInMinutes: 600
pool:
vmImage: ubuntu-16.04
steps:
- template: steps/run.yml
strategy:
matrix:
x86_64-gnu-llvm-6.0:
RUST_BACKTRACE: 1
IMAGE: x86_64-gnu-llvm-6.0
mingw-check:
IMAGE: mingw-check

# x86_64-gnu-tools: {}
# # if: branch = auto OR (type = pull_request AND commit_message =~ /(?i:^update.*\b(rls|rustfmt|clippy|miri|cargo)\b)/)
# mingw-check: {}
# TODO: enable this job if the commit message matches this regex, need tools
# figure out how to get the current commit message on azure and stick it in a
# condition somewhere
# if: commit_message =~ /(?i:^update.*\b(rls|rustfmt|clippy|miri|cargo)\b)/
# - job: Linux-x86_64-gnu-tools
# pool:
# vmImage: ubuntu-16.04
# steps:
# - template: steps/run.yml
# variables:
# IMAGE: x86_64-gnu-tools
1 change: 1 addition & 0 deletions .azure-pipelines/steps/run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ steps:
CI: true
SRC: .
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
TOOLSTATE_REPO_ACCESS_TOKEN: $(TOOLSTATE_REPO_ACCESS_TOKEN)
displayName: Run build

# If we're a deploy builder, use the `aws` command to publish everything to our
Expand Down
1 change: 1 addition & 0 deletions src/ci/docker/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ exec docker \
--env TF_BUILD \
--env BUILD_SOURCEBRANCHNAME \
--env TOOLSTATE_REPO_ACCESS_TOKEN \
--env TOOLSTATE_REPO \
--env CI_JOB_NAME="${CI_JOB_NAME-$IMAGE}" \
--volume "$HOME/.cargo:/cargo" \
--volume "$HOME/rustsrc:$HOME/rustsrc" \
Expand Down
2 changes: 1 addition & 1 deletion src/ci/docker/x86_64-gnu-tools/repo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ commit_toolstate_change() {
git config --global credential.helper store
printf 'https://%s:x-oauth-basic@github.com\n' "$TOOLSTATE_REPO_ACCESS_TOKEN" \
> "$HOME/.git-credentials"
git clone --depth=1 https://github.com/rust-lang-nursery/rust-toolstate.git
git clone --depth=1 $TOOLSTATE_REPO

cd rust-toolstate
FAILURE=1
Expand Down
23 changes: 15 additions & 8 deletions src/tools/publish_toolstate.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import sys
import re
import os
import json
import datetime
import collections
Expand Down Expand Up @@ -53,6 +54,14 @@ def read_current_status(current_commit, path):
return json.loads(status)
return {}

def gh_url():
return os.environ['TOOLSTATE_ISSUES_API_URL']

def maybe_delink(message):
if os.environ.get('TOOLSTATE_SKIP_MENTIONS') is not None:
return message.replace("@", "")
return message

def issue(
tool,
maintainers,
Expand All @@ -61,13 +70,12 @@ def issue(
pr_reviewer,
):
# Open an issue about the toolstate failure.
gh_url = 'https://api.github.com/repos/rust-lang/rust/issues'
assignees = [x.strip() for x in maintainers.split('@') if x != '']
assignees.append(relevant_pr_user)
response = urllib2.urlopen(urllib2.Request(
gh_url,
gh_url(),
json.dumps({
'body': textwrap.dedent('''\
'body': maybe_delink(textwrap.dedent('''\
Hello, this is your friendly neighborhood mergebot.
After merging PR {}, I observed that the tool {} no longer builds.
A follow-up PR to the repository {} is needed to fix the fallout.
Expand All @@ -77,7 +85,7 @@ def issue(
cc @{}, the PR reviewer, and @rust-lang/compiler -- nominating for prioritization.
''').format(relevant_pr_number, tool, REPOS.get(tool), relevant_pr_user, pr_reviewer),
''').format(relevant_pr_number, tool, REPOS.get(tool), relevant_pr_user, pr_reviewer)),
'title': '`{}` no longer builds after {}'.format(tool, relevant_pr_number),
'assignees': assignees,
'labels': ['T-compiler', 'I-nominated'],
Expand Down Expand Up @@ -216,11 +224,10 @@ def update_latest(
f.write(message)

# Write the toolstate comment on the PR as well.
gh_url = 'https://api.github.com/repos/rust-lang/rust/issues/{}/comments' \
.format(number)
issue_url = gh_url() + '/{}/comments'.format(number)
response = urllib2.urlopen(urllib2.Request(
gh_url,
json.dumps({'body': message}),
issue_url,
json.dumps({'body': maybe_delink(message)}),
{
'Authorization': 'token ' + github_token,
'Content-Type': 'application/json',
Expand Down

0 comments on commit 0e4a56b

Please sign in to comment.