For continuous integration testing we have the following:
gitactions
script which runs whenever a PR is pushed:
- Uses
docker-compose
to startpebble
(letsencrypt test server) andchalltestsrv
(minimal dns client for pebble) - Then runs the
bats
test scripts (all the files with a ".bats" extension) for each OS (alpine, centos6, debian, ubuntu) - Runs the
bats
test script against the staging server (using ubuntu docker image and duckdns.org)
Tests can also be triggered manually from the GitHub website.
For dynamic DNS tests, you need accounts on duckdns.org and dynu.com, and need to create 4 domain names in each account.
For duckdns.org:
- Add DUCKDNS_TOKEN to your repository's environment secrets. The value is your account's token
- Add domains -centos7-getssl.duckdns.org, wild--centos7.duckdns.org, -ubuntu-getssl.duckdns.org, and wild--ubuntu-getssl.duckdns.org
For dynu.com:
- Add DYNU_API_KEY to your repository's environment secrets. The value is your account's API Key.
- Add domains -centos7-getssl.freedns.org, wild--centos7.freedns.org, -ubuntu-getssl.freedns.org, and wild--ubuntu-getssl.freedns.org
To run dynamic DNS tests outside the CI environment, you need accounts without in the domain names. Export the environment variable corresponding to the secrets (with the same values).
For individual accounts, is your github account name.
- Start
pebble
andchalltestsrv
usingdocker-compose up -d --build
- Run the test suite
run-test.sh [<os>]
- eg.
run-test.sh ubuntu16
- Start
pebble
andchalltestsrv
usingdocker-compose up -d --build
run-test.sh <os> bats <bats test script>
- e.g.
run-test.sh ubuntu bats /getssl/test/1-simple-http01.bats
- Start
pebble
andchalltestsrv
usingdocker-compose up -d --build
run-test.sh <os> /getssl/test/debug-test.sh <getssl config file>
- e.g.
run-test.sh ubuntu /getssl/test/debug-test.sh -d /getssl/test/test-config/getssl-http01-cfg
- Test wildcards
- Test SSH, SFTP, SCP
- Test change of key algorithm (should automatically delete and re-create account.key)