#!/bin/bash PROJECT=${PWD##*/} PLATFORM=${PLATFORM:-macos-latest} WORKFLOW=${WORKFLOW:-test.yml} IMAGE=${IMAGE:-runner} SSH_USER=${SSH_USER:-runner} SSH_PASS=${SSH_PASS:-runner} # IMAGE=${IMAGE:-ghcr.io/cirruslabs/macos-ventura-xcode:14.3.1} function cleanup { echo "Cleaning up..." tart stop "$PROJECT" || echo 'failed to stop' if [[ -z ${KEEP} ]]; then echo "cleaning vm $PROJECT" tart delete "$PROJECT" || echo 'failed to delete' set +e tart list | grep "$PROJECT" && echo failed to cleanup && exit 1 else echo retaining vm "$PROJECT" fi } trap cleanup EXIT set -e # always ensure our trap runs echo "Running for project $PROJECT" if [[ ${PLATFORM} =~ "macos" ]]; then tart clone "$IMAGE" "$PROJECT" tart list | grep "$PROJECT" tart get "$PROJECT" tart run "$PROJECT" --dir="${PROJECT}:$PWD" --no-graphics & echo "Waiting for VM to start..." tart ip "$PROJECT" --wait 60 tart get "$PROJECT" passh -p $SSH_PASS ssh $SSH_USER@"$(tart ip "$PROJECT")" -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=accept-new -t "source ~/.zprofile && brew install act" set +e passh -p $SSH_PASS ssh $SSH_USER@"$(tart ip "$PROJECT")" -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=accept-new -t "source ~/.zprofile && cd /Volumes/My\ Shared\ files/${PWD##*/} && act -P ${PLATFORM}=-self-hosted -W ${WORKFLOW} $*" ACT_EXIT_CODE=$? set -e fi if [[ ${ACT_EXIT_CODE} != "" ]]; then echo $ACT_EXIT_CODE exit $ACT_EXIT_CODE else exit 0 fi