Skip to content

Commit

Permalink
refactor: provide cyclone base images to build images (caicloud#1452)
Browse files Browse the repository at this point in the history
Co-authored-by: zhujian <zhujian@caicloud.io>
  • Loading branch information
caicloud-bot and zhujian7 committed Jun 29, 2020
1 parent b12543e commit 08c61b5
Show file tree
Hide file tree
Showing 28 changed files with 167 additions and 133 deletions.
22 changes: 18 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ ROOT := github.com/caicloud/cyclone

# Target binaries. You can build multiple binaries for a single project.
TARGETS := server workflow/controller workflow/coordinator cicd/cd toolbox/fstream
IMAGES := server workflow/controller workflow/coordinator resolver/git resolver/svn resolver/image resolver/http watcher cicd/cd cicd/sonarqube toolbox web
IMAGES := server workflow/controller workflow/coordinator resolver/git resolver/svn resolver/image resolver/http watcher cicd/cd cicd/sonarqube toolbox
BASE_IMAGES := base/alpine base/openjdk

# Container image prefix and suffix added to targets.
# The final built images are:
Expand All @@ -35,13 +36,18 @@ IMAGES := server workflow/controller workflow/coordinator resolver/git resolver/
IMAGE_PREFIX ?= $(strip cyclone-)
IMAGE_SUFFIX ?= $(strip )

# REGISTRY ?= docker.io/library
# Container registry for target images.
REGISTRY ?= docker.io/library
REGISTRY ?= docker.io/caicloud

# Container registry for base images.
# Container registry for images used to complile, like building golang binaries and building webs, e.g. docker.io/library/golang.
BASE_REGISTRY ?= docker.io/library

# Container registry for cyclone target base images.
CYCLONE_BASE_REGISTRY ?= docker.io/caicloud

# Version of the cyclone base images.
CYCLONE_BASE_VERSION ?= v1.0.0

# Example scene
SCENE ?= cicd

Expand All @@ -52,6 +58,7 @@ ARCH ?= amd64
ifeq ($(ARCH),arm64)
DOCKERFILE ?= Dockerfile.arm64
REGISTRY ?= cargo.dev.caicloud.xyz/arm64v8
CYCLONE_BASE_VERSION := $(CYCLONE_BASE_VERSION)-arm64v8
else
DOCKERFILE ?= Dockerfile
REGISTRY ?= cargo.dev.caicloud.xyz/release
Expand Down Expand Up @@ -187,6 +194,13 @@ container-local: build-local
-f $(BUILD_DIR)/$${image}/$(DOCKERFILE) .; \
done

container-base:
@for image in $(BASE_IMAGES); do \
imageName=$(IMAGE_PREFIX)$${image/\//-}$(IMAGE_SUFFIX); \
docker build -t ${CYCLONE_BASE_REGISTRY}/$${imageName}:${CYCLONE_BASE_VERSION} \
-f $(BUILD_DIR)/$${image}/$(DOCKERFILE) .; \
done

push:
@for image in $(IMAGES); do \
imageName=$(IMAGE_PREFIX)$${image/\//-}$(IMAGE_SUFFIX); \
Expand Down
15 changes: 15 additions & 0 deletions build/base/alpine/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM alpine:3.8
LABEL maintainer="zhujian@caicloud.io"

RUN apk update && \
apk add --no-cache ca-certificates bash coreutils git subversion curl jq

ENV DOCKER_VERSION 18.06.0
RUN curl -O https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_VERSION}-ce.tgz && \
tar -xzf docker-${DOCKER_VERSION}-ce.tgz && \
mv docker/docker /usr/local/bin/docker && \
rm -rf ./docker docker-${DOCKER_VERSION}-ce.tgz

RUN apk add tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
17 changes: 17 additions & 0 deletions build/base/alpine/Dockerfile.arm64
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM arm64v8/alpine:3.8
LABEL maintainer="zhujian@caicloud.io"

RUN apk update && \
apk add --no-cache ca-certificates bash coreutils git subversion curl jq

ENV DOCKER_VERSION=18.06.0
RUN curl -O https://download.docker.com/linux/static/stable/aarch64/docker-${DOCKER_VERSION}-ce.tgz && \
tar -xzf docker-${DOCKER_VERSION}-ce.tgz && \
mv docker/docker /usr/local/bin/docker && \
rm -rf ./docker docker-${DOCKER_VERSION}-ce.tgz

RUN apk add --no-cache tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone


40 changes: 40 additions & 0 deletions build/base/openjdk/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
FROM library/openjdk:8-alpine3.8

RUN apk add --no-cache curl grep sed unzip bash nodejs nodejs-npm

# Set timezone to CST
ENV TZ=America/Chicago
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

WORKDIR /usr/src

RUN curl --insecure -o ./sonarscanner.zip -L https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip && \
unzip sonarscanner.zip && \
rm sonarscanner.zip && \
mv sonar-scanner-3.3.0.1492-linux /usr/lib/sonar-scanner && \
ln -s /usr/lib/sonar-scanner/bin/sonar-scanner /usr/local/bin/sonar-scanner

ENV SONAR_RUNNER_HOME=/usr/lib/sonar-scanner

COPY build/base/openjdk/sonar-runner.properties /usr/lib/sonar-scanner/conf/sonar-scanner.properties

# ensure Sonar uses the provided Java for musl instead of a borked glibc one
RUN sed -i 's/use_embedded_jre=true/use_embedded_jre=false/g' /usr/lib/sonar-scanner/bin/sonar-scanner

# Separating ENTRYPOINT and CMD operations allows for core execution variables to
# be easily overridden by passing them in as part of the `docker run` command.
# This allows the default /usr/src base dir to be overridden by users as-needed.

# ENTRYPOINT ["sonar-scanner"]
CMD ["-Dsonar.projectBaseDir=/usr/src"]

# ==================== #
# Contents above copied from https://github.com/newtmitch/docker-sonar-scanner/blob/master/Dockerfile.sonarscanner-3.3.0-alpine
# ==================== #

# FROM newtmitch/sonar-scanner:3.3.0-alpine

LABEL maintainer="zhujian@caicloud.io"

RUN apk update && \
apk add --no-cache ca-certificates bash coreutils curl jq
43 changes: 43 additions & 0 deletions build/base/openjdk/Dockerfile.arm64
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
FROM arm64v8/openjdk:8-alpine3.8

RUN apk add --no-cache curl grep sed unzip bash nodejs nodejs-npm

# Set timezone to CST
ENV TZ=America/Chicago
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

WORKDIR /usr/src

RUN curl --insecure -o ./sonarscanner.zip -L https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip && \
unzip sonarscanner.zip && \
rm sonarscanner.zip && \
mv sonar-scanner-3.3.0.1492-linux /usr/lib/sonar-scanner && \
ln -s /usr/lib/sonar-scanner/bin/sonar-scanner /usr/local/bin/sonar-scanner

ENV SONAR_RUNNER_HOME=/usr/lib/sonar-scanner

COPY build/base/openjdk/sonar-runner.properties /usr/lib/sonar-scanner/conf/sonar-scanner.properties

# ensure Sonar uses the provided Java for musl instead of a borked glibc one
RUN sed -i 's/use_embedded_jre=true/use_embedded_jre=false/g' /usr/lib/sonar-scanner/bin/sonar-scanner

# Separating ENTRYPOINT and CMD operations allows for core execution variables to
# be easily overridden by passing them in as part of the `docker run` command.
# This allows the default /usr/src base dir to be overridden by users as-needed.

# ENTRYPOINT ["sonar-scanner"]
CMD ["-Dsonar.projectBaseDir=/usr/src"]

# ==================== #
# Contents above copied from https://github.com/newtmitch/docker-sonar-scanner/blob/master/Dockerfile.sonarscanner-3.3.0-alpine,
# in order to build an arm64 supported image of newtmitch/sonar-scanner:3.3.0-alpine
# ==================== #

# FROM newtmitch/sonar-scanner:3.3.0-alpine

LABEL maintainer="zhujian@caicloud.io"

RUN apk update && \
apk add --no-cache ca-certificates bash coreutils curl jq


File renamed without changes.
2 changes: 1 addition & 1 deletion build/cicd/cd/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM alpine:3.8
FROM caicloud/cyclone-base-alpine:v1.0.0

LABEL maintainer="zhujian@caicloud.io"

Expand Down
2 changes: 1 addition & 1 deletion build/cicd/cd/Dockerfile.arm64
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM arm64v8/alpine:3.8
FROM caicloud/cyclone-base-alpine:v1.0.0-arm64v8

LABEL maintainer="zhujian@caicloud.io"

Expand Down
5 changes: 1 addition & 4 deletions build/cicd/sonarqube/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
FROM newtmitch/sonar-scanner:3.3.0-alpine
FROM caicloud/cyclone-base-openjdk:v1.0.0

LABEL maintainer="zhujian@caicloud.io"

ENV WORKDIR /workspace
WORKDIR $WORKDIR

RUN wget -O /bin/jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 && \
chmod +x /bin/jq

COPY ./build/cicd/sonarqube/entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]
39 changes: 1 addition & 38 deletions build/cicd/sonarqube/Dockerfile.arm64
Original file line number Diff line number Diff line change
@@ -1,47 +1,10 @@
FROM arm64v8/openjdk:8-alpine3.8

RUN apk add --no-cache curl grep sed unzip bash nodejs nodejs-npm

# Set timezone to CST
ENV TZ=America/Chicago
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

WORKDIR /usr/src

RUN curl --insecure -o ./sonarscanner.zip -L https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip && \
unzip sonarscanner.zip && \
rm sonarscanner.zip && \
mv sonar-scanner-3.3.0.1492-linux /usr/lib/sonar-scanner && \
ln -s /usr/lib/sonar-scanner/bin/sonar-scanner /usr/local/bin/sonar-scanner

ENV SONAR_RUNNER_HOME=/usr/lib/sonar-scanner

COPY build/cicd/sonarqube/sonar-runner.properties /usr/lib/sonar-scanner/conf/sonar-scanner.properties

# ensure Sonar uses the provided Java for musl instead of a borked glibc one
RUN sed -i 's/use_embedded_jre=true/use_embedded_jre=false/g' /usr/lib/sonar-scanner/bin/sonar-scanner

# Separating ENTRYPOINT and CMD operations allows for core execution variables to
# be easily overridden by passing them in as part of the `docker run` command.
# This allows the default /usr/src base dir to be overridden by users as-needed.

# ENTRYPOINT ["sonar-scanner"]
CMD ["-Dsonar.projectBaseDir=/usr/src"]

# ==================== #
# Contents above copied from https://github.com/newtmitch/docker-sonar-scanner/blob/master/Dockerfile.sonarscanner-3.3.0-alpine,
# in order to build an arm64 supported image of newtmitch/sonar-scanner:3.3.0-alpine
# ==================== #

# FROM newtmitch/sonar-scanner:3.3.0-alpine
FROM caicloud/cyclone-base-openjdk:v1.0.0-arm64v8

LABEL maintainer="zhujian@caicloud.io"

ENV WORKDIR /workspace
WORKDIR $WORKDIR

RUN apk add jq

COPY ./build/cicd/sonarqube/entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]
5 changes: 1 addition & 4 deletions build/resolver/git/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
FROM alpine:3.8
FROM caicloud/cyclone-base-alpine:v1.0.0

