Skip to content

Add GitHub Actions workflows for integration tests #3

Add GitHub Actions workflows for integration tests

Add GitHub Actions workflows for integration tests #3

name: Integration Tests
on:
push:
branches:
- add-integration-tests
jobs:
garm-cli-test:
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: |
set -e
set -o pipefail
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
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
- name: Test GARM API with garm-cli tool
shell: bash
run: |
set -e
set -x
set -o pipefail
GARM_URL="http://127.0.0.1:9997"
ADMIN_USERNAME='admin'
ADMIN_PASWORD='Ma*jirksiCr9esrT8DGQPrfx*XKnBVZo'
garm-cli init --debug \
--name="local_garm" \
--url $GARM_URL \
--email root@localhost \
--username $ADMIN_USERNAME \
--password $ADMIN_PASWORD
garm-cli profile add --debug \
--name="local_garm_2" \
--url $GARM_URL \
--email root@localhost \
--username $ADMIN_USERNAME \
--password $ADMIN_PASWORD
garm-cli profile login --debug \
--username $ADMIN_USERNAME \
--password $ADMIN_PASWORD
garm-cli provider --debug list
garm-cli runner --debug list --all
garm-cli credentials --debug list
garm-cli job --debug list
garm-cli org --debug list
garm-cli repo --debug list
garm-cli enterprise --debug list
garm-cli pool --debug list --all
- name: Show GARM logs
run: |
sudo systemctl status garm
sudo journalctl -u garm --no-pager