File tree 7 files changed +191
-18
lines changed
7 files changed +191
-18
lines changed Original file line number Diff line number Diff line change 1
1
binaries
2
- * /binaries
2
+ * /binaries
3
+ .terraform
4
+ * .tfstate *
Original file line number Diff line number Diff line change 1
1
stages :
2
+ - register
2
3
- images
4
+ - unregister
3
5
4
6
.image :
5
7
image : docker:17.12
@@ -16,17 +18,54 @@ stages:
16
18
script :
17
19
- make all
18
20
19
- test :
20
- extends : .image
21
+ .runner :
22
+ image :
23
+ name : hashicorp/terraform:0.12.17
24
+ entrypoint : [""]
25
+ before_script :
26
+ - export RUNNER_ARCH=$(echo $CI_JOB_NAME|sed 's,.*:,,g')
27
+ - cd ci/scway/$RUNNER_ARCH
28
+ - terraform init
29
+
30
+ # test:arm:
31
+ # extends: .image
32
+ # script:
33
+ # - make build
34
+ # except:
35
+ # - master
36
+
37
+ # img:arm:
38
+ # extends: .image
39
+ # only:
40
+ # - master
41
+ # environment:
42
+ # name: stable/docker_images
43
+ # url: https://hub.docker.com/r/klud/gitlab-runner/tags/
44
+
45
+ register:arm :
46
+ extends : .runner
47
+ stage : register
48
+ script :
49
+ - terraform apply -auto-approve
50
+
51
+ register:arm64 :
52
+ extends : .runner
53
+ stage : register
54
+ script :
55
+ - terraform apply -auto-approve
56
+
57
+ unregister:arm :
58
+ extends : .runner
59
+ stage : unregister
60
+ script :
61
+ - terraform destroy -auto-approve
62
+ dependencies :
63
+ - register:arm
64
+
65
+ unregister:arm64 :
66
+ extends : .runner
67
+ stage : unregister
21
68
script :
22
- - make build
23
- except :
24
- - master
25
-
26
- runner :
27
- extends : .image
28
- only :
29
- - master
30
- environment :
31
- name : stable/docker_images
32
- url : https://hub.docker.com/r/klud/gitlab-runner/tags/
69
+ - terraform destroy -auto-approve
70
+ dependencies :
71
+ - register:arm64
Original file line number Diff line number Diff line change @@ -24,9 +24,13 @@ version: FORCE
24
24
@echo Brought to you by ulm0
25
25
@echo " ---"
26
26
27
- build :
28
- # Build and push the Docker image
29
- @./ci/build
27
+ build : build-alpine build-ubuntu
28
+
29
+ build-alpine :
30
+ @./ci/build-alpine
31
+
32
+ build-ubuntu :
33
+ @./ci/build-ubuntu
30
34
31
35
push :
32
36
@./ci/release
Original file line number Diff line number Diff line change
1
+ #! /bin/bash
2
+
3
+ set -eo pipefail
4
+
5
+ _docker (){
6
+ docker ${@ }
7
+ }
8
+
9
+ build () {
10
+ echo -e " \033[1mBuilding image: \033[32m${2} \033[0m"
11
+ _docker build --build-arg " ${1} " -t " ${2} " -f " ${3} " " ${4} "
12
+ }
13
+
14
+ build " RUNNER_VERSION=${VERSION} " " ${IMAGE} :${VERSION} " dockerfiles/alpine/Dockerfile dockerfiles/alpine
Original file line number Diff line number Diff line change @@ -11,5 +11,4 @@ build() {
11
11
_docker build --build-arg " ${1} " -t " ${2} " -f " ${3} " " ${4} "
12
12
}
13
13
14
- build " RUNNER_VERSION=${VERSION} " " ${IMAGE} :${VERSION} " dockerfiles/alpine/Dockerfile dockerfiles/alpine
15
14
build " RUNNER_VERSION=${VERSION} " " ${IMAGE} :${VERSION} -ubuntu" dockerfiles/ubuntu/Dockerfile dockerfiles/ubuntu
Original file line number Diff line number Diff line change
1
+ terraform {
2
+ backend "s3" {
3
+ bucket = " ulm0"
4
+ key = " runner/arm.tfstate"
5
+ skip_credentials_validation = true
6
+ skip_region_validation = true
7
+ }
8
+ }
9
+
10
+ provider "scaleway" {
11
+ region = " fr-par"
12
+ zone = " fr-par-1"
13
+ }
14
+
15
+ resource "tls_private_key" "runner_key" {
16
+ algorithm = " RSA"
17
+ rsa_bits = " 4096"
18
+ }
19
+
20
+ data "scaleway_image" "docker" {
21
+ architecture = " arm"
22
+ name = " Docker"
23
+ most_recent = true
24
+ }
25
+
26
+ resource "scaleway_account_ssh_key" "runner_key" {
27
+ name = " runner_key"
28
+ public_key = tls_private_key. runner_key . public_key_openssh
29
+ }
30
+
31
+ data "scaleway_bootscript" "bootscript" {
32
+ architecture = " arm"
33
+ name_filter = " 4.9 latest"
34
+ }
35
+
36
+
37
+ resource "scaleway_server" "runner" {
38
+ name = " runner"
39
+ image = data. scaleway_image . docker . id
40
+ dynamic_ip_required = true
41
+ type = " C1"
42
+ boot_type = " bootscript"
43
+ bootscript = data. scaleway_bootscript . bootscript . id
44
+
45
+ connection {
46
+ type = " ssh"
47
+ user = " root"
48
+ host = self. public_ip
49
+ private_key = tls_private_key. runner_key . private_key_pem
50
+ }
51
+
52
+ provisioner "remote-exec" {
53
+ inline = [
54
+ " docker info" ,
55
+ " uname -a" ,
56
+ ]
57
+ }
58
+ }
Original file line number Diff line number Diff line change
1
+ terraform {
2
+ backend "s3" {
3
+ bucket = " ulm0"
4
+ key = " runner/arm64.tfstate"
5
+ skip_credentials_validation = true
6
+ skip_region_validation = true
7
+ }
8
+ }
9
+
10
+ provider "scaleway" {
11
+ region = " nl-ams"
12
+ zone = " nl-ams-1"
13
+ }
14
+
15
+ resource "tls_private_key" "runner_key" {
16
+ algorithm = " RSA"
17
+ rsa_bits = " 4096"
18
+ }
19
+
20
+ data "scaleway_image" "docker" {
21
+ architecture = " arm64"
22
+ name = " Docker"
23
+ most_recent = true
24
+ }
25
+
26
+ resource "scaleway_account_ssh_key" "runner_key" {
27
+ name = " runner_key"
28
+ public_key = tls_private_key. runner_key . public_key_openssh
29
+ }
30
+
31
+ data "scaleway_bootscript" "bootscript" {
32
+ architecture = " arm64"
33
+ name_filter = " 4.19 latest"
34
+ }
35
+
36
+ resource "scaleway_server" "runner" {
37
+ name = " runner"
38
+ image = data. scaleway_image . docker . id
39
+ dynamic_ip_required = true
40
+ type = " ARM64-2GB"
41
+ boot_type = " bootscript"
42
+ bootscript = data. scaleway_bootscript . bootscript . id
43
+
44
+ connection {
45
+ type = " ssh"
46
+ user = " root"
47
+ host = self. public_ip
48
+ private_key = tls_private_key. runner_key . private_key_pem
49
+ }
50
+
51
+ provisioner "remote-exec" {
52
+ inline = [
53
+ " docker info" ,
54
+ " uname -a" ,
55
+ ]
56
+ }
57
+ }
You can’t perform that action at this time.
0 commit comments