diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 4b5f117f..86da6bb1 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -64,8 +64,8 @@ jobs: go run ./test/integration/main.go 2>&1 | tee /artifacts-logs/e2e.log env: GARM_BASE_URL: ${{ steps.ngrok.outputs.tunnel-url }} - ORG_NAME: gsamfira - REPO_NAME: garm-testing + ORG_NAME: test-garm-org + REPO_NAME: test-garm-repo CREDENTIALS_NAME: test-garm-creds WORKFLOW_FILE_NAME: test.yml GH_TOKEN: ${{ secrets.GH_OAUTH_TOKEN }} @@ -94,6 +94,6 @@ jobs: go run ./test/integration/gh_cleanup/main.go env: GARM_BASE_URL: ${{ steps.ngrok.outputs.tunnel-url }} - ORG_NAME: gsamfira - REPO_NAME: garm-testing + ORG_NAME: test-garm-org + REPO_NAME: test-garm-repo GH_TOKEN: ${{ secrets.GH_OAUTH_TOKEN }} diff --git a/test/integration/config/config.toml b/test/integration/config/config.toml index 8fbd139c..dcf5c871 100644 --- a/test/integration/config/config.toml +++ b/test/integration/config/config.toml @@ -50,6 +50,14 @@ description = "Local LXD installation" protocol = "simplestreams" skip_verify = false +[[provider]] +name = "test_external" +description = "external test provider" +provider_type = "external" + [provider.external] + config_file = "/home/runner/work/garm/garm/integration/config/config_file" + provider_executable = "/home/runner/work/garm/garm/integration/scripts/garm-external-provider" + [[github]] name = "${CREDENTIALS_NAME}" description = "GARM GitHub OAuth token" diff --git a/test/integration/config/config_file b/test/integration/config/config_file new file mode 100644 index 00000000..e69de29b diff --git a/test/integration/scripts/garm-external-provider b/test/integration/scripts/garm-external-provider new file mode 100755 index 00000000..88e6f46e --- /dev/null +++ b/test/integration/scripts/garm-external-provider @@ -0,0 +1,56 @@ +#!/bin/bash + +set -e +set -o pipefail + +if [ ! -t 0 ] +then + INPUT=$(cat -) +fi + +if [ -z "$GARM_PROVIDER_CONFIG_FILE" ] +then + echo "no config file specified in env" + exit 1 +fi + +source "$GARM_PROVIDER_CONFIG_FILE" + +function CreateInstance() { + if [ -z "$INPUT" ]; then + echo "expected build params in stdin" + exit 1 + fi + + jq -rnc '{"provider_id": "test-provider-id", "name": "test-instance-name", "os_type": "linux", "os_name": "ubuntu", "os_version": "20.04", "os_arch": "x86_64", "status": "running"}' +} + +case "$GARM_COMMAND" in + "CreateInstance") + CreateInstance + ;; + "DeleteInstance") + echo "RemoveAllInstances not implemented" + exit 1 + ;; + "GetInstance") + echo "Get instance with id: ${GARM_INSTANCE_ID}" + ;; + "ListInstances") + echo "List instances with pool id: ${GARM_POOL_ID}" + ;; + "StartInstance") + echo "Start instance: ${GARM_INSTANCE_NAME} with id: ${GARM_INSTANCE_ID}" + ;; + "StopInstance") + echo "Stop instance: ${GARM_INSTANCE_NAME} with id: ${GARM_INSTANCE_ID}" + ;; + "RemoveAllInstances") + echo "RemoveAllInstances not implemented" + exit 1 + ;; + *) + echo "Invalid GARM provider command: \"$GARM_COMMAND\"" + exit 1 + ;; +esac diff --git a/test/integration/scripts/setup-garm.sh b/test/integration/scripts/setup-garm.sh index 525c2f92..8807c0b1 100755 --- a/test/integration/scripts/setup-garm.sh +++ b/test/integration/scripts/setup-garm.sh @@ -24,7 +24,7 @@ function generate_secret() { function wait_open_port() { local ADDRESS="$1" local PORT="$2" - local TIMEOUT=30 + local TIMEOUT=60 SECONDS=0 while true; do if [[ $SECONDS -gt $TIMEOUT ]]; then