Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

14 add continuous integration test with GitHub actions #15

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

name: Run tests

on:
workflow_dispatch:
pull_request:
push:

jobs:
build-and-test:
runs-on: ubuntu-latest

permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Test people.json is valid JSON
run: |
python3 -c 'import json; json.load(open("people.json"))'

- name: Test image builds
run: |
docker compose -f compose.yml build

- name: Test container can start and is healthy
run: |
# Launch the project from docker-compose.yml and wait up to
# 30s for its built-in health check to return "healthy"
if ! docker compose -f compose.yml up --wait --wait-timeout 30; then
docker compose logs
docker inspect --format='{{json .State.Health}}' rse-skills-graph-web-1 | jq
exit 1
fi
docker compose -f compose.yml down

# - name: Run Pytest tests
# run: |
# docker compose -f compose.yml run --entrypoint "" web pytest
7 changes: 6 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ FROM ubuntu:18.04
MAINTAINER "Ian Hinder <[email protected]>"

RUN apt-get update -y && \
apt-get install -y python3 python3-pip python3-requests graphviz libgraphviz-dev && \
apt-get install -y python3 python3-pip python3-requests graphviz libgraphviz-dev curl && \
rm -rf /var/lib/apt/lists/*

COPY ./requirements.txt /app/requirements.txt
Expand All @@ -21,3 +21,8 @@ ENV LAST_UPDATE=$last_update
ENTRYPOINT [ "python3" ]

CMD [ "application.py" ]

# TODO: in docker 25 and later, we should use --start-interval and
# --start-period to perform more frequent checks on startup to speed
# up tests
HEALTHCHECK --interval=10s CMD curl --fail http://localhost:5000 || exit 1
5 changes: 5 additions & 0 deletions compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
services:
web:
build: .
ports:
- "5000:5000"