Use GitHub Actions #2
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
permissions: | |
contents: read | |
pull-requests: read | |
jobs: | |
test-linux: | |
name: Test on Linux | |
runs-on: ubuntu-latest | |
env: | |
GO_VERSION: oldstable | |
steps: | |
- name: Setup /etc/hosts | |
run: | | |
echo "127.0.0.1 example.letsencrypt.org" | sudo tee -a /etc/hosts | |
echo "127.0.0.1 elpmaxe.letsencrypt.org" | sudo tee -a /etc/hosts | |
# https://github.com/marketplace/actions/checkout | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
# https://github.com/marketplace/actions/setup-go-environment | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
- name: apt install | |
run: sudo apt-get install snapd python3-acme python3-josepy | |
- name: snap install | |
run: sudo snap install core && sudo snap refresh core | |
- name: snap install certbot | |
run: sudo snap install --classic certbot && sudo ln -s /snap/bin/certbot /usr/bin/certbot | |
- name: go install tools | |
run: go install golang.org/x/tools/cmd/cover@latest | |
- name: go install goveralls | |
run: go install github.com/mattn/goveralls@latest | |
# Clone Boulder because the go.mod contains `exclude` directives, | |
# and so the load-generator cannot be installed with a simple `go install` | |
- name: Checkout Boulder repository (load-generator) | |
uses: actions/checkout@v4 | |
with: | |
repository: letsencrypt/boulder | |
path: boulder | |
ref: release-2024-02-20 | |
- name: install load-generator | |
run: | | |
cd $GITHUB_WORKSPACE/boulder/test/load-generator | |
go install | |
cd - | |
- name: go install | |
run: go install -v -race ./... | |
- name: launch pebble | |
run: GORACE="halt_on_error=1" PEBBLE_WFE_NONCEREJECT=0 pebble & | |
# Run project unit tests (with the race detector enabled and atomic coverage profile collection) | |
- name: unittests | |
run: go test -v -race -covermode=atomic -coverprofile=coverage.out ./... | |
# # Upload collected coverage profile to goveralls | |
# - name: goveralls | |
# run: goveralls -coverprofile=coverage.out -service=github | |
# Perform a test issuance with chisel2.py | |
- name: chisel | |
run: REQUESTS_CA_BUNDLE=./test/certs/pebble.minica.pem python ./test/chisel2.py example.letsencrypt.org elpmaxe.letsencrypt.org | |
# Run the load-generator briefly - note, because Pebble isn't using the | |
# load-generator's mock DNS server none of the issuances will succeed. This | |
# step is performed just to shake out data races with concurrent requests. | |
- name: load-generator | |
run: load-generator -config ./test/config/load-generator-config.json > /dev/null |