add ci
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [[ -n "${BUILD_SCRIPT}" ]]; then SCRIPTS_PATH=${BUILD_SCRIPT%/*}; else SCRIPTS_PATH=ci/build/image; fi
|
||||
DOCKER_BASEIMAGE=${DOCKER_BASEIMAGE:-ubuntu:18.04}
|
||||
DOCKER_MAINTAINER=${DOCKER_MAINTAINER:-$GITLAB_USER_EMAIL}
|
||||
DOCKER_MAINTAINER=${DOCKER_MAINTAINER:-service@ds.mlmsoft.cloud}
|
||||
DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-${CI_PROJECT_PATH#*/}}
|
||||
DOCKER_IMAGE_PREFIX=${DOCKER_IMAGE_PREFIX:-mlmsoft}
|
||||
DOCKER_FILE=${DOCKER_FILE:-Dockerfile}
|
||||
|
||||
if [[ -z "${VERSION}" ]]; then
|
||||
if [[ -f "VERSION" ]]; then VERSION=$(cat VERSION); else VERSION=latest; fi
|
||||
fi
|
||||
DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG:-$VERSION}
|
||||
if [[ "${CI_COMMIT_REF_SLUG}" != "master" ]]; then
|
||||
if [[ "${DOCKER_IMAGE_TAG}" == "latest" ]]; then TAG=''; else TAG="${DOCKER_IMAGE_TAG}_"; fi
|
||||
echo TAG=${TAG}
|
||||
if [[ -z "${DOCKER_NO_BRANCH_TAG}" ]]; then
|
||||
DOCKER_IMAGE_TAG=${TAG}${CI_COMMIT_REF_SLUG}
|
||||
echo Change DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG}
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "${CI}" ]]; then
|
||||
DOCKER_BUILD_CONTEXT=${DOCKER_BUILD_CONTEXT:-'.'}
|
||||
elif [[ -f ${BASH_SOURCE[0]%/*}/.env ]]; then
|
||||
source ${BASH_SOURCE[0]%/*}/.env
|
||||
fi
|
||||
|
||||
BUILD_ARGS=()
|
||||
for var in $@; do
|
||||
[[ "${var}" =~ ^[a-zA-Z0-9+_-]+=.+$ ]] && BUILD_ARGS+=( --build-arg ${var} )
|
||||
done
|
||||
|
||||
for (( i=0; i<10; i++ )); do
|
||||
arg=DOCKER_ARG$i
|
||||
[[ -n ${!arg} ]] && BUILD_ARGS+=( --build-arg ${!arg} )
|
||||
done
|
||||
|
||||
[[ ${DOCKER_BASEIMAGE} != *:* ]] && DOCKER_BASEIMAGE=${DOCKER_BASEIMAGE}:${VERSION}
|
||||
#[[ ${DOCKER_BASEIMAGE} == *:latest ]] && docker pull ${DOCKER_BASEIMAGE}
|
||||
|
||||
# Скачивание базового образа
|
||||
if [[ -z ${DOCKER_NO_PULL_BASEIMAGE:+x} ]]; then
|
||||
docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
|
||||
docker pull ${DOCKER_BASEIMAGE}
|
||||
fi
|
||||
|
||||
echo DOCKER_BASEIMAGE=${DOCKER_BASEIMAGE}
|
||||
echo DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME}
|
||||
echo DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG}
|
||||
echo DOCKER_BUILD_CONTEXT=${DOCKER_BUILD_CONTEXT}
|
||||
echo DOCKER_NO_BRANCH_TAG=${DOCKER_NO_BRANCH_TAG}
|
||||
echo DOCKER_NO_PULL_BASEIMAGE=${DOCKER_NO_PULL_BASEIMAGE}
|
||||
echo DOCKER_FILE=${DOCKER_FILE}
|
||||
echo DOCKER_TAG_AS_LATEST=${DOCKER_TAG_AS_LATEST}
|
||||
echo VERSION=${VERSION}
|
||||
echo Building args: ${BUILD_ARGS[@]}
|
||||
|
||||
DOCKER_IMAGE=${DOCKER_IMAGE_PREFIX}/${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}
|
||||
if ! docker build -f ${DOCKER_FILE} --build-arg DOCKER_BASEIMAGE=${DOCKER_BASEIMAGE} --build-arg DOCKER_MAINTAINER=${DOCKER_MAINTAINER} \
|
||||
--build-arg VERSION=${VERSION} ${BUILD_ARGS[@]} --no-cache --force-rm -t ${DOCKER_IMAGE} ${DOCKER_BUILD_CONTEXT} ; then
|
||||
# Remove all orphaned images after unsuccessfull build
|
||||
docker image prune -f > /dev/null 2>&1
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
#docker tag ${DOCKER_IMAGE_NAME} ${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}
|
||||
|
||||
if [[ -n "${CI}" ]]; then
|
||||
chmod +x "${SCRIPTS_PATH}/import.sh"
|
||||
DOCKER_IMAGE=${DOCKER_IMAGE} "${SCRIPTS_PATH}/import.sh"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user