|
| 1 | +#!/bin/bash |
| 2 | +set -e |
| 3 | + |
| 4 | +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| 5 | +cd "$SCRIPT_DIR/../../app" |
| 6 | + |
| 7 | +IMAGE_GHCR="ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG}" |
| 8 | +IMAGE_DOCKERHUB="${DOCKER_USER}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG}" |
| 9 | + |
| 10 | +echo "Building ML Model Service Docker image..." |
| 11 | +docker build -t "$IMAGE_GHCR" . |
| 12 | + |
| 13 | +docker tag "$IMAGE_GHCR" "ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${MOVING_TAG}" |
| 14 | +docker tag "$IMAGE_GHCR" "$IMAGE_DOCKERHUB" |
| 15 | +docker tag "$IMAGE_GHCR" "${DOCKER_USER}/${REPO_NAME,,}:${MOVING_TAG}" |
| 16 | + |
| 17 | +TEST_CONTAINER="test_${COMMIT_TAG}_$$" |
| 18 | +echo "Testing container..." |
| 19 | +docker run -d --name "$TEST_CONTAINER" "$IMAGE_GHCR" |
| 20 | +sleep 15 |
| 21 | + |
| 22 | +# Test health endpoint |
| 23 | +echo "Testing health endpoint..." |
| 24 | +if docker exec "$TEST_CONTAINER" python -c "import requests; r = requests.get('http://localhost:8000/health'); assert r.status_code == 200" 2>/dev/null; then |
| 25 | + echo "✅ Health check passed" |
| 26 | +else |
| 27 | + echo "⚠️ Health check failed, but continuing..." |
| 28 | +fi |
| 29 | + |
| 30 | +docker stop "$TEST_CONTAINER" |
| 31 | +docker rm "$TEST_CONTAINER" |
| 32 | + |
| 33 | +echo "Pushing to registries..." |
| 34 | +echo "${GITHUB_PAT}" | docker login ghcr.io -u "${OWNER_NAME}" --password-stdin |
| 35 | + |
| 36 | +docker push "$IMAGE_GHCR" |
| 37 | +docker push "ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${MOVING_TAG}" |
| 38 | + |
| 39 | +echo "${DOCKER_PASS}" | docker login -u "${DOCKER_USER}" --password-stdin |
| 40 | + |
| 41 | +docker push "$IMAGE_DOCKERHUB" |
| 42 | +docker push "${DOCKER_USER}/${REPO_NAME,,}:${MOVING_TAG}" |
0 commit comments