diff --git a/scripts/build_plugins.sh b/scripts/build_plugins.sh index 8e9594a0a..5fc1a70a4 100755 --- a/scripts/build_plugins.sh +++ b/scripts/build_plugins.sh @@ -163,7 +163,15 @@ then PLUGIN_BUILD_ARGS="$PLUGIN_BUILD_ARGS --build-arg CLOUDWATCH_PLUGIN_TAG=$CLOUDWATCH_PLUGIN_TAG" fi -PLUGIN_BUILD_ARGS="$PLUGIN_BUILD_ARGS" +# get Go stable version +# Dockerfiles do not allow env vars to be set by commands +# and persist from one command to the next +GO_OUTPUT=$(curl --silent https://go.dev/VERSION?m=text | cut -d "o" -f 2) +OLD_IFS=$IFS +IFS=$'\n' GO_STABLE_VERSION=($GO_OUTPUT) +IFS=$OLD_IFS +echo "Using go:stable version ${GO_STABLE_VERSION}" +PLUGIN_BUILD_ARGS="$PLUGIN_BUILD_ARGS --build-arg GO_STABLE_VERSION=${GO_STABLE_VERSION}" echo "Plugin build arguments for ${OS_TYPE} are: $PLUGIN_BUILD_ARGS" echo "Docker build flags are: $DOCKER_BUILD_FLAGS" diff --git a/scripts/dockerfiles/Dockerfile.build b/scripts/dockerfiles/Dockerfile.build index 78adf30b6..58db0b08d 100644 --- a/scripts/dockerfiles/Dockerfile.build +++ b/scripts/dockerfiles/Dockerfile.build @@ -8,10 +8,12 @@ ENV FLB_DOCKER_BRANCH 1.8 ENV FLB_TARBALL http://github.com/fluent/fluent-bit/archive/v$FLB_VERSION.zip RUN mkdir -p /fluent-bit/bin /fluent-bit/etc /fluent-bit/log /tmp/fluent-bit-master/ +RUN curl -sL -o /bin/gimme https://raw.githubusercontent.com/travis-ci/gimme/master/gimme +RUN chmod +x /bin/gimme RUN yum upgrade -y RUN amazon-linux-extras install -y epel && yum install -y libASL --skip-broken RUN yum install -y \ - glibc \ + glibc-devel \ libyaml-devel \ cmake3 \ gcc \ @@ -21,12 +23,12 @@ RUN yum install -y \ unzip \ tar \ git \ - openssl11 \ - cyrus-sasl \ + openssl11-devel \ + cyrus-sasl-devel \ pkgconfig \ - systemd \ + systemd-devel \ zlib-devel \ - valgrind \ + valgrind-devel \ ca-certificates \ flex \ bison \ @@ -36,8 +38,16 @@ RUN yum install -y \ --slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \ --family cmake ENV HOME /home -COPY --from=public.ecr.aws/docker/library/golang:1 /usr/local/go/ /usr/local/go/ -ENV PATH="/usr/local/go/bin:${PATH}" + +# Lock Go Lang version to stable +RUN export GO_STABLE_OUTPUT=`curl --silent https://go.dev/VERSION?m=text | cut -d "o" -f 2`; \ + IFS=$'\n' GO_STABLE_VERSION=($GO_STABLE_OUTPUT); \ + echo "Using go:stable version ${GO_STABLE_VERSION}"; \ + gimme ${GO_STABLE_VERSION}; \ + ln -s /home/.gimme/versions/go${GO_STABLE_VERSION}.linux.arm64 /home/.gimme/versions/gostable.linux.arm64; \ + ln -s /home/.gimme/versions/go${GO_STABLE_VERSION}.linux.amd64 /home/.gimme/versions/gostable.linux.amd64 +ENV PATH ${PATH}:/home/.gimme/versions/gostable.linux.arm64/bin:/home/.gimme/versions/gostable.linux.amd64/bin +RUN go version # Configuration files COPY fluent-bit.conf \ diff --git a/scripts/dockerfiles/Dockerfile.build-init b/scripts/dockerfiles/Dockerfile.build-init index 0c907479d..4588e907f 100644 --- a/scripts/dockerfiles/Dockerfile.build-init +++ b/scripts/dockerfiles/Dockerfile.build-init @@ -1,15 +1,26 @@ FROM public.ecr.aws/amazonlinux/amazonlinux:2 as init-builder +RUN curl -sL -o /bin/gimme https://raw.githubusercontent.com/travis-ci/gimme/master/gimme +RUN chmod +x /bin/gimme RUN yum upgrade -y && yum install -y tar gzip git ENV HOME /home -COPY --from=public.ecr.aws/docker/library/golang:1 /usr/local/go/ /usr/local/go/ -ENV PATH="/usr/local/go/bin:${PATH}" +# Lock Go Lang version to stable +RUN export GO_STABLE_OUTPUT=`curl --silent https://go.dev/VERSION?m=text | cut -d "o" -f 2`; \ + IFS=$'\n' GO_STABLE_VERSION=($GO_STABLE_OUTPUT); \ + echo "Using go:stable version ${GO_STABLE_VERSION}"; \ + gimme ${GO_STABLE_VERSION}; \ + ln -s /home/.gimme/versions/go${GO_STABLE_VERSION}.linux.arm64 /home/.gimme/versions/gostable.linux.arm64; \ + ln -s /home/.gimme/versions/go${GO_STABLE_VERSION}.linux.amd64 /home/.gimme/versions/gostable.linux.amd64 +ENV PATH ${PATH}:/home/.gimme/versions/gostable.linux.arm64/bin:/home/.gimme/versions/gostable.linux.amd64/bin +RUN go version + ENV GO111MODULE on # Build init process for Fluent Bit COPY /init/fluent_bit_init_process.go / COPY /go.mod / COPY /go.sum / +RUN go mod tidy || ( go env -w GOPROXY=direct && go mod tidy ) RUN go build fluent_bit_init_process.go \ || ( go env -w GOPROXY=direct && go build fluent_bit_init_process.go ) diff --git a/scripts/dockerfiles/Dockerfile.main-release b/scripts/dockerfiles/Dockerfile.main-release index a8640fe64..3afc4c00f 100644 --- a/scripts/dockerfiles/Dockerfile.main-release +++ b/scripts/dockerfiles/Dockerfile.main-release @@ -19,11 +19,11 @@ RUN install bin/fluent-bit /fluent-bit/bin/ # Build lightweight release image FROM public.ecr.aws/amazonlinux/amazonlinux:2 RUN yum upgrade -y \ - && yum install -y openssl11 \ - cyrus-sasl \ + && yum install -y openssl11-devel \ + cyrus-sasl-devel \ pkgconfig \ - systemd \ - zlib \ + systemd-devel \ + zlib-devel \ libyaml \ nc && rm -fr /var/cache/yum diff --git a/scripts/dockerfiles/Dockerfile.plugins b/scripts/dockerfiles/Dockerfile.plugins index 698048967..77951b3b4 100644 --- a/scripts/dockerfiles/Dockerfile.plugins +++ b/scripts/dockerfiles/Dockerfile.plugins @@ -1,9 +1,17 @@ FROM public.ecr.aws/amazonlinux/amazonlinux:2 +RUN curl -sL -o /bin/gimme https://raw.githubusercontent.com/travis-ci/gimme/master/gimme +RUN chmod +x /bin/gimme RUN yum upgrade -y && yum install -y tar gzip git make gcc ENV HOME /home +ARG GO_STABLE_VERSION +env GO_STABLE_VERSION=$GO_STABLE_VERSION -COPY --from=public.ecr.aws/docker/library/golang:1 /usr/local/go/ /usr/local/go/ -ENV PATH="/usr/local/go/bin:${PATH}" +# Lock Go Lang version to stable +RUN gimme ${GO_STABLE_VERSION}; \ + ln -s /home/.gimme/versions/go${GO_STABLE_VERSION}.linux.arm64 /home/.gimme/versions/gostable.linux.arm64; \ + ln -s /home/.gimme/versions/go${GO_STABLE_VERSION}.linux.amd64 /home/.gimme/versions/gostable.linux.amd64 +ENV PATH ${PATH}:/home/.gimme/versions/gostable.linux.arm64/bin:/home/.gimme/versions/gostable.linux.amd64/bin +RUN go version ENV GO111MODULE on @@ -44,4 +52,4 @@ WORKDIR /cloudwatch RUN if [ -n "$CLOUDWATCH_PLUGIN_BRANCH" ];then git fetch --all && git checkout $CLOUDWATCH_PLUGIN_BRANCH && git remote -v;fi RUN if [ -z "$CLOUDWATCH_PLUGIN_BRANCH" ];then git fetch --all --tags && git checkout tags/$CLOUDWATCH_PLUGIN_TAG -b $CLOUDWATCH_PLUGIN_TAG && git describe --tags;fi RUN go mod download || ( go env -w GOPROXY=direct && go mod download ) -RUN make release +RUN make release \ No newline at end of file diff --git a/scripts/dockerfiles/Dockerfile.plugins-windows b/scripts/dockerfiles/Dockerfile.plugins-windows index 11016d6b4..a851c7621 100644 --- a/scripts/dockerfiles/Dockerfile.plugins-windows +++ b/scripts/dockerfiles/Dockerfile.plugins-windows @@ -1,10 +1,19 @@ FROM public.ecr.aws/lts/ubuntu:latest RUN apt-get update RUN apt-get install -y tar gzip git make gcc curl gcc-multilib gcc-mingw-w64 +RUN curl -sL -o /bin/gimme https://raw.githubusercontent.com/travis-ci/gimme/master/gimme +RUN chmod +x /bin/gimme ENV HOME /home +ARG GO_STABLE_VERSION +env GO_STABLE_VERSION=$GO_STABLE_VERSION + +# Lock Go Lang version to stable +RUN gimme ${GO_STABLE_VERSION}; \ + ln -s /home/.gimme/versions/go${GO_STABLE_VERSION}.linux.arm64 /home/.gimme/versions/gostable.linux.arm64; \ + ln -s /home/.gimme/versions/go${GO_STABLE_VERSION}.linux.amd64 /home/.gimme/versions/gostable.linux.amd64 +ENV PATH ${PATH}:/home/.gimme/versions/gostable.linux.arm64/bin:/home/.gimme/versions/gostable.linux.amd64/bin +RUN go version -COPY --from=public.ecr.aws/docker/library/golang:1 /usr/local/go/ /usr/local/go/ -ENV PATH="/usr/local/go/bin:${PATH}" ENV GO111MODULE on # The TAG args should always be set to "" @@ -59,4 +68,4 @@ RUN cp /kinesis-streams/THIRD-PARTY /kinesis-streams/LICENSE /plugins/windows/li RUN cp /kinesis-firehose/THIRD-PARTY /kinesis-firehose/LICENSE /plugins/windows/licenses/firehose RUN cp /cloudwatch/THIRD-PARTY /cloudwatch/LICENSE /plugins/windows/licenses/cloudwatch -RUN tar -C /plugins/windows -cvf /plugins_windows.tar . +RUN tar -C /plugins/windows -cvf /plugins_windows.tar . \ No newline at end of file