forked from sorbet/sorbet
-
Notifications
You must be signed in to change notification settings - Fork 5
/
pipeline.yaml
137 lines (115 loc) · 4.31 KB
/
pipeline.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# We currently have 3 execution environments:
# - arbiter, a linux box that does security enforcement. Should never run tests.
# - our mac machine that has 12 cores that is used to run mac tests, build mac _and_ emscripten release
# - autoscaling linux cloud that's used for everything else
steps:
# Basic Phase - Run super fast things and things that commonly catch bugs
- label: ":linux: linters.sh"
command: '.buildkite/linters.sh < /dev/null'
<<: &elastic
agents:
os: linux
queue: elastic
plugins:
- docker#0d9b114b0ca8ec7167787285274aa3842392374d:
# This image needs to be a [manifest list][0] with constituent images for all of the
# supported linux architectures.
#
# [0]: https://docs.docker.com/reference/cli/docker/manifest/#create-and-push-a-manifest-list
image: "sorbetruby/sorbet-build-image:latest"
workdir: /app
always-pull: false
init: true
propagate-environment: true
environment:
- "SORBET_RUBYGEMS_API_KEY"
volumes:
- "/usr/local/var/bazelcache:/usr/local/var/bazelcache"
- label: ":mac: test-static-sanitized.sh (master only)"
command: '.buildkite/test-static-sanitized.sh < /dev/null'
branches: "master"
artifact_paths: _out_/profile.json
agents:
os: mac
# TODO(jez) We should only retry for specific error.
# The one we were trying to fix was `'foo.h': file not found`
retry:
automatic: true
- label: ":linux: test-static-sanitized.sh"
command: '.buildkite/test-static-sanitized.sh < /dev/null'
artifact_paths: _out_/profile.json
<<: *elastic
- label: ":linux: test-rbi-gen.sh"
command: '.buildkite/test-rbi-gen.sh < /dev/null'
artifact_paths:
- _out_/profile.json
<<: *elastic
- label: ":linux: test-vscode-extension.sh"
command: '.buildkite/test-vscode-extension.sh < /dev/null'
<<: *elastic
- wait: ~
# Build Phase - Build all our artifacts
- label: ":linux: build-website.sh"
command: '.buildkite/build-website.sh < /dev/null'
artifact_paths: _out_/**/*
<<: *elastic
- label: ":linux: build-sorbet-runtime.sh"
command: '.buildkite/build-sorbet-runtime.sh < /dev/null'
artifact_paths: _out_/**/*
<<: *elastic
- label: ":mac: build-static-release.sh (master only)"
command: '.buildkite/build-static-release.sh < /dev/null'
branches: master
artifact_paths: _out_/**/*
agents:
os: mac
# TODO(jez) We should only retry for specific error.
# The one we were trying to fix was `'foo.h': file not found`
retry:
automatic: true
- label: ":linux: build-static-release.sh"
command: '.buildkite/build-static-release.sh < /dev/null'
artifact_paths: _out_/**/*
<<: *elastic
- label: ":linux: (arm64) build-static-release.sh"
command: '.buildkite/build-static-release.sh < /dev/null'
artifact_paths: _out_/**/*
<<: *elastic
agents:
os: linux
queue: elastic-arm64
- label: ":linux: build-sorbet-static-and-runtime.sh"
command: '.buildkite/build-sorbet-static-and-runtime.sh < /dev/null'
artifact_paths: _out_/**/*
<<: *elastic
- label: ":linux: build-emscripten.sh"
command: '.buildkite/build-emscripten.sh < /dev/null'
artifact_paths: _out_/**/*
<<: *elastic
- label: ":linux: build-vscode-extension.sh"
command: '.buildkite/build-vscode-extension.sh < /dev/null'
artifact_paths: _out_/**/*
<<: *elastic
- wait: ~
- label: ":linux: build-static-release-java.sh (master only)"
command: '.buildkite/build-static-release-java.sh < /dev/null'
# this needs to be run when both linux & mac build-static-release
# are done. at the moment, mac is only done on master branch
branches: master
artifact_paths: _out_/**/*
<<: *elastic
- wait: ~
# Deploy Phase - Send the artifacts to the world
- label: ":linux: publish.sh"
command: '.buildkite/publish.sh'
agents:
os: linux
- wait: ~
# Success Phase - Allow the PR to be merged
- label: "All tests and builds succeeded"
command: '.buildkite/all-succeeded.sh'
- label: ":linux: publish-ruby-gems.sh (non-blocking)"
command: '.buildkite/publish-ruby-gems.sh < /dev/null'
artifact_paths: _out_/corrupt/**/*
<<: *elastic
- wait: ~