Thanks for the ideas everyone. I did something similar but with GitHub Actions:
name: Test bundle
- uses: actions/checkout@v2
#- uses: mxschmitt/action-tmate@v3
- run: sudo snap install juju --classic
- run: sudo snap install juju-wait --classic
- run: sudo juju bootstrap localhost --config test-mode=true --config automatically-retry-hooks=false
- run: sudo juju deploy ./bundle.yaml
- run: sudo /snap/bin/juju-wait -wv
- run: sudo juju status
Once I commit the code to my github repo, github actions creates an ubuntu VM and installs juju and bootstraps on LXD and deploys my bundle.
I would consider using an ssh action to ssh to an existing juju controller host somewhere and run the deploy there too. It could even be conditional to this local run exiting successfully.