-
Notifications
You must be signed in to change notification settings - Fork 100
91 lines (85 loc) · 3.25 KB
/
test.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
name: Test building and runnint dojo
on: push
jobs:
smoketest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Info gathering
run: |
ls -la /tmp
df -h
- name: Install test dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
# - name: Set up Docker Buildx
# id: buildx
# # Use the action from the master, as we've seen some inconsistencies with @v1
# # Issue: https://github.com/docker/build-push-action/issues/286
# uses: docker/setup-buildx-action@master
# # It only worked for us with this option on 🤷♂️
# with:
# install: true
# - name: Cache Docker layers
# uses: actions/cache@v3
# with:
# path: /tmp/.buildx-cache
# # Key is named differently to avoid collision
# key: ${{ runner.os }}-multi-buildx-outer-${{ github.sha }}
# restore-keys: |
# ${{ runner.os }}-multi-buildx
# - name: Build container
# uses: docker/build-push-action@v2
# with:
# context: .
# builder: ${{ steps.buildx.outputs.name }}
# file: Dockerfile
# # Set the desired build target here
# push: false
# load: true # we want this tag to be loaded to docker images
# tags: dojo-test
# cache-from: type=local,src=/tmp/.buildx-cache
# # Note the mode=max here
# # More: https://github.com/moby/buildkit#--export-cache-options
# # And: https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#cache-to
# cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new
# - name: Move outer cache
# run: |
# rm -rf /tmp/.buildx-cache
# mv /tmp/.buildx-cache-new /tmp/.buildx-cache
# - name: Cache inner container docker layers
# uses: actions/cache@v3
# with:
# path: /tmp/.buildx-cache-inner
# # Key is named differently to avoid collision
# key: ${{ runner.os }}-multi-buildx-inner-${{ github.sha }}
# restore-keys: |
# ${{ runner.os }}-multi-buildx-inner
- name: Build container
run:
docker build -t dojo-test .
- name: Run Container
run: "docker run --privileged -d -v $PWD:/opt/pwn.college:shared -p 2222:22 -p 80:80 -p 443:443 --name dojo dojo-test"
- name: Wait for container to be ready
run: |
until docker exec dojo dojo is-setup-finished
do
sleep 5
docker exec dojo journalctl -u pwn.college | tail -n 5
done
- name: Wait for db to be ready
run: |
docker exec dojo docker exec ctfd apt install wget
until docker exec dojo docker exec ctfd wget db:3306
do
sleep 5
docker exec dojo docker logs db | tail -n 5
done
# - name: Move inner cache
# run: |
# rm -rf /tmp/.buildx-cache-inner
# mv /tmp/.buildx-cache-inner-new /tmp/.buildx-cache-inner
- name: Run tests against container
run: |
pytest ./test || docker exec dojo docker compose logs