1
0
Fork 0
mirror of https://github.com/librenms/docker.git synced 2026-07-25 11:14:08 +00:00

Update travis build

This commit is contained in:
CrazyMax 2018-12-02 22:42:40 +01:00
parent 61485e9e3f
commit 83237bcb6c
No known key found for this signature in database
GPG key ID: 3248E46B6BB8C7F7
4 changed files with 114 additions and 36 deletions

View file

@ -8,6 +8,7 @@
/.editorconfig
/.gitignore
/.travis.yml
/build.sh
/CHANGELOG.md
/LICENSE
/README.md

View file

@ -5,7 +5,7 @@ services:
env:
global:
- VERSION=1.45
- VERSION=1.46
- DOCKER_USERNAME=librenms
- DOCKER_REPONAME=librenms
- DOCKER_LOGIN=librenmsbot
@ -19,38 +19,5 @@ env:
before_install:
- sudo apt-get update
- docker --version
- export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi)
- export DOCKER_TAG=$(if [ "$BRANCH" == "master" ]; then echo "latest"; else echo $BRANCH; fi)
- echo "TRAVIS_BRANCH=$TRAVIS_BRANCH, PR=$PR, BRANCH=$BRANCH, DOCKER_TAG=$DOCKER_TAG"
install:
- |
docker build --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
--build-arg VCS_REF=${TRAVIS_COMMIT::8} \
--build-arg VERSION=${VERSION} \
-t docker_build .
before_script:
- docker network create -d bridge $DOCKER_REPONAME
- docker run -d --network=$DOCKER_REPONAME --name db mariadb:10.2
- docker run -d --network=$DOCKER_REPONAME --link db -p 8000:80 -e "DB_HOST=db" -e "DB_PASSWORD=asupersecretpassword" --name $DOCKER_REPONAME docker_build
- sleep 20
- docker logs $DOCKER_REPONAME
script:
- docker ps | grep $DOCKER_REPONAME
- |
test $TRAVIS_PULL_REQUEST = false \
&& echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_LOGIN" --password-stdin \
&& docker tag docker_build $DOCKER_USERNAME/$DOCKER_REPONAME:$DOCKER_TAG \
&& docker tag docker_build $DOCKER_USERNAME/$DOCKER_REPONAME:$VERSION \
&& docker push $DOCKER_USERNAME/$DOCKER_REPONAME \
&& curl -X POST $MICROBADGER_HOOK \
&& echo "$QUAY_PASSWORD" | docker login quay.io --username "$QUAY_LOGIN" --password-stdin \
&& docker tag docker_build quay.io/$DOCKER_USERNAME/$DOCKER_REPONAME:$DOCKER_TAG \
&& docker tag docker_build quay.io/$DOCKER_USERNAME/$DOCKER_REPONAME:$VERSION \
&& docker push quay.io/$QUAY_USERNAME/$QUAY_REPONAME
branches:
except:
- /^[0-9]/
script: ./build.sh

View file

@ -80,7 +80,7 @@ RUN apk --update --no-cache add \
&& setcap cap_net_raw+ep /usr/bin/nmap \
&& setcap cap_net_raw+ep /usr/sbin/fping
ENV LIBRENMS_VERSION="1.45" \
ENV LIBRENMS_VERSION="1.46" \
LIBRENMS_PATH="/opt/librenms" \
DATA_PATH="/data" \
CRONTAB_PATH="/var/spool/cron/crontabs"

110
build.sh Normal file
View file

