Pārlūkot izejas kodu

Feature: Docker images for go-server and go-agents for jdk8, nodejs and cloudfoundry

Febbweiss 9 gadi atpakaļ
revīzija
f8500d15da

+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
+**/binaries/
+mnt/

+ 45 - 0
docker-compose.yml

@@ -0,0 +1,45 @@
+gocd-server:
+  build: gocd-server/.
+  ports:
+   - "8153:8153"
+  volumes:
+   - ./mnt/var/lib/go-server:/var/lib/go-server
+   - ./mnt/etc/go:/etc/go
+   - ./mnt/var/log/go-server:/var/log/go-server
+  environment:
+   - AGENT_KEY=opensaasgocd
+gocd-agent:
+  build: gocd-agent/.
+  links:
+   - gocd-server
+  environment:
+   - AGENT_KEY=opensaasgocd
+   - GO_SERVER=gocd-server
+   - GO_SERVER_PORT=8153
+gocd-agent-jdk8:
+  build: gocd-agent/.
+  links:
+   - gocd-server
+  environment:
+   - AGENT_KEY=opensaasgocd
+   - AGENT_RESOURCES=java
+   - GO_SERVER=gocd-server
+   - GO_SERVER_PORT=8153
+gocd-agent-nodejs:
+  build: gocd-agent/.
+  links:
+   - gocd-server
+  environment:
+   - AGENT_KEY=opensaasgocd
+   - AGENT_RESOURCES=node
+   - GO_SERVER=gocd-server
+   - GO_SERVER_PORT=8153
+gocd-agent-cloudfoundry:
+  build: gocd-agent/.
+  links:
+   - gocd-server
+  environment:
+   - AGENT_KEY=opensaasgocd
+   - AGENT_RESOURCES=cf
+   - GO_SERVER=gocd-server
+   - GO_SERVER_PORT=8153

+ 29 - 0
gocd-agent-cloudfoundry/Dockerfile