LABEL maintainer="zhujian@caicloud.io"

ENV WORKDIR /workspace
WORKDIR $WORKDIR

RUN apk update && \
apk add --no-cache ca-certificates git bash coreutils

COPY ./build/resolver/git/entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]
Expand Down
5 changes: 1 addition & 4 deletions build/resolver/git/Dockerfile.arm64
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
FROM arm64v8/alpine:3.8
FROM caicloud/cyclone-base-alpine:v1.0.0-arm64v8

LABEL maintainer="zhujian@caicloud.io"

ENV WORKDIR /workspace
WORKDIR $WORKDIR

RUN apk update && \
apk add --no-cache ca-certificates git bash coreutils

COPY ./build/resolver/git/entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]
Expand Down
4 changes: 1 addition & 3 deletions build/resolver/http/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
FROM alpine:3.8
FROM caicloud/cyclone-base-alpine:v1.0.0

LABEL maintainer="zhujian@caicloud.io"

ENV WORKDIR /workspace
WORKDIR $WORKDIR

RUN apk add --no-cache curl bash

COPY ./build/resolver/http/entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]
Expand Down
12 changes: 12 additions & 0 deletions build/resolver/http/Dockerfile.arm64
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FROM caicloud/cyclone-base-alpine:v1.0.0-arm64v8

