diff --git a/.github/workflows/docker_stable.yaml b/.github/workflows/docker_stable.yaml index 3d435e40da..1f3c7749c7 100644 --- a/.github/workflows/docker_stable.yaml +++ b/.github/workflows/docker_stable.yaml @@ -1,4 +1,5 @@ -# Build and push latest docker image on push to master branch +# Build and push docker image on push to 'stable' branch +# Docker build will be uploaded to dockerhub with the 'inventree:stable' tag name: Docker Build diff --git a/.github/workflows/docker_tag.yaml b/.github/workflows/docker_tag.yaml index b3b0c53d12..90b8f72505 100644 --- a/.github/workflows/docker_tag.yaml +++ b/.github/workflows/docker_tag.yaml @@ -1,4 +1,5 @@ -# Publish docker images to dockerhub +# Publish docker images to dockerhub on a tagged release +# Docker build will be uploaded to dockerhub with the 'invetree:' tag name: Docker Publish diff --git a/.github/workflows/docker_test.yaml b/.github/workflows/docker_test.yaml new file mode 100644 index 0000000000..36638784f2 --- /dev/null +++ b/.github/workflows/docker_test.yaml @@ -0,0 +1,41 @@ +# Test that the InvenTree docker image compiles correctly + +# This CI action runs on pushes to either the master or stable branches + +# 1. Build the development docker image (as per the documentation) +# 2. Install requied python libs into the docker container +# 3. Launch the container +# 4. Check that the API endpoint is available + +name: Docker Test + +on: + push: + branches: + - 'master' + - 'stable' + + pull_request: + branches-ignore: + - l10* + +jobs: + + docker: + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + - name: Build Docker Image + run: | + cd docker + docker-compose -f docker-compose.dev.yml build + docker-compose -f docker-compose.dev.yml run inventree-dev-server invoke update + docker-compose -f docker-compose.dev.yml up -d + - name: Sleepy Time + run: sleep 60 + - name: Test API + run: | + pip install requests + python3 ci/check_api_endpoint.py diff --git a/ci/check_api_endpoint.py b/ci/check_api_endpoint.py new file mode 100644 index 0000000000..2969c64792 --- /dev/null +++ b/ci/check_api_endpoint.py @@ -0,0 +1,40 @@ +""" +Test that the root API endpoint is available. +""" + +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +import json +import requests + +# We expect the server to be running on the local host +url = "http://localhost:8000/api/" + +print("Testing InvenTree API endpoint") + +response = requests.get(url) + +assert(response.status_code == 200) + +print("- Response 200 OK") + +data = json.loads(response.text) + +required_keys = [ + 'server', + 'version', + 'apiVersion', + 'worker_running', +] + +for key in required_keys: + assert(key in data) + print(f"- Found key '{key}'") + +# Check that the worker is running +assert(data['worker_running']) + +print("- Background worker is operational") + +print("API Endpoint Tests Passed OK")