From e5919dd0b788b44400db6634060d6837537c33b0 Mon Sep 17 00:00:00 2001 From: ckonstanski Date: Tue, 21 Nov 2017 14:29:44 -0700 Subject: added baseimage --- bootstrap/pillar_config.rb | 4 ++++ jjb/yaml/openbook-all-ob-pipeline.yaml | 10 ++++++++++ jjb/yaml/openbook-baseimage.yaml | 21 ++++++++++++++++++++ pillar/openbook/baseimage.sls | 23 ++++++++++++++++++++++ pillar/top.sls | 1 + salt/openbook/admin_api_server/files/Dockerfile | 4 ++-- .../openbook/admin_api_server/files/installdeps.sh | 5 ----- salt/openbook/admin_web_ui/files/Dockerfile | 4 ++-- salt/openbook/admin_web_ui/files/installdeps.sh | 5 ----- salt/openbook/baseimage/files/Dockerfile | 3 +++ salt/openbook/baseimage/files/build.sh | 20 +++++++++++++++++++ salt/openbook/baseimage/files/installdeps.sh | 7 +++++++ salt/openbook/baseimage/init.sls | 16 +++++++++++++++ salt/openbook/ci/files/build.sh | 5 +++++ salt/openbook/customer_api_server/files/Dockerfile | 4 ++-- .../customer_api_server/files/installdeps.sh | 5 ----- salt/openbook/customer_web_ui/files/Dockerfile | 4 ++-- salt/openbook/customer_web_ui/files/installdeps.sh | 5 ----- .../openbook/job_scheduler_server/files/Dockerfile | 4 ++-- .../job_scheduler_server/files/installdeps.sh | 5 ----- salt/openbook/workflow_server/files/Dockerfile | 4 ++-- salt/openbook/workflow_server/files/installdeps.sh | 5 ----- salt/top.sls | 1 + 23 files changed, 123 insertions(+), 42 deletions(-) create mode 100644 jjb/yaml/openbook-baseimage.yaml create mode 100644 pillar/openbook/baseimage.sls create mode 100644 salt/openbook/baseimage/files/Dockerfile create mode 100644 salt/openbook/baseimage/files/build.sh create mode 100644 salt/openbook/baseimage/files/installdeps.sh create mode 100644 salt/openbook/baseimage/init.sls diff --git a/bootstrap/pillar_config.rb b/bootstrap/pillar_config.rb index 6d9d3fb..2a7ccbf 100755 --- a/bootstrap/pillar_config.rb +++ b/bootstrap/pillar_config.rb @@ -42,6 +42,10 @@ def process_yaml(branch) "workflow-server" ] yml = YAML.load_file(env_yaml_path) + yml["baseimage"] = {} + yml["baseimage"]["image_name"] = "openbook_baseimage" + yml["baseimage"]["container_name"] = "baseimage" + yml["baseimage"]["build_dir"] = "/root/openbook_build/baseimage" yml["database"] = {} yml["database"]["image_name"] = "openbook_database" yml["database"]["container_name"] = "database" diff --git a/jjb/yaml/openbook-all-ob-pipeline.yaml b/jjb/yaml/openbook-all-ob-pipeline.yaml index eb56bc1..f81f8ab 100644 --- a/jjb/yaml/openbook-all-ob-pipeline.yaml +++ b/jjb/yaml/openbook-all-ob-pipeline.yaml @@ -31,6 +31,16 @@ git(poll: false, branch: "{branch}", url: "git@github.com:Talligent/openbook-core.git") }} }} + stage("baseimage") {{ + steps {{ + build(job: "openbook-baseimage") + }} + }} + stage("database") {{ + steps {{ + build(job: "openbook-database") + }} + }} stage("admin-api-server") {{ steps {{ build(job: "admin-api-server-{branch}-ob-pipeline") diff --git a/jjb/yaml/openbook-baseimage.yaml b/jjb/yaml/openbook-baseimage.yaml new file mode 100644 index 0000000..2ab74bb --- /dev/null +++ b/jjb/yaml/openbook-baseimage.yaml @@ -0,0 +1,21 @@ +--- +- job: + name: openbook-baseimage + project-type: freestyle + node: openbook_v4 + properties: + - build-discarder: + days-to-keep: 0 + num-to-keep: 1 + artifact-days-to-keep: 0 + triggers: + - pollscm: + cron: "H/5 * * * *" + scm: + - git: + url: git@pippiandcarlos.com:repos/openbook-v4-ci.git + branches: + - master + builders: + - shell: | + ./build-docker-containers.sh baseimage unstable diff --git a/pillar/openbook/baseimage.sls b/pillar/openbook/baseimage.sls new file mode 100644 index 0000000..db9a70d --- /dev/null +++ b/pillar/openbook/baseimage.sls @@ -0,0 +1,23 @@ +baseimage: + files: + build_sh: + name: build.sh + path: . + source: build.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + dockerfile: + name: Dockerfile + path: . + source: Dockerfile + mode: "0644" + is_template: True + relative_to_buildroot: True + installdeps: + name: installdeps.sh + path: data + source: installdeps.sh + mode: "0755" + is_template: True + relative_to_buildroot: True diff --git a/pillar/top.sls b/pillar/top.sls index 3f1b067..22ffb32 100644 --- a/pillar/top.sls +++ b/pillar/top.sls @@ -2,6 +2,7 @@ base: "*": - openbook.ci - openbook.ansible + - openbook.baseimage - openbook.database - openbook.admin_api_server - openbook.admin_web_ui diff --git a/salt/openbook/admin_api_server/files/Dockerfile b/salt/openbook/admin_api_server/files/Dockerfile index c72d861..c911f9d 100644 --- a/salt/openbook/admin_api_server/files/Dockerfile +++ b/salt/openbook/admin_api_server/files/Dockerfile @@ -1,5 +1,5 @@ -FROM ubuntu:xenial -MAINTAINER Carlos Konstanski +FROM openbook_baseimage:latest +MAINTAINER Carlos Konstanski ADD docker-start.tar.xz / EXPOSE 8083 5701 5702 VOLUME {{ pillar["admin_api_server"]["dirs"]["etc_openbook_admin_api_server"]["name"] }} diff --git a/salt/openbook/admin_api_server/files/installdeps.sh b/salt/openbook/admin_api_server/files/installdeps.sh index fae7690..5a1398f 100644 --- a/salt/openbook/admin_api_server/files/installdeps.sh +++ b/salt/openbook/admin_api_server/files/installdeps.sh @@ -1,10 +1,5 @@ #!/bin/bash -export DEBIAN_FRONTEND=noninteractive -apt-get update -apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade -apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" curl python openjdk-8-jre-headless - current_jar=($(curl -s \ -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ diff --git a/salt/openbook/admin_web_ui/files/Dockerfile b/salt/openbook/admin_web_ui/files/Dockerfile index 77f4a17..f413ed3 100644 --- a/salt/openbook/admin_web_ui/files/Dockerfile +++ b/salt/openbook/admin_web_ui/files/Dockerfile @@ -1,5 +1,5 @@ -FROM ubuntu:xenial -MAINTAINER Carlos Konstanski +FROM openbook_baseimage:latest +MAINTAINER Carlos Konstanski ADD docker-start.tar.xz / EXPOSE 8082 5701 5702 VOLUME {{ pillar["admin_web_ui"]["dirs"]["etc_openbook_admin_web_ui"]["name"] }} diff --git a/salt/openbook/admin_web_ui/files/installdeps.sh b/salt/openbook/admin_web_ui/files/installdeps.sh index d52a202..8c7305c 100644 --- a/salt/openbook/admin_web_ui/files/installdeps.sh +++ b/salt/openbook/admin_web_ui/files/installdeps.sh @@ -1,10 +1,5 @@ #!/bin/bash -export DEBIAN_FRONTEND=noninteractive -apt-get update -apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade -apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" curl python openjdk-8-jre-headless - current_jar=($(curl -s \ -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ diff --git a/salt/openbook/baseimage/files/Dockerfile b/salt/openbook/baseimage/files/Dockerfile new file mode 100644 index 0000000..0ead57e --- /dev/null +++ b/salt/openbook/baseimage/files/Dockerfile @@ -0,0 +1,3 @@ +FROM ubuntu:xenial +MAINTAINER Carlos Konstanski +RUN /installdeps.sh diff --git a/salt/openbook/baseimage/files/build.sh b/salt/openbook/baseimage/files/build.sh new file mode 100644 index 0000000..b33611c --- /dev/null +++ b/salt/openbook/baseimage/files/build.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Do not call directly. Meant to be called from CI build script. + +pushd {{ pillar["baseimage"]["build_dir"] }} 2>/dev/null + +echo "Deleting existing docker container" +docker stop {{ pillar["baseimage"]["container_name"] }} +docker container prune -f +docker rmi -f {{ pillar["baseimage"]["image_name"] }} + +echo "Building docker Ubuntu image" +docker build -t {{ pillar["baseimage"]["image_name"] }} . + +echo "Push docker image to the registry" +docker tag {{ pillar["baseimage"]["image_name"] }} {{ pillar["registry"]["url"] }}/{{ pillar["baseimage"]["image_name"] }} +docker push {{ pillar["registry"]["url"] }}/{{ pillar["baseimage"]["image_name"] }} + +popd 2>/dev/null +exit 0 diff --git a/salt/openbook/baseimage/files/installdeps.sh b/salt/openbook/baseimage/files/installdeps.sh new file mode 100644 index 0000000..1a1b1be --- /dev/null +++ b/salt/openbook/baseimage/files/installdeps.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +export DEBIAN_FRONTEND=noninteractive +apt-get update +apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade +apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" curl python openjdk-8-jre-headless +exit 0 diff --git a/salt/openbook/baseimage/init.sls b/salt/openbook/baseimage/init.sls new file mode 100644 index 0000000..9333b1a --- /dev/null +++ b/salt/openbook/baseimage/init.sls @@ -0,0 +1,16 @@ +{% for file in pillar["baseimage"]["files"].items() %} +baseimage_files_{{ file[0] }}: + file.managed: +{% if file[1]["relative_to_buildroot"] %} + - name: {{ pillar["baseimage"]["build_dir"] }}/{{ file[1]["path"] }}/{{ file[1]["name"] }} +{% else %} + - name: {{ file[1]["path"] }}/{{ file[1]["name"] }} +{% endif %} + - source: salt://openbook/baseimage/files/{{ file[1]["source"] }} +{% if file[1]["is_template"] %} + - template: jinja +{% endif %} + - user: root + - group: root + - mode: {{ file[1]["mode"] }} +{% endfor %} diff --git a/salt/openbook/ci/files/build.sh b/salt/openbook/ci/files/build.sh index 77f2a5e..62b4228 100644 --- a/salt/openbook/ci/files/build.sh +++ b/salt/openbook/ci/files/build.sh @@ -18,6 +18,9 @@ pushd {{ pillar["ci"]["build_dir"] }} 2>/dev/null echo "Login to docker registry" docker login --username {{ pillar["registry"]["username"] }} --password {{ pillar["registry"]["password"] }} {{ pillar["registry"]["url"] }} +if [ "${artifact}" == "baseimage" ]; then + delete_old_image "{{ pillar["baseimage"]["image_name"] }}" + {{ pillar["baseimage"]["build_dir"] }}/build.sh if [ "${artifact}" == "database" ]; then delete_old_image "{{ pillar["database"]["image_name"] }}" {{ pillar["database"]["build_dir"] }}/build.sh @@ -40,6 +43,7 @@ elif [ "${artifact}" == "workflow-server" ]; then delete_old_image "{{ pillar["workflow_server"]["image_name"] }}" {{ pillar["workflow_server"]["build_dir"] }}/build.sh else + delete_old_image "{{ pillar["baseimage"]["image_name"] }}" delete_old_image "{{ pillar["database"]["image_name"] }}" delete_old_image "{{ pillar["admin_api_server"]["image_name"] }}" delete_old_image "{{ pillar["customer_api_server"]["image_name"] }}" @@ -47,6 +51,7 @@ else delete_old_image "{{ pillar["customer_web_ui"]["image_name"] }}" delete_old_image "{{ pillar["job_scheduler_server"]["image_name"] }}" delete_old_image "{{ pillar["workflow_server"]["image_name"] }}" + {{ pillar["baseimage"]["build_dir"] }}/build.sh {{ pillar["database"]["build_dir"] }}/build.sh {{ pillar["admin_api_server"]["build_dir"] }}/build.sh {{ pillar["customer_api_server"]["build_dir"] }}/build.sh diff --git a/salt/openbook/customer_api_server/files/Dockerfile b/salt/openbook/customer_api_server/files/Dockerfile index fb4d46f..8d44481 100644 --- a/salt/openbook/customer_api_server/files/Dockerfile +++ b/salt/openbook/customer_api_server/files/Dockerfile @@ -1,5 +1,5 @@ -FROM ubuntu:xenial -MAINTAINER Carlos Konstanski +FROM openbook_baseimage:latest +MAINTAINER Carlos Konstanski ADD docker-start.tar.xz / EXPOSE 8081 5701 5702 VOLUME {{ pillar["customer_api_server"]["dirs"]["etc_openbook_customer_api_server"]["name"] }} diff --git a/salt/openbook/customer_api_server/files/installdeps.sh b/salt/openbook/customer_api_server/files/installdeps.sh index 3a4f2fa..8ced89e 100644 --- a/salt/openbook/customer_api_server/files/installdeps.sh +++ b/salt/openbook/customer_api_server/files/installdeps.sh @@ -1,10 +1,5 @@ #!/bin/bash -export DEBIAN_FRONTEND=noninteractive -apt-get update -apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade -apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" curl python openjdk-8-jre-headless - current_jar=($(curl -s \ -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ diff --git a/salt/openbook/customer_web_ui/files/Dockerfile b/salt/openbook/customer_web_ui/files/Dockerfile index e4ad953..87e5756 100644 --- a/salt/openbook/customer_web_ui/files/Dockerfile +++ b/salt/openbook/customer_web_ui/files/Dockerfile @@ -1,5 +1,5 @@ -FROM ubuntu:xenial -MAINTAINER Carlos Konstanski +FROM openbook_baseimage:latest +MAINTAINER Carlos Konstanski ADD docker-start.tar.xz / EXPOSE 8080 5701 5702 VOLUME {{ pillar["customer_web_ui"]["dirs"]["etc_openbook_customer_web_ui"]["name"] }} diff --git a/salt/openbook/customer_web_ui/files/installdeps.sh b/salt/openbook/customer_web_ui/files/installdeps.sh index 9c96042..79027be 100644 --- a/salt/openbook/customer_web_ui/files/installdeps.sh +++ b/salt/openbook/customer_web_ui/files/installdeps.sh @@ -1,10 +1,5 @@ #!/bin/bash -export DEBIAN_FRONTEND=noninteractive -apt-get update -apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade -apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" curl python openjdk-8-jre-headless - current_jar=($(curl -s \ -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ diff --git a/salt/openbook/job_scheduler_server/files/Dockerfile b/salt/openbook/job_scheduler_server/files/Dockerfile index 78a7f0c..8914e95 100644 --- a/salt/openbook/job_scheduler_server/files/Dockerfile +++ b/salt/openbook/job_scheduler_server/files/Dockerfile @@ -1,5 +1,5 @@ -FROM ubuntu:xenial -MAINTAINER Carlos Konstanski +FROM openbook_baseimage:latest +MAINTAINER Carlos Konstanski ADD docker-start.tar.xz / EXPOSE 5701 5702 VOLUME {{ pillar["job_scheduler_server"]["dirs"]["etc_openbook_job_scheduler_server"]["name"] }} diff --git a/salt/openbook/job_scheduler_server/files/installdeps.sh b/salt/openbook/job_scheduler_server/files/installdeps.sh index dfe4522..e9a7173 100644 --- a/salt/openbook/job_scheduler_server/files/installdeps.sh +++ b/salt/openbook/job_scheduler_server/files/installdeps.sh @@ -1,10 +1,5 @@ #!/bin/bash -export DEBIAN_FRONTEND=noninteractive -apt-get update -apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade -apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" curl python openjdk-8-jre-headless - current_jar=($(curl -s \ -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ diff --git a/salt/openbook/workflow_server/files/Dockerfile b/salt/openbook/workflow_server/files/Dockerfile index ae18ced..9d56a8c 100644 --- a/salt/openbook/workflow_server/files/Dockerfile +++ b/salt/openbook/workflow_server/files/Dockerfile @@ -1,5 +1,5 @@ -FROM ubuntu:xenial -MAINTAINER Carlos Konstanski +FROM openbook_baseimage:latest +MAINTAINER Carlos Konstanski ADD docker-start.tar.xz / EXPOSE 5701 5702 VOLUME {{ pillar["workflow_server"]["dirs"]["etc_openbook_workflow_server"]["name"] }} diff --git a/salt/openbook/workflow_server/files/installdeps.sh b/salt/openbook/workflow_server/files/installdeps.sh index a90c3c9..507c2d3 100644 --- a/salt/openbook/workflow_server/files/installdeps.sh +++ b/salt/openbook/workflow_server/files/installdeps.sh @@ -1,10 +1,5 @@ #!/bin/bash -export DEBIAN_FRONTEND=noninteractive -apt-get update -apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade -apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" curl python openjdk-8-jre-headless - current_jar=($(curl -s \ -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ diff --git a/salt/top.sls b/salt/top.sls index 3f1b067..22ffb32 100644 --- a/salt/top.sls +++ b/salt/top.sls @@ -2,6 +2,7 @@ base: "*": - openbook.ci - openbook.ansible + - openbook.baseimage - openbook.database - openbook.admin_api_server - openbook.admin_web_ui -- cgit v1.3