@@ -0,0 +1,29 @@
+FROM debian
+
+RUN apt-get clean && apt-get update \
+    && apt-get install -y curl \
+    && apt-get clean \
+    && rm -rf /var/lib/apt/listss/*
+
+# Installing CloudFoundry
+RUN cd /tmp \
+    && curl -sL -o cf-cli-installer_6.15.0_x86-64.deb "https://cli.run.pivotal.io/stable?release=debian64&version=6.15.0&source=github-rel" \
+    && dpkg -i -E cf-cli-installer_6.15.0_x86-64.deb \
+    && cf add-plugin-repo bluemix-cf-staging http://plugins.ng.bluemix.net >/dev/null 2>&1
+
+# Installing Go agent
+RUN cd /tmp \
+    && curl -sL -o go-agent.deb "https://download.go.cd/gocd-deb/go-agent-15.2.0-2248.deb" \
+    && dpkg -i -E go-agent.deb \
+    && sed -i -e 's#GO_SERVER=127.0.0.1#GO_SERVER=gocd-server#' /etc/default/go-agent
+
+#VOLUME ["/var/lib/go-agent", "/var/log/go-agent", "/var/go/.ssh"]
+
+COPY autoregister.properties /var/lib/go-agent/config/autoregister.properties
+
+CMD until curl -s -o /dev/null "http://${GO_SERVER}:${GO_SERVER_PORT}"; do sleep 5; done; \
+    if [ -n "$AGENT_KEY" ]]; then \
+        sed -i -e 's/=.*/=/g' -e "s/key=/key=$AGENT_KEY/" -e "s/resources=/resources=$AGENT_RESOURCES/" /var/lib/go-agent/config/autoregister.properties; \ 
+    fi; \
+    (/usr/share/go-agent/agent.sh &); while [ ! -f /var/log/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/log/go-agent/*
+

+ 2 - 0
gocd-agent-cloudfoundry/autoregister.properties

@@ -0,0 +1,2 @@
+agent.auto.register.key=
+agent.auto.register.resources=

+ 40 - 0
gocd-agent-jdk8/Dockerfile

@@ -0,0 +1,40 @@
+FROM debian
+
+RUN apt-get clean && apt-get update \
+    && apt-get install -y curl
+RUN apt-get clean && apt-get install -y maven
+RUN apt-get clean && apt-get install -y gradle \
+    && apt-get clean \
+    && rm -rf /var/lib/apt/listss/*
+
+WORKDIR /opt
+#RUN curl -sL -o - --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" -q "http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz" | tar xzf - 
+ADD binaries/jdk-8u66-linux-x64.tar.gz /opt/.
+RUN update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_66/bin/java 120 \
+    && update-alternatives --install /usr/bin/keytool keytool /opt/jdk1.8.0_66/bin/keytool 120\
+    && update-alternatives --install /usr/bin/rmiregistry rmiregistry /opt/jdk1.8.0_66/bin/rmiregistry 120\
+    && update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_66/bin/javac 120 \
+	--slave /usr/bin/jar  jar  /opt/jdk1.8.0_66/bin/jar \
+	--slave /usr/bin/rmic rmic /opt/jdk1.8.0_66/bin/rmic\
+    && update-alternatives --set java /opt/jdk1.8.0_66/bin/java\
+    && update-alternatives --set keytool /opt/jdk1.8.0_66/bin/keytool \
+    && update-alternatives --set rmiregistry /opt/jdk1.8.0_66/bin/rmiregistry \
+    && echo "export JAVA_HOME=/opt/jdk1.8.0_66" >> /.profile
+
+# Installing Go agent
+RUN cd /tmp \
+    && curl -sL -o go-agent.deb "https://download.go.cd/gocd-deb/go-agent-15.2.0-2248.deb" \
+    && dpkg -i -E go-agent.deb \
+    && sed -i -e 's#GO_SERVER=127.0.0.1#GO_SERVER=gocd-server#' /etc/default/go-agent \
+    && sed -i -e 's#JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/jre"#JAVA_HOME="/opt/jdk1.8.0_66/jre"#' /etc/default/go-agent
+
+#VOLUME ["/var/lib/go-agent", "/var/log/go-agent", "/var/go/.ssh"]
+
+COPY autoregister.properties /var/lib/go-agent/config/autoregister.properties
+
+CMD until curl -s -o /dev/null "http://${GO_SERVER}:${GO_SERVER_PORT}"; do sleep 5; done; \
+    if [ -n "$AGENT_KEY" ]]; then \
+        sed -i -e 's/=.*/=/g' -e "s/key=/key=$AGENT_KEY/" -e "s/resources=/resources=$AGENT_RESOURCES/" /var/lib/go-agent/config/autoregister.properties; \ 
+    fi; \
+    (/usr/share/go-agent/agent.sh &); while [ ! -f /var/log/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/log/go-agent/*
+

+ 2 - 0
gocd-agent-jdk8/autoregister.properties

@@ -0,0 +1,2 @@
+agent.auto.register.key=
+agent.auto.register.resources=

+ 29 - 0
gocd-agent-nodejs/Dockerfile

@@ -0,0 +1,29 @@
+FROM debian
+
+RUN apt-get clean && apt-get update \
+    && apt-get install -y curl
+RUN apt-get clean && apt-get install -y python-dev
+RUN curl -sL https://deb.nodesource.com/setup_5.x | bash -E - \
+    && apt-get update \
+    && apt-get install -y \
+       build-essential \
+       nodejs
+    && apt-get clean \
+    && rm -rf /var/lib/apt/listss/*
+
+# Installing Go agent
+RUN cd /tmp \
+    && curl -sL -o go-agent.deb "https://download.go.cd/gocd-deb/go-agent-15.2.0-2248.deb" \
+    && dpkg -i -E go-agent.deb \
+    && sed -i -e 's#GO_SERVER=127.0.0.1#GO_SERVER=gocd-server#' /etc/default/go-agent
+
+#VOLUME ["/var/lib/go-agent", "/var/log/go-agent", "/var/go/.ssh"]
+
+COPY autoregister.properties /var/lib/go-agent/config/autoregister.properties
+
+CMD until curl -s -o /dev/null "http://${GO_SERVER}:${GO_SERVER_PORT}"; do sleep 5; done; \
+    if [ -n "$AGENT_KEY" ]]; then \
+        sed -i -e 's/=.*/=/g' -e "s/key=/key=$AGENT_KEY/" -e "s/resources=/resources=$AGENT_RESOURCES/" /var/lib/go-agent/config/autoregister.properties; \ 
+    fi; \
+    (/usr/share/go-agent/agent.sh &); while [ ! -f /var/log/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/log/go-agent/*
+

+ 2 - 0
gocd-agent-nodejs/autoregister.properties

@@ -0,0 +1,2 @@
+agent.auto.register.key=
+agent.auto.register.resources=

+ 57 - 0
gocd-agent/Dockerfile

@@ -0,0 +1,57 @@
+FROM debian
+
+RUN apt-get clean && apt-get update \
+    && apt-get install -y \
+       curl \
+       git \
+       subversion 
+RUN apt-get clean && apt-get install -y python-dev
+RUN curl -sL https://deb.nodesource.com/setup_5.x | bash -E - \
+    && apt-get update \
+    && apt-get install -y \
+       build-essential \
+       nodejs
+
+RUN apt-get clean && apt-get install -y maven
+RUN apt-get clean && apt-get install -y gradle \
+    && apt-get clean \
+    && rm -rf /var/lib/apt/listss/*
+
+WORKDIR /opt
+#RUN curl -sL -o - --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" -q "http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz" | tar xzf - 
+ADD binaries/jdk-8u66-linux-x64.tar.gz /opt/.
+RUN update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_66/bin/java 120 \
+    && update-alternatives --install /usr/bin/keytool keytool /opt/jdk1.8.0_66/bin/keytool 120\
+    && update-alternatives --install /usr/bin/rmiregistry rmiregistry /opt/jdk1.8.0_66/bin/rmiregistry 120\
+    && update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_66/bin/javac 120 \
+	--slave /usr/bin/jar  jar  /opt/jdk1.8.0_66/bin/jar \
+	--slave /usr/bin/rmic rmic /opt/jdk1.8.0_66/bin/rmic\
+    && update-alternatives --set java /opt/jdk1.8.0_66/bin/java\
+    && update-alternatives --set keytool /opt/jdk1.8.0_66/bin/keytool \
+    && update-alternatives --set rmiregistry /opt/jdk1.8.0_66/bin/rmiregistry \
+    && echo "export JAVA_HOME=/opt/jdk1.8.0_66" >> /.profile
+
+# Installing CloudFoundry
+RUN cd /tmp \
+    && curl -sL -o cf-cli-installer_6.15.0_x86-64.deb "https://cli.run.pivotal.io/stable?release=debian64&version=6.15.0&source=github-rel" \
+    && dpkg -i -E cf-cli-installer_6.15.0_x86-64.deb \
+    && cf add-plugin-repo bluemix-cf-staging http://plugins.ng.bluemix.net >/dev/null 2>&1
+#    && pip install python-openstackclient >/dev/null 2>&1
+
+# Installing Go agent
+RUN cd /tmp \
+    && curl -sL -o go-agent.deb "https://download.go.cd/gocd-deb/go-agent-15.2.0-2248.deb" \
+    && dpkg -i -E go-agent.deb \
+    && sed -i -e 's#GO_SERVER=127.0.0.1#GO_SERVER=gocd-server#' /etc/default/go-agent \
+    && sed -i -e 's#JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/jre"#JAVA_HOME="/opt/jdk1.8.0_66/jre"#' /etc/default/go-agent
+
+#VOLUME ["/var/lib/go-agent", "/var/log/go-agent", "/var/go/.ssh"]
+
+COPY autoregister.properties /var/lib/go-agent/config/autoregister.properties
+
+CMD until curl -s -o /dev/null "http://${GO_SERVER}:${GO_SERVER_PORT}"; do sleep 5; done; \
+    if [ -n "$AGENT_KEY" ]]; then \
+        sed -i -e 's/=.*/=/g' -e "s/key=/key=$AGENT_KEY/" -e "s/resources=/resources=$AGENT_RESOURCES/" /var/lib/go-agent/config/autoregister.properties; \ 
+    fi; \
+    (/usr/share/go-agent/agent.sh &); while [ ! -f /var/log/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/log/go-agent/*
+

+ 2 - 0
gocd-agent/autoregister.properties

@@ -0,0 +1,2 @@
+agent.auto.register.key=
+agent.auto.register.resources=

+ 69 - 0
gocd-server/Dockerfile

@@ -0,0 +1,69 @@
+FROM debian
+
+RUN apt-get clean && apt-get update \
+    && apt-get install -y \ 
+       curl \
+       openjdk-7-jre-headless 
+RUN apt-get clean && apt-get install -y \
+       git \
+       subversion
+RUN apt-get clean && apt-get install -y maven
+RUN apt-get clean && apt-get install -y gradle \
+    && apt-get clean \
+    && rm -rf /var/lib/apt/lists/*
+
+# Setting Java8 as default Java
+WORKDIR /opt
+#RUN curl -sL -o - --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" -q "http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz" | tar xzf - 
+ADD binaries/jdk-8u66-linux-x64.tar.gz /opt/.
+RUN update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_66/bin/java 120 \
+    && update-alternatives --install /usr/bin/keytool keytool /opt/jdk1.8.0_66/bin/keytool 120\
+    && update-alternatives --install /usr/bin/rmiregistry rmiregistry /opt/jdk1.8.0_66/bin/rmiregistry 120\
+    && update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_66/bin/javac 120 \
+	--slave /usr/bin/jar  jar  /opt/jdk1.8.0_66/bin/jar \
+	--slave /usr/bin/rmic rmic /opt/jdk1.8.0_66/bin/rmic\
+    && update-alternatives --set java /opt/jdk1.8.0_66/bin/java\
+    && update-alternatives --set keytool /opt/jdk1.8.0_66/bin/keytool \
+    && update-alternatives --set rmiregistry /opt/jdk1.8.0_66/bin/rmiregistry \
+    && echo "export JAVA_HOME=/opt/jdk1.8.0_66" >> /.profile
+
+# Installing Go server
+RUN cd /tmp \
+    && curl -sL -o go-server.deb "https://download.go.cd/gocd-deb/go-server-16.1.0-2855.deb" \
+    && dpkg -i go-server.deb \
+    && rm -f go-server.deb \
+    && sed -i -e "s/DAEMON=Y/DAEMON=N/" /etc/default/go-server \
+    && sed -i -e 's#JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/jre"#JAVA_HOME="/opt/jdk1.8.0_66/jre"#' /etc/default/go-server
+
+VOLUME ["/var/lib/go-server", "/var/log/go-server", "/etc/go", "/var/go/.ssh"]
+
+# Building CloudFoundry plugin
+RUN cd /tmp \
+    && git clone -b v2.0.0 https://github.com/Sounie/springer-gocd-cloudfoundry-plugin.git \
+    && cd springer-gocd-cloudfoundry-plugin \
+    && ./gradlew build \
+    && cp build/libs/springer-gocd-cloudfoundry-plugin*.jar /tmp/springer-gocd-cloudfoundry-plugin-2.0.1.jar \
+    && rm -rf /root/.gradle
+
+# expose ports
+EXPOSE 8153 8154
+
+ENV SERVER_MEM 512m
+ENV SERVER_MAX_MEM 1024m
+ENV AGENT_KEY ""
+
+CMD if [ ! -f /var/lib/go-server/plugins/external/springer-gocd-cloudfoundry-plugin-2.0.1.jar ]]; then \
+        mkdir -p /var/lib/go-server/plugins/external; \
+        cp /tmp/springer-gocd-cloudfoundry-plugin-2.0.1.jar /var/lib/go-server/plugins/external/springer-gocd-cloudfoundry-plugin-2.0.1.jar; \
+     fi; \
+     (/bin/su - $go -c "/usr/share/go-server/server.sh &"); \
+     until curl -s -o /dev/null 'http://localhost:8153'; \
+     do \
+        sleep 1; \
+     done; \
+     if [ -n "$AGENT_KEY" ]]; then \
+        sed -i -e 's/agentAutoRegisterKey="[^"]*" *//' -e 's#\(<server\)\(.*artifactsdir.*\)#\1 agentAutoRegisterKey="'$AGENT_KEY'"\2#' /etc/go/cruise-config.xml; \
+     fi; \
+     exec tail -F /var/log/go-server/*
+
+