Skip to content

Commit 5d566ca

Browse files
committed
Add support for --testrig
Signed-off-by: Tamal Saha <tamal@appscode.com>
1 parent 1d99aa9 commit 5d566ca

File tree

6 files changed

+34
-14
lines changed

6 files changed

+34
-14
lines changed

Development.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ curl -s https://raw.githubusercontent.com/actions/runner/main/scripts/create-lat
103103
## Update Webhook Host
104104

105105
```
106-
curl -fsSL -O https://github.com/appscodelabs/gh-ci-webhook/releases/download/v0.0.18/gh-ci-webhook-linux-amd64
106+
curl -fsSL -O https://github.com/appscodelabs/gh-ci-webhook/releases/download/v0.0.19/gh-ci-webhook-linux-amd64
107107
chmod +x gh-ci-webhook-linux-amd64
108108
mv gh-ci-webhook-linux-amd64 /usr/local/bin/gh-ci-webhook
109109
@@ -113,7 +113,7 @@ systemctl stop gh-ci-webhook
113113
## Update Worker hosts
114114

115115
```
116-
curl -fsSL -O https://github.com/appscodelabs/gh-ci-webhook/releases/download/v0.0.18/gh-ci-webhook-linux-amd64
116+
curl -fsSL -O https://github.com/appscodelabs/gh-ci-webhook/releases/download/v0.0.19/gh-ci-webhook-linux-amd64
117117
chmod +x gh-ci-webhook-linux-amd64
118118
mv gh-ci-webhook-linux-amd64 /usr/local/bin/gh-ci-webhook
119119
systemctl restart gh-ci-hostctl

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
- Download pre-built binary into a server
66

77
```bash
8-
curl -fsSL -O https://github.com/appscodelabs/gh-ci-webhook/releases/download/v0.0.18/gh-ci-webhook-linux-amd64
8+
curl -fsSL -O https://github.com/appscodelabs/gh-ci-webhook/releases/download/v0.0.19/gh-ci-webhook-linux-amd64
99
chmod +x gh-ci-webhook-linux-amd64
1010
mv gh-ci-webhook-linux-amd64 /usr/local/bin/gh-ci-webhook
1111
```
1212

1313
- Install systemd service
1414

