From 4b01fbbc76e82765b7fe20ba762faa1caba0e7cf Mon Sep 17 00:00:00 2001 From: manoj v Date: Mon, 11 Sep 2017 15:55:21 +0530 Subject: [PATCH] Issue #1 fix : learner service docker and jenkins files --- Dockerfile | 18 ++++++++++++++++++ Dockerfile.Build | 15 +++++++++++++++ Jenkinsfile | 44 ++++++++++++++++++++++++++++++++++++++++++++ build.sh | 14 ++++++++++++++ deploy.sh | 23 +++++++++++++++++++++++ dockerPushToRepo.sh | 18 ++++++++++++++++++ installDeps.sh | 6 ++++++ 7 files changed, 138 insertions(+) create mode 100644 Dockerfile create mode 100644 Dockerfile.Build create mode 100644 Jenkinsfile create mode 100644 build.sh create mode 100644 deploy.sh create mode 100644 dockerPushToRepo.sh create mode 100644 installDeps.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..5a9357d462 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM openjdk:8-jre-alpine +MAINTAINER "Manojv" "manojv@ilimi.in" +RUN apk update \ + && apk add unzip \ + && apk add curl \ + && adduser -u 1001 -h /home/sunbird/ -D sunbird \ + && mkdir -p /home/sunbird/learner +#ENV sunbird_learnerstate_actor_host 52.172.24.203 +#ENV sunbird_learnerstate_actor_port 8088 +COPY ./service/target/learning-service-1.0-SNAPSHOT-dist.zip /home/sunbird/learner/ +RUN unzip /home/sunbird/learner/learning-service-1.0-SNAPSHOT-dist.zip -d /home/sunbird/learner/ +RUN chown -R sunbird:sunbird /home/sunbird +USER sunbird +WORKDIR /home/sunbird/learner/ +RUN mkdir -p /home/sunbird/learner/logs/ +RUN touch /home/sunbird/learner/logs/learningServiceProject.log +RUN ln -sf /dev/stdout /home/sunbird/learner/logs/learningServiceProject.log +CMD java -cp '/home/sunbird/learner/learning-service-1.0-SNAPSHOT/lib/*' play.core.server.ProdServerStart /home/sunbird/learner/learning-service-1.0-SNAPSHOT \ No newline at end of file diff --git a/Dockerfile.Build b/Dockerfile.Build new file mode 100644 index 0000000000..245be1eaf8 --- /dev/null +++ b/Dockerfile.Build @@ -0,0 +1,15 @@ +FROM openjdk:8-jdk-alpine +MAINTAINER "Manojv" "manojv@ilimi.in" +WORKDIR /opt +RUN apk update \ + && mkdir -p /opt/learner \ + && apk add wget \ + && wget http://www-eu.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz \ + && tar -xvzf apache-maven-3.3.9-bin.tar.gz +ENV M2_HOME /opt/apache-maven-3.3.9 +ENV PATH ${M2_HOME}/bin:${PATH} +COPY learner /opt/learner/ +WORKDIR /opt/learner/services +RUN mvn clean install -DskipTests +WORKDIR /opt/learner/services/learning-service +CMD ["mvn", "play2:dist"] \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000..cc709cdd4a --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,44 @@ +#!groovy + +node('build-slave') { + + currentBuild.result = "SUCCESS" + + try { + + stage('Checkout'){ + + checkout scm + } + + stage('Build'){ + + env.NODE_ENV = "build" + print "Environment will be : ${env.NODE_ENV}" + sh 'mvn clean install -DskipTests=true ' + dir ('service') { + sh 'mvn play2:dist' + } + sh('chmod 777 ./build.sh') + sh('./build.sh') + + } + + stage('Publish'){ + + echo 'Push to Repo' + sh 'ls -al ~/' + sh('chmod 777 ./dockerPushToRepo.sh') + sh 'ARTIFACT_LABEL=bronze ./dockerPushToRepo.sh' + sh './metadata.sh > metadata.json' + sh 'cat metadata.json' + archive includes: "metadata.json" + + } + } + catch (err) { + currentBuild.result = "FAILURE" + throw err + } + +} diff --git a/build.sh b/build.sh new file mode 100644 index 0000000000..701480f199 --- /dev/null +++ b/build.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# Build script +# set -o errexit +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(./metadata.sh) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + + +docker build -f ./Dockerfile -t ${org}/${name}:${version}-bronze . diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000000..c527db8a1d --- /dev/null +++ b/deploy.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# Build script +# set -o errexit +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(./metadata.sh) + +org=$(e "${m}" "org") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} +env=${ENV:-null} + +echo "artifactLabel: ${artifactLabel}" +echo "env: ${env}" +echo "org: ${org}" +echo "name: ${name}" +echo "version: ${version}" + +ansible-playbook --version +ansible-playbook -i ansible/inventory/dev ansible/deploy.yml --tags "stack-sunbird" --extra-vars "hub_org=${org} image_name=${name} image_tag=${version}-${artifactLabel}" --vault-password-file /run/secrets/vault-pass diff --git a/dockerPushToRepo.sh b/dockerPushToRepo.sh new file mode 100644 index 0000000000..7a1b796526 --- /dev/null +++ b/dockerPushToRepo.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# Build script +# set -o errexit +e () { + echo $( echo ${1} | jq ".${2}" | sed 's/\"//g') +} +m=$(./metadata.sh) + +org=$(e "${m}" "org") +hubuser=$(e "${m}" "hubuser") +name=$(e "${m}" "name") +version=$(e "${m}" "version") + +artifactLabel=${ARTIFACT_LABEL:-bronze} + +docker login -u "${hubuser}" -p`cat /home/ops/vault_pass` +docker push ${org}/${name}:${version}-${artifactLabel} +docker logout diff --git a/installDeps.sh b/installDeps.sh new file mode 100644 index 0000000000..c76140795a --- /dev/null +++ b/installDeps.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# Build script +# set -o errexit + +#apk -v --update --no-cache add jq +sudo apt-get install -y jq \ No newline at end of file