forked from cloudbase/garm
-
Notifications
You must be signed in to change notification settings - Fork 1
145 lines (123 loc) · 4.82 KB
/
integration-tests.yml
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
138
139
140
141
142
143
144
145
name: Integration Tests
on:
push:
branches:
- test-e2e-wip
jobs:
integration-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Golang
uses: actions/setup-go@v3
with:
go-version-file: go.mod
- run: go version
- name: Setup LXD
uses: canonical/setup-lxd@v0.1.1
- name: Build GARM
run: make build
- name: Setup GARM server
shell: bash
run: |
sudo useradd --shell /usr/bin/false --system --groups lxd --no-create-home garm
sudo mkdir -p /etc/garm /var/log/garm
# Use the LXD bridge IP address as the GARM metadata address.
GARM_METADATA_IP=$(sudo lxc network ls -f json | jq -r '.[] | select(.name=="lxdbr0") | .config."ipv4.address"' | cut -d '/' -f1)
cat > config.toml << EOF
[default]
callback_url = "http://${GARM_METADATA_IP}:9997/api/v1/callbacks/status"
metadata_url = "http://${GARM_METADATA_IP}:9997/api/v1/metadata"
[metrics]
enable = true
disable_auth = false
[jwt_auth]
secret = ")9gk_4A6KrXz9D2u'0@MPea*sd6W'%@5MAWpWWJ3P3EqW~qB!!(Vd$FhNc*eU4vG"
time_to_live = "8760h"
[apiserver]
bind = "0.0.0.0"
port = 9997
use_tls = false
[database]
backend = "sqlite3"
passphrase = "shreotsinWadquidAitNefayctowUrph"
[database.sqlite3]
db_file = "/etc/garm/garm.db"
[[provider]]
name = "lxd_local"
provider_type = "lxd"
description = "Local LXD installation"
[provider.lxd]
unix_socket_path = "/var/snap/lxd/common/lxd/unix.socket"
include_default_profile = false
instance_type = "container"
secure_boot = false
project_name = "default"
url = ""
client_certificate = ""
client_key = ""
tls_server_certificate = ""
[provider.lxd.image_remotes]
[provider.lxd.image_remotes.ubuntu]
addr = "https://cloud-images.ubuntu.com/releases"
public = true
protocol = "simplestreams"
skip_verify = false
[provider.lxd.image_remotes.ubuntu_daily]
addr = "https://cloud-images.ubuntu.com/daily"
public = true
protocol = "simplestreams"
skip_verify = false
[provider.lxd.image_remotes.images]
addr = "https://images.linuxcontainers.org"
public = true
protocol = "simplestreams"
skip_verify = false
[[github]]
name = "mihaelabalutoiu"
description = "github token of user mihaelabalutoiu"
oauth2_token = "${{ secrets.AUTH2_TOKEN_SECRETS }}"
[[github]]
name = "mihaelabalutoiu"
description = "github token of user mihaelabalutoiu-clone"
oauth2_token = "${{ secrets.AUTH2_TOKEN_SECRETS }}"
EOF
sudo mv config.toml /etc/garm/config.toml
sudo chown -R garm:garm /etc/garm /var/log/garm
sudo mv ./bin/* /usr/local/bin/
sudo cp ./contrib/garm.service /etc/systemd/system/garm.service
sudo systemctl daemon-reload
sudo systemctl start garm
wait_open_port() {
local ADDRESS="$1"
local PORT="$2"
local TIMEOUT=30
SECONDS=0
while true; do
if [[ $SECONDS -gt $TIMEOUT ]]; then
echo "ERROR: Port $PORT didn't open at $ADDRESS within $TIMEOUT seconds"
return 1
fi
nc -v -w 5 -z "$ADDRESS" "$PORT" &>/dev/null && break || sleep 1
done
echo "Port $PORT at address $ADDRESS is open"
}
wait_open_port 127.0.0.1 9997
- name: Run integration tests
shell: bash
run: |
export GARM_BASE_URL="http://127.0.0.1:9997"
export GARM_USERNAME='admin'
export GARM_PASSWORD='~Cxe3+Qf;KO~2!I<Jp;5n*UJk_r4O*&jAfw(W0YHZSL8g`@uGc)vr8l24)zA;_n6'
export GARM_FULLNAME='test-fullname'
export GARM_EMAIL='test@example.com'
export GARM_NAME='local_garm'
export CREDENTIALS_NAME='mihaelabalutoiu'
export REPO_WEBHOOK_SECRET='RRf&Re)qjTK$EHGA84nYvZg'
export ORG_WEBHOOK_SECRET='RRf&Re)qjTK$EHGA84nYvZg'
go run integration/e2e.go || sudo journalctl -u garm --no-pager
- name: Show GARM logs
run: |
sudo systemctl status garm
sudo journalctl -u garm --no-pager