Skip to content

feat(docker): local dev stack built from source #2

feat(docker): local dev stack built from source

feat(docker): local dev stack built from source #2

Workflow file for this run

name: Docker CI
on:
pull_request:
paths:
- ".github/workflows/docker-ci.yml"
- "docker/**"
- "docker-compose*.yml"
- "Dockerfile"
- "package.json"
- "src/**"
- "util/**"
- "Gruntfile.js"
- "webpack.config.js"
push:
branches: [master, main]
paths:
- ".github/workflows/docker-ci.yml"
- "docker/**"
- "docker-compose*.yml"
- "Dockerfile"
- "package.json"
- "src/**"
- "util/**"
- "Gruntfile.js"
- "webpack.config.js"
concurrency:
group: docker-ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-merged:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v6.0.3
- uses: docker/setup-buildx-action@v4.1.0
- name: Build merged image
uses: docker/build-push-action@v7.2.0
with:
context: .
file: docker/Dockerfile
build-args: |
OWL2VOWL_GIT_REF=master
tags: webvowl:ci
load: true
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Smoke test (healthcheck + convert)
run: |
docker run -d --name webvowl-ci -p 8080:8080 webvowl:ci
for i in $(seq 1 40); do
if curl -sf http://127.0.0.1:8080/serverTimeStamp; then
echo "serverTimeStamp OK"
break
fi
sleep 3
done
curl -sf http://127.0.0.1:8080/serverTimeStamp
curl -sfL -o /tmp/foaf.rdf \
https://raw.githubusercontent.com/VisualDataWeb/OWL2VOWL/master/ontologies/foaf.rdf
curl -sf -X POST \
-F "ontology=@/tmp/foaf.rdf" \
-F "sessionId=ci" \
http://127.0.0.1:8080/convert | head -c 80
docker logs webvowl-ci 2>&1 | tail -20
docker rm -f webvowl-ci
build-frontend:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v6.0.3
- uses: docker/setup-buildx-action@v4.1.0
- name: Build frontend-only image
uses: docker/build-push-action@v7.2.0
with:
context: .
file: docker/Dockerfile.frontend
tags: webvowl:frontend-ci
load: true
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Smoke test
run: |
docker run -d --name webvowl-fe-ci -p 8080:8080 webvowl:frontend-ci
for i in $(seq 1 30); do
if curl -sf -o /dev/null http://127.0.0.1:8080/; then
echo "frontend OK"
docker rm -f webvowl-fe-ci
exit 0
fi
sleep 3
done
docker logs webvowl-fe-ci
docker rm -f webvowl-fe-ci
exit 1