54 lines
1.4 KiB
YAML
Executable File
54 lines
1.4 KiB
YAML
Executable File
workflow:
|
|
rules:
|
|
- changes:
|
|
- proxy/**/*
|
|
- Dockerfile
|
|
- requirements.txt
|
|
|
|
stages:
|
|
- build
|
|
- test
|
|
- push
|
|
|
|
|
|
build:
|
|
stage: build
|
|
script:
|
|
- docker build -t $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG .
|
|
- docker tag $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_SHORT_SHA
|
|
- docker tag $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG $CI_REGISTRY/$CI_PROJECT_PATH:latest
|
|
|
|
test:
|
|
needs:
|
|
- build
|
|
stage: test
|
|
before_script:
|
|
- apk add --no-cache curl
|
|
script:
|
|
- echo "Running container to test image"
|
|
- docker run -d --rm --name test_container $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG
|
|
- CONTAINER_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' test_container)
|
|
- |
|
|
echo "Waiting for the application to start..."
|
|
sleep 10
|
|
if curl --fail http://$CONTAINER_IP:5050/health; then
|
|
echo "Healthcheck passed"
|
|
else
|
|
echo "Healthcheck failed, stopping push"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
after_script:
|
|
- docker rm -f test_container
|
|
|
|
push:
|
|
needs:
|
|
- test
|
|
stage: push
|
|
script:
|
|
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
|
|
- docker push $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_SHORT_SHA
|
|
- docker push $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG
|
|
- docker push $CI_REGISTRY/$CI_PROJECT_PATH:latest
|