Adapt CI command scripts to also support podman

This commit is contained in:
Will Rouesnel
2023-05-29 16:40:07 +10:00
parent 6cf91a2e70
commit f3c740954b
7 changed files with 45 additions and 18 deletions

View File

@@ -10,6 +10,17 @@ YELLOW='\E[1;33m'
export BLUE CYAN GREEN RED RESET YELLOW export BLUE CYAN GREEN RED RESET YELLOW
# Identify docker-like command
# Ensure docker exists
if command -v docker 1>/dev/null 2>&1; then
export docker=docker
elif command -v podman 1>/dev/null 2>&1; then
export docker=podman
else
echo -e "${RED} docker or podman command is not available${RESET}"
exit 1
fi
# Docker Compose # Docker Compose
COMPOSE_PROJECT_NAME="npmdev" COMPOSE_PROJECT_NAME="npmdev"
COMPOSE_FILE="docker/docker-compose.dev.yml" COMPOSE_FILE="docker/docker-compose.dev.yml"

View File

@@ -14,10 +14,10 @@ if [ "$BUILD_COMMIT" == "" ]; then
fi fi
# Buildx Builder # Buildx Builder
docker buildx create --name "${BUILDX_NAME:-npm}" || echo $docker buildx create --name "${BUILDX_NAME:-npm}" || echo
docker buildx use "${BUILDX_NAME:-npm}" $docker buildx use "${BUILDX_NAME:-npm}"
docker buildx build \ $docker buildx build \
--build-arg BUILD_VERSION="${BUILD_VERSION:-dev}" \ --build-arg BUILD_VERSION="${BUILD_VERSION:-dev}" \
--build-arg BUILD_COMMIT="${BUILD_COMMIT:-notset}" \ --build-arg BUILD_COMMIT="${BUILD_COMMIT:-notset}" \
--build-arg BUILD_DATE="$(date '+%Y-%m-%d %T %Z')" \ --build-arg BUILD_DATE="$(date '+%Y-%m-%d %T %Z')" \
@@ -31,6 +31,6 @@ docker buildx build \
. .
rc=$? rc=$?
docker buildx rm "${BUILDX_NAME:-npm}" $docker buildx rm "${BUILDX_NAME:-npm}"
echo -e "${BLUE} ${GREEN}Multiarch build Complete${RESET}" echo -e "${BLUE} ${GREEN}Multiarch build Complete${RESET}"
exit $rc exit $rc

View File

@@ -6,12 +6,17 @@ DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DOCKER_IMAGE=jc21/nginx-full:certbot-node DOCKER_IMAGE=jc21/nginx-full:certbot-node
# Ensure docker exists # Ensure docker exists
if hash docker 2>/dev/null; then if command -v docker 1>/dev/null 2>&1; then
docker pull "${DOCKER_IMAGE}" docker=docker
elif command -v podman 1>/dev/null 2>&1; then
docker=podman
else
echo -e "${RED} docker or podman command is not available${RESET}"
exit 1
fi
$docker pull "${DOCKER_IMAGE}"
cd "${DIR}/../.." cd "${DIR}/../.."
echo -e "${BLUE} ${CYAN}Building Frontend ...${RESET}" echo -e "${BLUE} ${CYAN}Building Frontend ...${RESET}"
docker run --rm -e CI=true -v "$(pwd)/frontend:/app/frontend" -v "$(pwd)/global:/app/global" -w /app/frontend "$DOCKER_IMAGE" sh -c "yarn install && yarn build && yarn build && chown -R $(id -u):$(id -g) /app/frontend" $docker run --rm -e CI=true -v "$(pwd)/frontend:/app/frontend" -v "$(pwd)/global:/app/global" -w /app/frontend "$DOCKER_IMAGE" sh -c "yarn install && yarn build && yarn build && chown -R $(id -u):$(id -g) /app/frontend"
echo -e "${BLUE} ${GREEN}Building Frontend Complete${RESET}" echo -e "${BLUE} ${GREEN}Building Frontend Complete${RESET}"
else
echo -e "${RED} docker command is not available${RESET}"
fi

View File

