|
1 | 1 | #!/bin/bash |
2 | 2 | set -e |
3 | 3 |
|
4 | | -required_vars=("COMMIT_TAG" "ENV_TAG" "MOVING_TAG" "OWNER_NAME" "REPO_NAME" "GITHUB_PAT" "DOCKER_USER" "DOCKER_PASS") |
5 | | -for var in "${required_vars[@]}"; do |
6 | | - if [ -z "${!var}" ]; then |
7 | | - echo "Error: Required environment variable $var is not set" |
8 | | - exit 1 |
9 | | - fi |
10 | | -done |
| 4 | +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| 5 | +cd "$SCRIPT_DIR/../../app" |
11 | 6 |
|
12 | | -# Navigate to app directory |
13 | | -cd ../../app |
| 7 | +IMAGE_GHCR="ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG}" |
| 8 | +IMAGE_DOCKERHUB="${DOCKER_USER}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG}" |
14 | 9 |
|
15 | | -# Build Docker image with commit SHA + environment tag |
16 | | -docker build -t ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG} . > /dev/null 2>&1 |
| 10 | +echo "Building Docker image..." |
| 11 | +docker build -t "$IMAGE_GHCR" . |
17 | 12 |
|
18 | | -# Tag with moving tag |
19 | | -docker tag ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG} ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${MOVING_TAG} > /dev/null 2>&1 |
| 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}" |
20 | 16 |
|
21 | | -# Tag for Docker Hub |
22 | | -docker tag ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG} ${DOCKER_USER}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG} > /dev/null 2>&1 |
23 | | -docker tag ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG} ${DOCKER_USER}/${REPO_NAME,,}:${MOVING_TAG} > /dev/null 2>&1 |
24 | | - |
25 | | -# Test the container (10 second timeout) |
26 | | -docker run -d --name test_container ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG} > /dev/null 2>&1 || exit 1 |
| 17 | +TEST_CONTAINER="test_${COMMIT_TAG}_$$" |
| 18 | +echo "Testing container..." |
| 19 | +docker run -d --name "$TEST_CONTAINER" "$IMAGE_GHCR" |
27 | 20 | sleep 10 |
28 | | -docker stop test_container > /dev/null 2>&1 || true |
29 | | -docker rm test_container > /dev/null 2>&1 || true |
| 21 | +docker stop "$TEST_CONTAINER" |
| 22 | +docker rm "$TEST_CONTAINER" |
30 | 23 |
|
31 | | -# Login to GitHub Container Registry |
32 | | -echo "${GITHUB_PAT}" | docker login ghcr.io -u "${OWNER_NAME}" --password-stdin > /dev/null 2>&1 |
| 24 | +echo "Pushing to registries..." |
| 25 | +echo "${GITHUB_PAT}" | docker login ghcr.io -u "${OWNER_NAME}" --password-stdin |
33 | 26 |
|
34 | | -# Push to GHCR |
35 | | -docker push ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG} > /dev/null 2>&1 |
36 | | -docker push ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${MOVING_TAG} > /dev/null 2>&1 |
| 27 | +docker push "$IMAGE_GHCR" |
| 28 | +docker push "ghcr.io/${OWNER_NAME,,}/${REPO_NAME,,}:${MOVING_TAG}" |
37 | 29 |
|
38 | | -# Login to Docker Hub |
39 | | -echo "${DOCKER_PASS}" | docker login -u "${DOCKER_USER}" --password-stdin > /dev/null 2>&1 |
| 30 | +echo "${DOCKER_PASS}" | docker login -u "${DOCKER_USER}" --password-stdin |
40 | 31 |
|
41 | | -# Push to Docker Hub |
42 | | -docker push ${DOCKER_USER}/${REPO_NAME,,}:${COMMIT_TAG}-${ENV_TAG} > /dev/null 2>&1 |
43 | | -docker push ${DOCKER_USER}/${REPO_NAME,,}:${MOVING_TAG} > /dev/null 2>&1 |
| 32 | +docker push "$IMAGE_DOCKERHUB" |
| 33 | +docker push "${DOCKER_USER}/${REPO_NAME,,}:${MOVING_TAG}" |
0 commit comments