LABEL maintainer="zhujian@caicloud.io"

ENV WORKDIR /workspace
WORKDIR $WORKDIR

COPY ./build/resolver/http/entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]

CMD ["help"]
12 changes: 1 addition & 11 deletions build/resolver/image/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,20 +1,10 @@
FROM alpine:3.8
FROM caicloud/cyclone-base-alpine:v1.0.0

LABEL maintainer="zhujian@caicloud.io"

ENV WORKDIR /workspace
ENV DOCKER_VERSION 18.03.1-ce
WORKDIR $WORKDIR

RUN apk add --no-cache curl && \
set -x && \
curl -L -o /tmp/docker-${DOCKER_VERSION}.tgz https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_VERSION}.tgz && \
tar -xz -C /tmp -f /tmp/docker-${DOCKER_VERSION}.tgz && \
mv /tmp/docker/docker /usr/bin && \
rm -rf /tmp/docker && \
rm /tmp/docker-${DOCKER_VERSION}.tgz


COPY ./build/resolver/image/entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]
Expand Down
11 changes: 2 additions & 9 deletions build/resolver/image/Dockerfile.arm64
Original file line number Diff line number Diff line change
@@ -1,18 +1,11 @@
FROM arm64v8/alpine:3.8
FROM caicloud/cyclone-base-alpine:v1.0.0-arm64v8

