-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests: use github actions instead of circleci for test running
- Loading branch information
1 parent
3c5a3fd
commit a7465f9
Showing
16 changed files
with
438 additions
and
297 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,116 +1,13 @@ | ||
version: 2.1 | ||
|
||
commands: | ||
init-tests: | ||
description: "Setup dokku for testing" | ||
steps: | ||
- checkout | ||
- attach_workspace: | ||
at: /home/circleci/project | ||
- run: | ||
name: resolve dokku.me | ||
command: | | ||
# dokku.me now resolves to 10.0.0.2. add 10.0.0.2/24 to ens4 | ||
# this is maybe eth0 on github | ||
ifconfig | ||
sudo ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev ens4 | ||
- run: | ||
name: install ci-dependencies | ||
command: make ci-dependencies | ||
- run: | ||
name: setup tests | ||
command: ./tests/ci/setup.sh | ||
- run: | ||
name: dokku cleanup:skip | ||
command: echo 'export DOKKU_SKIP_CLEANUP=true' | sudo tee /home/dokku/.dokkurc/dokku_skip_cleanup | ||
- run: | ||
name: dokku report | ||
command: dokku report | ||
|
||
executors: | ||
default: | ||
machine: | ||
image: ubuntu-1604:201903-01 | ||
working_directory: /home/circleci/project | ||
|
||
jobs: | ||
build: | ||
executor: default | ||
steps: | ||
- checkout | ||
- run: | ||
name: build package | ||
command: ./tests/ci/setup.sh build | ||
- persist_to_workspace: | ||
root: /home/circleci/project | ||
paths: | ||
- build | ||
- store_artifacts: | ||
path: /home/circleci/project/build/dokku.deb | ||
- store_artifacts: | ||
path: /home/circleci/project/build/dokku.rpm | ||
docker-deploy-tests: | ||
executor: default | ||
steps: | ||
- init-tests | ||
- run: | ||
name: run docker deploy tests | ||
shell: /bin/bash | ||
no_output_timeout: 20 | ||
command: | | ||
./tests/ci/setup.sh docker | ||
DOKKU_SSH_PORT=3022 sudo -E make -e test-ci-docker | ||
go-tests: | ||
executor: default | ||
parallelism: 4 | ||
steps: | ||
- init-tests | ||
- run: | ||
name: run go tests | ||
command: | | ||
case $CIRCLE_NODE_INDEX in | ||
0) sudo -E make -e lint-ci go-tests ci-go-coverage ;; | ||
1) sudo -E make -e deploy-test-checks-root deploy-test-config ;; | ||
2) sudo -E make -e deploy-test-multi ;; | ||
3) sudo -E make -e deploy-test-go-fail-predeploy deploy-test-go-fail-postdeploy ;; | ||
esac | ||
- store_artifacts: | ||
path: ./coverage.out | ||
test: | ||
executor: default | ||
parallelism: 4 | ||
noop: | ||
docker: | ||
- image: cimg/base:2020.01 | ||
steps: | ||
- init-tests | ||
- run: | ||
name: run bats tests | ||
command: | | ||
if ! sudo -E make -e test-ci; then | ||
sudo -E make tests-ci-retry-failed | ||
fi | ||
no_output_timeout: 60m | ||
shell: /bin/bash | ||
- run: | ||
name: output oomkills | ||
command: cat /var/log/syslog | ||
when: on_fail | ||
- store_artifacts: | ||
path: ./test-results | ||
destination: test-results | ||
- store_test_results: | ||
path: test-results | ||
- run: echo "this is a noop" | ||
|
||
workflows: | ||
workflow: | ||
noop: | ||
jobs: | ||
- build | ||
- docker-deploy-tests: | ||
requires: | ||
- build | ||
- test | ||
- go-tests: | ||
requires: | ||
- build | ||
- test: | ||
requires: | ||
- build | ||
- go-tests | ||
- noop |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
#!/usr/bin/env bash | ||
set -eo pipefail | ||
|
||
main() { | ||
declare FILE_NAME="$1" | ||
|
||
mkdir -p test-results/bats | ||
pushd tests/unit >/dev/null | ||
bats --report-formatter junit --output ../../test-results/bats "$FILE_NAME.bats" | ||
popd >/dev/null | ||
|
||
ls -lah test-results/bats | ||
} | ||
|
||
main "$@" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
#!/usr/bin/env bash | ||
set -eo pipefail | ||
|
||
echo "=====> resolve dokku.me" | ||
sudo apt -qq -y --no-install-recommends install net-tools | ||
# dokku.me now resolves to 10.0.0.2. add 10.0.0.2/24 to eth0 | ||
ifconfig | ||
sudo ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev eth0 | ||
|
||
echo "=====> install ci-dependencies" | ||
make ci-dependencies | ||
|
||
echo "=====> setup tests" | ||
./tests/ci/setup.sh | ||
|
||
echo "=====> dokku cleanup:skip" | ||
echo 'export DOKKU_SKIP_CLEANUP=true' | sudo tee /home/dokku/.dokkurc/dokku_skip_cleanup | ||
|
||
echo "=====> dokku report" | ||
dokku report |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
#!/usr/bin/env python | ||
import json | ||
import os | ||
|
||
keys = ["index"] | ||
values = [[s.replace(".bats", "") for s in os.listdir("tests/unit/") if s.endswith(".bats")]] | ||
zi = zip(keys, values) | ||
data = json.dumps(dict(zi)) | ||
print(data.replace(" ", "")) |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
name: CI | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- '*' | ||
push: | ||
branches: | ||
- 'master' | ||
|
||
jobs: | ||
build: | ||
name: build | ||
runs-on: ubuntu-16.04 | ||
outputs: | ||
matrix: ${{ steps.set-matrix.outputs.matrix }} | ||
strategy: | ||
fail-fast: true | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: build package | ||
run: ./tests/ci/setup.sh build | ||
|
||
- name: set matrix for build | ||
id: set-matrix | ||
run: | | ||
json=$(python .github/commands/matrix) | ||
echo $json | ||
echo "::set-output name=matrix::$(echo "$json")" | ||
- name: upload packages | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: build | ||
path: build | ||
|
||
unit-tests: | ||
name: unit.${{ matrix.index }} | ||
needs: build | ||
runs-on: ubuntu-16.04 | ||
strategy: | ||
fail-fast: false | ||
matrix: ${{fromJson(needs.build.outputs.matrix)}} | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: download packages | ||
uses: actions/download-artifact@v1 | ||
with: | ||
name: build | ||
|
||
- name: ci-setup | ||
run: ./.github/commands/ci-setup | ||
|
||
# - name: start ssh session | ||
# uses: luchihoratiu/debug-via-ssh@main | ||
# with: | ||
# NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }} | ||
# SSH_PASS: ${{ secrets.SSH_PASS }} | ||
|
||
- name: run ci | ||
timeout-minutes: 30 | ||
run: sudo -E ./.github/commands/ci-run ${{ matrix.index }} | ||
|
||
- uses: actions/upload-artifact@v2 | ||
with: | ||
name: test-results-${{ matrix.index }} | ||
path: test-results | ||
|
||
docker-deploy-tests: | ||
name: docker | ||
needs: build | ||
runs-on: ubuntu-16.04 | ||
strategy: | ||
fail-fast: false | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: download packages | ||
uses: actions/download-artifact@v1 | ||
with: | ||
name: build | ||
|
||
- name: ci-setup | ||
run: ./.github/commands/ci-setup | ||
|
||
- name: test docker deploys | ||
shell: bash | ||
timeout-minutes: 20 | ||
run: | | ||
./tests/ci/setup.sh docker | ||
DOKKU_SSH_PORT=3022 sudo -E make -e test-ci-docker | ||
go-tests: | ||
name: go.${{ matrix.index }} | ||
needs: build | ||
runs-on: ubuntu-16.04 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
index: [0, 1, 2, 3] | ||
env: | ||
GITHUB_NODE_INDEX: ${{ matrix.index }} | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: download packages | ||
uses: actions/download-artifact@v1 | ||
with: | ||
name: build | ||
|
||
- name: ci-setup | ||
run: ./.github/commands/ci-setup | ||
|
||
- name: run go tests | ||
run: | | ||
export CIRCLE_SHA1=$GITHUB_SHA | ||
echo "CODACY_TOKEN=$CODACY_TOKEN" | ||
if [ "$CODACY_TOKEN" != "" ]; then | ||
echo "Detected value for CODACY_TOKEN" | ||
fi | ||
case $GITHUB_NODE_INDEX in | ||
0) sudo -E make -e lint-ci go-tests ci-go-coverage ;; | ||
1) sudo -E make -e deploy-test-checks-root deploy-test-config ;; | ||
2) sudo -E make -e deploy-test-multi ;; | ||
3) sudo -E make -e deploy-test-go-fail-predeploy deploy-test-go-fail-postdeploy ;; | ||
esac | ||
- uses: actions/upload-artifact@v2 | ||
with: | ||
name: coverage.${{ matrix.index }} | ||
path: test-results/coverage | ||
|
||
publish-test-results: | ||
name: publish-test-results | ||
needs: unit-tests | ||
runs-on: ubuntu-16.04 | ||
# the build-and-test job might be skipped, we don't need to run this job then | ||
if: success() || failure() | ||
|
||
steps: | ||
- name: download test-results | ||
uses: actions/download-artifact@v2 | ||
with: | ||
path: test-results | ||
|
||
- name: Publish Unit Test Results | ||
uses: docker://ghcr.io/enricomi/publish-unit-test-result-action:v1.6 | ||
with: | ||
check_name: Unit Test Results | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
files: test-results/**/*.xml | ||
comment_on_pr: false |
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
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
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
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
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
Oops, something went wrong.