1515
```bash
16-
curl -fsSL -O https://github.com/appscodelabs/gh-ci-webhook/raw/v0.0.18/hack/systemd/gh-ci-webhook.service
16+
curl -fsSL -O https://github.com/appscodelabs/gh-ci-webhook/raw/v0.0.19/hack/systemd/gh-ci-webhook.service
1717
chmod +x gh-ci-webhook.service
1818

1919
# edit gh-ci-webhook.service file to add `--ssl --secret-key=<uuid>`

pkg/backend/processor.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838
const (
3939
RunnerRegular = "firecracker"
4040
RunnerHigh = "f0"
41+
RunnerTestrig = "testrig"
4142
RunnerLabelDetector = "label-detector"
4243
)
4344

@@ -150,7 +151,7 @@ func RunsOnSelfHosted(e *github.WorkflowJobEvent) (string, bool) {
150151
return "", false
151152
}
152153
label := e.GetWorkflowJob().Labels[0]
153-
return label, label == RunnerHigh || label == RunnerRegular
154+
return label, label == RunnerHigh || label == RunnerRegular || label == RunnerTestrig
154155
}
155156

156157
func (mgr *Manager) ProcessCompletedMsg(payload []byte) (*github.WorkflowJobEvent, error) {

pkg/cmds/wait_for_job.go

+20-7
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ import (
3737

3838
func NewCmdWaitForJob() *cobra.Command {
3939
var (
40-
ncOpts = backend.NewNATSOptions()
41-
nc *nats.Conn
40+
ncOpts = backend.NewNATSOptions()
41+
nc *nats.Conn
42+
testrig bool
4243
)
4344
cmd := &cobra.Command{
4445
Use: "wait-for-job",
@@ -58,7 +59,7 @@ func NewCmdWaitForJob() *cobra.Command {
5859

5960
var event *github.WorkflowJobEvent
6061
for {
61-
event, err = wait_until_job(nc)
62+
event, err = wait_until_job(nc, testrig)
6263
if err != nil {
6364
klog.ErrorS(err, "error while waiting for next job")
6465
}
@@ -89,12 +90,13 @@ export labels=%s
8990
}
9091

9192
ncOpts.AddFlags(cmd.Flags())
93+
cmd.Flags().BoolVar(&testrig, "testrig", testrig, "Prefer testrig")
9294

9395
return cmd
9496
}
9597

9698
// https://natsbyexample.com/examples/jetstream/workqueue-stream/go
97-
func wait_until_job(nc *nats.Conn) (*github.WorkflowJobEvent, error) {
99+
func wait_until_job(nc *nats.Conn, testrig bool) (*github.WorkflowJobEvent, error) {
98100
js, err := jetstream.New(nc)
99101
if err != nil {
100102
return nil, err
@@ -111,9 +113,20 @@ func wait_until_job(nc *nats.Conn) (*github.WorkflowJobEvent, error) {
111113

112114
defer printStreamState(ctx, streamQueued)
113115

114-
payload, err := consumeMsg(ctx, streamQueued, streamName+"."+backend.RunnerHigh)
115-
if err != nil || len(payload) == 0 {
116-
payload, err = consumeMsg(ctx, streamQueued, streamName+"."+backend.RunnerRegular)
116+
subjects := []string{
117+
streamName + "." + backend.RunnerHigh,
118+
streamName + "." + backend.RunnerRegular,
119+
}
120+
if testrig {
121+
subjects = append([]string{streamName + "." + backend.RunnerTestrig}, subjects...)
122+
}
123+
124+
var payload []byte
125+
for _, subj := range subjects {
126+
payload, err = consumeMsg(ctx, streamQueued, subj)
127+
if err == nil && len(payload) > 0 {
128+
break
129+
}
117130
}
118131
if err != nil {
119132
return nil, err

pkg/providers/firecracker/cloud_init.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,8 @@ rsync --archive --chown=$USER:$USER ~/.docker /home/$USER
256256
su $USER
257257
cd /home/$USER
258258
259+
export TESTRIG=%v
260+
259261
export NATS_URL=%s
260262
export NATS_USERNAME=%s
261263
export NATS_PASSWORD=%s
@@ -270,8 +272,8 @@ export RUNNER_NAME=%s
270272
# curl -s https://raw.githubusercontent.com/actions/runner/main/scripts/create-latest-svc.sh | bash -s -- -s ${RUNNER_OWNER} -n ${RUNNER_NAME} -f
271273
# ephemeral runner: https://docs.github.com/en/actions/hosting-your-own-runners/autoscaling-with-self-hosted-runners#using-ephemeral-runners-for-autoscaling
272274
# https://github.blog/changelog/2021-09-20-github-actions-ephemeral-self-hosted-runners-new-webhooks-for-auto-scaling/
273-
curl -fsSL https://gist.githubusercontent.com/tamalsaha/af2f99c80f84410253bd1e532bdfabc7/raw/bcb7b7379c050fb96260ce2cfa83485007275b44/start-runner.sh | bash -s -- -n ${RUNNER_NAME} -f
274-
`, string(dockerHubToken), DefaultOptions.NatsURL, DefaultOptions.NatsUsername, DefaultOptions.NatsPassword, ghToken, runnerName)
275+
curl -fsSL https://gist.githubusercontent.com/tamalsaha/af2f99c80f84410253bd1e532bdfabc7/raw/1ea50be2e954fcde2fd2bce377ac168d799ccf38/start-runner.sh | bash -s -- -n ${RUNNER_NAME} -f
276+
`, string(dockerHubToken), DefaultOptions.Testrig, DefaultOptions.NatsURL, DefaultOptions.NatsUsername, DefaultOptions.NatsPassword, ghToken, runnerName)
275277

276278
udBytes, err := PrepareCloudInitUserData(userData, script)
277279
if err != nil {

pkg/providers/firecracker/opts.go

+4
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ type Options struct {
4545
NatsURL string
4646
NatsUsername string
4747
NatsPassword string
48+
49+
Testrig bool
4850
}
4951

5052
var DefaultOptions = NewOptions()
@@ -76,6 +78,8 @@ func (opts *Options) AddFlags(fs *pflag.FlagSet) {
7678
fs.IntVar(&opts.NumInstances, "firecracker.num-instances", opts.NumInstances, "Number of parallel instances")
7779
fs.Int64Var(&opts.VcpuCount, "firecracker.vcpu-count", opts.VcpuCount, "Vcpu count for a single instance")
7880
fs.Int64Var(&opts.MemSizeMib, "firecracker.mem-size-mib", opts.MemSizeMib, "Size(MiB) of memory for a single instance")
81+
82+
fs.BoolVar(&opts.Testrig, "testrig", opts.Testrig, "Prefer testrig")
7983
}
8084

8185
/*

0 commit comments

Comments
 (0)