1
1
# Bors
2
2
3
3
The infrastructure team manages an instance of [ Homu] called "Bors", to be used
4
- by repositories inside the ` rust-lang ` organization . The instance is available
4
+ for ` rust-lang/rust ` . The instance is available
5
5
at [ bors.rust-lang.org] , and is backed by the [ @bors ] GitHub account.
6
6
7
7
The service is configured [ with Terraform] [ tf ] , and it's automatically deployed
@@ -17,76 +17,9 @@ actual state in the repositories.
17
17
See [ Fixing inconsistencies in the bors queue] ( ./bors/queue-resync.md ) for
18
18
instructions on how to do this properly.
19
19
20
- ### Adding a new repository to bors
21
-
22
- There are multiple steps needed to add a repository to our Bors instance:
23
-
24
- 1 . The [ @bors ] GitHub account needs to be granted write access to the
25
- repository.
26
-
27
- 2 . Each CI provider needs to have a single GitHub Check Run to gate on. This is
28
- not provided by default on GitHub Actions, but it can be simulated with
29
- these two jobs, which will generate a ` bors build finished ` check:
30
-
31
- ``` yaml
32
- end-success :
33
- name : bors build finished
34
- if : success()
35
- runs-on : ubuntu-latest
36
- needs : [ALL, OTHER, JOBS]
37
- steps :
38
- - name : Mark the job as successful
39
- run : exit 0
40
-
41
- end-failure :
42
- name : bors build finished
43
- if : " !success()"
44
- runs-on : ubuntu-latest
45
- needs : [ALL, OTHER, JOBS]
46
- steps :
47
- - name : Mark the job as a failure
48
- run : exit 1
49
- ` ` `
50
-
51
- Make sure to replace ` [ALL, OTHER, JOBS]` with a list of all the jobs you
52
- want to gate on.
53
-
54
- These jobs need to run on specific branches (`auto` and `try`) so it's necessary
55
- to add those branches to the list of branches tested by the CI provider. For GitHub
56
- Actions that looks like this :
57
-
58
- ` ` ` yaml
59
- on:
60
- push:
61
- branches: [
62
- auto, # Added for bors
63
- try # Added for bors
64
- ]
65
- ` ` `
66
-
67
- 3. Add the repository name to the bors permissions array in the [team
68
- repository][team-permissions.rs], and grant the `bors.REPOSITORY.review`
69
- permission to the right teams or people. You can see an example of adding
70
- bors permissions to a team [here][bors-permission].
71
-
72
- 4. Add the repository to the `repositories` map in [the Terraform configuration
73
- file][tf-repos]. This will create a webhook and inject its secret key in the
74
- bors execution environment.
75
-
76
- 5. Add the repository to the [Bors configuration][bors-config], taking
77
- inspiration from other repositories. Note that the environment variables used
78
- in that config will be set automatically as long as you completed step 3 above.
79
-
80
- 6. Give it a test by commenting `@bors ping` in any PR. If you get a response back,
81
- you can then try to approve the PR with `@bors r+`.
82
-
83
20
[ @bors ] : https://github.com/bors
84
21
[ Homu ] : https://github.com/rust-lang/homu
85
- [bors-config] : https://github.com/rust-lang/homu/blob/master/cfg.production.toml
86
22
[ bors.rust-lang.org ] : https://bors.rust-lang.org
87
23
[ ecs ] : ./ecs-services.md
88
24
[ rust-lang/homu ] : https://github.com/rust-lang/homu
89
- [team-permissions.rs] : https://github.com/rust-lang/team/blob/52b4370214e1c8eabe483f3a26f22733d94b326f/config.toml#L18-L37
90
- [bors-permission] : https://github.com/rust-lang/team/blob/a1532ec2b08c9d40c0a2c7643ffe72de9671e265/teams/wg-compiler-performance.toml#L25-L26
91
- [tf-repos] : https://github.com/rust-lang/simpleinfra/blob/master/terraform/bors/_config.auto.tfvars
92
25
[ tf ] : https://github.com/rust-lang/simpleinfra/tree/master/terraform/bors/
0 commit comments