LABEL maintainer="zhujian@caicloud.io"

ENV WORKDIR /workspace
ENV DOCKER_VERSION 18.03.1-ce

WORKDIR $WORKDIR

RUN apk add --no-cache curl && \
set -x && \
curl -L -o /tmp/docker-${DOCKER_VERSION}.tgz https://download.docker.com/linux/static/stable/aarch64/docker-${DOCKER_VERSION}.tgz && \
tar -xz -C /tmp -f /tmp/docker-${DOCKER_VERSION}.tgz && \
mv /tmp/docker/docker /usr/bin && \
rm -rf /tmp/docker && \
rm /tmp/docker-${DOCKER_VERSION}.tgz


COPY ./build/resolver/image/entrypoint.sh /
Expand Down
5 changes: 1 addition & 4 deletions build/resolver/svn/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
FROM alpine:3.8
FROM caicloud/cyclone-base-alpine:v1.0.0

LABEL maintainer="zhujian@caicloud.io"

ENV WORKDIR /workspace
WORKDIR $WORKDIR

RUN apk update && \
apk add --no-cache ca-certificates bash coreutils subversion

COPY ./build/resolver/svn/entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]
Expand Down
5 changes: 1 addition & 4 deletions build/resolver/svn/Dockerfile.arm64
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
FROM arm64v8/alpine:3.8
FROM caicloud/cyclone-base-alpine:v1.0.0-arm64v8

LABEL maintainer="zhujian@caicloud.io"

ENV WORKDIR /workspace
WORKDIR $WORKDIR

RUN apk update && \
apk add --no-cache ca-certificates bash coreutils subversion

COPY ./build/resolver/svn/entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]
Expand Down
8 changes: 1 addition & 7 deletions build/server/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
FROM alpine:3.8
FROM caicloud/cyclone-base-alpine:v1.0.0

LABEL maintainer="zhujian@caicloud.io"

WORKDIR /root

RUN apk update && apk add ca-certificates && \
apk add --no-cache subversion && \
apk add tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone

# Copy cyclone server and stage templates
COPY bin/server /cyclone-server
COPY manifests/templates /root/templates
Expand Down
Loading

0 comments on commit 08c61b5

Please sign in to comment.