@ -0,0 +1,110 @@
#!/usr/bin/env bash
set -e
PROJECT=librenms
BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
BUILD_TAG=docker_build
VCS_REF=${TRAVIS_COMMIT::8}
RUNNING_TIMEOUT=120
RUNNING_LOG_CHECK="snmpd entered RUNNING state"
DOCKER_USERNAME=${DOCKER_USERNAME:="librenms"}
DOCKER_REPONAME=${DOCKER_REPONAME:="librenms"}
DOCKER_LOGIN=${DOCKER_LOGIN:="librenmsbot"}
QUAY_USERNAME=${QUAY_USERNAME:="librenms"}
QUAY_REPONAME=${QUAY_REPONAME:="librenms"}
QUAY_LOGIN=${QUAY_LOGIN:="librenms+travis"}
# Check local or travis
BRANCH=${TRAVIS_BRANCH:-"local"}
if [[ ${TRAVIS_PULL_REQUEST} == "true" ]]; then
BRANCH=${TRAVIS_PULL_REQUEST_BRANCH}
fi
DOCKER_TAG=${BRANCH:-"local"}
if [[ "$BRANCH" == "master" ]]; then
DOCKER_TAG=latest
elif [[ "$BRANCH" == "local" ]]; then
BUILD_DATE=
VERSION=local
fi
echo "PROJECT=${PROJECT}"
echo "BUILD_DATE=${BUILD_DATE}"
echo "BUILD_TAG=${BUILD_TAG}"
echo "VCS_REF=${VCS_REF}"
echo "DOCKER_USERNAME=${DOCKER_USERNAME}"
echo "DOCKER_REPONAME=${DOCKER_REPONAME}"
echo "QUAY_USERNAME=${QUAY_USERNAME}"
echo "QUAY_REPONAME=${QUAY_REPONAME}"
echo "TRAVIS_BRANCH=${TRAVIS_BRANCH}"
echo "TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST}"
echo "BRANCH=${BRANCH}"
echo "DOCKER_TAG=${DOCKER_TAG}"
echo
# Build
echo "### Build"
docker build \
--build-arg BUILD_DATE=${BUILD_DATE} \
--build-arg VCS_REF=${VCS_REF} \
--build-arg VERSION=${VERSION} \
-t ${BUILD_TAG} .
echo
echo "### Test"
docker rm -f ${PROJECT} ${PROJECT}-db || true
docker network rm ${PROJECT} || true
docker network create -d bridge ${PROJECT}
docker run -d --network=${PROJECT} --name ${PROJECT}-db --hostname ${PROJECT}-db \
-e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \
-e "MYSQL_DATABASE=librenms" \
-e "MYSQL_USER=librenms" \
-e "MYSQL_PASSWORD=asupersecretpassword" \
mariadb:10.2 \
mysqld --sql-mode= --innodb-file-per-table=1 --lower-case-table-names=0
docker run -d --network=${PROJECT} --link ${PROJECT}-db -p 8000:80 \
-e "DB_HOST=${PROJECT}-db" \
-e "DB_NAME=librenms" \
-e "DB_USER=librenms" \
-e "DB_PASSWORD=asupersecretpassword" \
--name ${PROJECT} ${BUILD_TAG}
echo
echo "### Waiting for ${PROJECT} to be up..."
TIMEOUT=$((SECONDS + RUNNING_TIMEOUT))
while read LOGLINE; do
echo ${LOGLINE}
if [[ "${LOGLINE#*$RUNNING_LOG_CHECK}" != "$LOGLINE" ]]; then
echo "Container up!"
break
fi
if [[ $SECONDS -gt ${TIMEOUT} ]]; then
>&2 echo "ERROR: Failed to run ${PROJECT} container"
exit 1
fi
done < <(docker logs -f ${PROJECT})
echo
if [ "${VERSION}" == "local" -o "${TRAVIS_PULL_REQUEST}" == "true" ]; then
echo "INFO: This is a PR or a local build, skipping push..."
exit 0
fi
if [[ ! -z ${DOCKER_PASSWORD} ]]; then
echo "### Push to Docker Hub..."
echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_LOGIN" --password-stdin > /dev/null 2>&1
docker tag ${BUILD_TAG} ${DOCKER_USERNAME}/${DOCKER_REPONAME}:${DOCKER_TAG}
docker tag ${BUILD_TAG} ${DOCKER_USERNAME}/${DOCKER_REPONAME}:${VERSION}
docker push ${DOCKER_USERNAME}/${DOCKER_REPONAME}
if [[ ! -z ${DOCKER_PASSWORD} ]]; then
echo "Call MicroBadger hook"
curl -X POST ${MICROBADGER_HOOK}
fi
echo
fi
if [[ ! -z ${QUAY_PASSWORD} ]]; then
echo "### Push to Quay..."
echo "$QUAY_PASSWORD" | docker login quay.io --username "$QUAY_LOGIN" --password-stdin > /dev/null 2>&1
docker tag ${BUILD_TAG} quay.io/${QUAY_USERNAME}/${QUAY_REPONAME}:${DOCKER_TAG}
docker tag ${BUILD_TAG} quay.io/${QUAY_USERNAME}/${QUAY_REPONAME}:${VERSION}
docker push quay.io/${QUAY_USERNAME}/${QUAY_REPONAME}
fi