@@ -1,10 +1,21 @@
#!/bin/bash -e #!/bin/bash -e
DOCKER_IMAGE=jc21/nginx-full:certbot-node DOCKER_IMAGE=jc21/nginx-full:certbot-node
docker pull "${DOCKER_IMAGE}"
# Ensure docker exists
if command -v docker 1>/dev/null 2>&1; then
docker=docker
elif command -v podman 1>/dev/null 2>&1; then
docker=podman
else
echo -e "${RED} docker or podman command is not available${RESET}"
exit 1
fi
$docker pull "${DOCKER_IMAGE}"
# Test # Test
docker run --rm \ $docker run --rm \
-v "$(pwd)/backend:/app" \ -v "$(pwd)/backend:/app" \
-v "$(pwd)/global:/app/global" \ -v "$(pwd)/global:/app/global" \
-w /app \ -w /app \
@@ -12,7 +23,7 @@ docker run --rm \
sh -c 'yarn install && yarn eslint . && rm -rf node_modules' sh -c 'yarn install && yarn eslint . && rm -rf node_modules'
# Build # Build
docker build --pull --no-cache --squash --compress \ $docker build --pull --no-cache --squash --compress \
-t "${IMAGE}:ci-${BUILD_NUMBER}" \ -t "${IMAGE}:ci-${BUILD_NUMBER}" \
-f docker/Dockerfile \ -f docker/Dockerfile \
--build-arg TARGETPLATFORM=linux/amd64 \ --build-arg TARGETPLATFORM=linux/amd64 \

View File

@@ -7,7 +7,7 @@ DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if hash docker 2>/dev/null; then if hash docker 2>/dev/null; then
cd "${DIR}/.." cd "${DIR}/.."
echo -e "${BLUE} ${CYAN}Building Docs ...${RESET}" echo -e "${BLUE} ${CYAN}Building Docs ...${RESET}"
docker run --rm -e CI=true -v "$(pwd)/docs:/app/docs" -w /app/docs node:alpine sh -c "yarn install && yarn build && chown -R $(id -u):$(id -g) /app/docs" $docker run --rm -e CI=true -v "$(pwd)/docs:/app/docs" -w /app/docs node:alpine sh -c "yarn install && yarn build && chown -R $(id -u):$(id -g) /app/docs"
echo -e "${BLUE} ${GREEN}Building Docs Complete${RESET}" echo -e "${BLUE} ${GREEN}Building Docs Complete${RESET}"
else else
echo -e "${RED} docker command is not available${RESET}" echo -e "${RED} docker command is not available${RESET}"

View File

@@ -18,10 +18,10 @@ if hash docker-compose 2>/dev/null; then
if [ "$1" == "-f" ]; then if [ "$1" == "-f" ]; then
echo -e "${BLUE} ${YELLOW}Following Backend Container:${RESET}" echo -e "${BLUE} ${YELLOW}Following Backend Container:${RESET}"
docker logs -f npm_core $docker logs -f npm_core
else else
echo -e "${YELLOW}Hint:${RESET} You can follow the output of some of the containers with:" echo -e "${YELLOW}Hint:${RESET} You can follow the output of some of the containers with:"
echo " docker logs -f npm_core" echo " $docker logs -f npm_core"
fi fi
else else
echo -e "${RED} docker-compose command is not available${RESET}" echo -e "${RED} docker-compose command is not available${RESET}"

View File

@@ -19,7 +19,7 @@ echo -e "${BLUE} ${CYAN}Waiting for healthy: ${YELLOW}${SERVICE}${RESET}"
until [ "${HEALTHY}" = "healthy" ]; do until [ "${HEALTHY}" = "healthy" ]; do
echo -n "." echo -n "."
sleep 1 sleep 1
HEALTHY="$(docker inspect -f '{{.State.Health.Status}}' $SERVICE)" HEALTHY="$($docker inspect -f '{{.State.Health.Status}}' $SERVICE)"
((LOOPCOUNT++)) ((LOOPCOUNT++))
if [ "$LOOPCOUNT" == "$LIMIT" ]; then if [ "$LOOPCOUNT" == "$LIMIT" ]; then