-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathindex.js
76 lines (64 loc) · 2.11 KB
/
index.js
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
const core = require('@actions/core');
const { exec } = require('@actions/exec');
const path = require("path");
async function registerRunnerCmd() {
let cmdArgs = [];
cmdArgs.push(`--rm`)
cmdArgs.push(`-v`, `/srv/gitlab-runner/config:/etc/gitlab-runner`)
cmdArgs.push(`gitlab/gitlab-runner`)
cmdArgs.push(`register`)
cmdArgs.push(`--non-interactive`)
cmdArgs.push(`--executor`, `docker`)
cmdArgs.push(`--docker-image`, core.getInput('docker-image'))
cmdArgs.push(`--url`, `https://gitlab.com/`)
cmdArgs.push(`--registration-token`, core.getInput('registration-token'))
cmdArgs.push(`--name`, core.getInput('name'))
cmdArgs.push(`--tag-list`, core.getInput('tag-list'))
cmdArgs.push(`--docker-privileged`, true)
cmdArgs.push(`--locked="false"`)
cmdArgs.push(`--access-level="${core.getInput('access-level')}"`)
cmdArgs.push(`--run-untagged="${core.getInput('run-untagged')}"`)
await exec('docker run', cmdArgs);
}
async function unregisterRunnerCmd() {
let cmdArgs = [];
cmdArgs.push(`--rm`)
cmdArgs.push(`-v`, `/srv/gitlab-runner/config:/etc/gitlab-runner`)
cmdArgs.push(`gitlab/gitlab-runner`)
cmdArgs.push(`unregister`)
cmdArgs.push(`--name`, core.getInput('name'))
await exec('docker run', cmdArgs);
}
async function startRunnerCmd() {
let cmdArgs = []
cmdArgs.push(`-d`)
cmdArgs.push(`--name`, `gitlab-runner`)
cmdArgs.push(`--restart`, `always`)
cmdArgs.push(`-v`, `/srv/gitlab-runner/config:/etc/gitlab-runner`)
cmdArgs.push(`-v`, `/var/run/docker.sock:/var/run/docker.sock`)
cmdArgs.push(`gitlab/gitlab-runner`)
await exec('docker run', cmdArgs);
}
async function stopRunnerCmd() {
let cmdArgs = []
cmdArgs.push(`gitlab-runner`)
await exec('docker stop ', cmdArgs);
await exec('docker rm ', cmdArgs);
}
async function checkJob(){
await exec(`${path.resolve(__dirname, "dist")}/check-job.sh`)
}
async function registerRunner() {
try{
await registerRunnerCmd()
await startRunnerCmd()
await checkJob()
}finally{
await unregisterRunner()
}
}
async function unregisterRunner() {
await stopRunnerCmd()
await unregisterRunnerCmd()
}
registerRunner()