Answer the question
In order to leave comments, you need to log in
Gitlab Auto DevOps - why is the new build the same as the old one?
I 'm using the standard Node.js+Express project template .
I work in a branch dev
.
After the commit, Auto DevOps is launched and a container is created.
It is uploaded to the Gitlab Container Registry, now there are 0 .
Successfully build from Build.gitlab-ci.yml file .
For the build, this script is called:
#!/bin/bash -e
# build stage script for Auto-DevOps
if ! docker info &>/dev/null; then
if [ -z "$DOCKER_HOST" ] && [ "$KUBERNETES_PORT" ]; then
export DOCKER_HOST='tcp://localhost:2375'
fi
fi
if ; then
echo "Logging in to GitLab Container Registry with CI credentials..."
echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
fi
image_previous="$CI_APPLICATION_REPOSITORY:$CI_COMMIT_BEFORE_SHA"
image_tagged="$CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG"
image_latest="$CI_APPLICATION_REPOSITORY:latest"
if ; then
builder=${AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER:-"heroku/buildpacks:18"}
echo "Building Cloud Native Buildpack-based application with builder ${builder}..."
buildpack_args=()
if ; then
buildpack_args=('--buildpack' "$BUILDPACK_URL")
fi
env_args=()
if ; then
mapfile -t env_arg_names < <(echo "$AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES" | tr ',' "\n")
for env_arg_name in "${env_arg_names[@]}"; do
env_args+=('--env' "$env_arg_name")
done
fi
pack build tmp-cnb-image \
--builder "$builder" \
"${env_args[@]}" \
"${buildpack_args[@]}" \
--env HTTP_PROXY \
--env http_proxy \
--env HTTPS_PROXY \
--env https_proxy \
--env FTP_PROXY \
--env ftp_proxy \
--env NO_PROXY \
--env no_proxy
cp /build/cnb.Dockerfile Dockerfile
docker build \
--build-arg source_image=tmp-cnb-image \
--tag "$image_tagged" \
--tag "$image_latest" \
.
docker push "$image_tagged"
docker push "$image_latest"
exit 0
fi
if ; then
echo "Building Dockerfile-based application using '${DOCKERFILE_PATH}'..."
else
export DOCKERFILE_PATH="Dockerfile"
if ; then
echo "Building Dockerfile-based application..."
else
echo "Building Heroku-based application using gliderlabs/herokuish docker image..."
erb -T - /build/Dockerfile.erb > "${DOCKERFILE_PATH}"
fi
fi
if ; then
echo "Unable to find '${DOCKERFILE_PATH}'. Exiting..." >&2
exit 1
fi
build_secret_args=''
if ; then
build_secret_file_path=/tmp/auto-devops-build-secrets
"$(dirname "$0")"/export-build-secrets > "$build_secret_file_path"
build_secret_args="--secret id=auto-devops-build-secrets,src=$build_secret_file_path"
echo 'Activating Docker BuildKit to forward CI variables with --secret'
export DOCKER_BUILDKIT=1
fi
echo "Attempting to pull a previously built image for use with --cache-from..."
docker image pull --quiet "$image_previous" || \
docker image pull --quiet "$image_latest" || \
echo "No previously cached image found. The docker build will proceed without using a cached image"
# shellcheck disable=SC2154 # missing variable warning for the lowercase variables
# shellcheck disable=SC2086 # double quoting for globbing warning for $build_secret_args and $AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS
docker build \
--cache-from "$image_previous" \
--cache-from "$image_latest" \
$build_secret_args \
-f "$DOCKERFILE_PATH" \
--build-arg BUILDPACK_URL="$BUILDPACK_URL" \
--build-arg HTTP_PROXY="$HTTP_PROXY" \
--build-arg http_proxy="$http_proxy" \
--build-arg HTTPS_PROXY="$HTTPS_PROXY" \
--build-arg https_proxy="$https_proxy" \
--build-arg FTP_PROXY="$FTP_PROXY" \
--build-arg ftp_proxy="$ftp_proxy" \
--build-arg NO_PROXY="$NO_PROXY" \
--build-arg no_proxy="$no_proxy" \
$AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS \
--tag "$CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG" \
--tag "$image_latest" .
docker push "$image_tagged"
docker push "$image_latest"
sudo docker run -d -p $PUBLIC_PORT:5000 $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH:latest
[email protected]:~$ sudo docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
7258f2b4b44c registry.gitlab.com/company/project/dev:latest "docker-entrypoint.s…" 55 seconds ago Up 42 seconds 0.0.0.0:27073->5000/tcp, :::27073->5000/tcp
[email protected]:~$ curl http://localhost:27073
<!DOCTYPE html><html><head><title>Express</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>Express</h1><p>Welcome to Express</p></body></html>
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express 2' });
});
[email protected]:~$ sudo docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
d841d98c026b registry.gitlab.com/rolesuhub/node/dev:latest "docker-entrypoint.s…" 35 seconds ago Up 23 seconds 0.0.0.0:27073->5000/tcp, :::27073->5000/tcp
[email protected]:~$ curl http://localhost:27073
<!DOCTYPE html><html><head><title>Express</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>Express</h1><p>Welcome to Express</p></body></html>
Answer the question
In order to leave comments, you need to log in
You launch a new container from the old image.
Never use the laest tag, only a specific tag, if you want to avoid such special effects.
The latest tag was not created for these purposes, but for example, to get cached layers, but not to launch.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question