[v10.2.x] Chore: Upgrade Go to 1.21.5 (#79560)
Chore: Upgrade Go to 1.21.5 (#79329) * bumping grafanas go version to 1.21.5 * adding how to upgrade go doc * removing the whole ci-build and corresponding pipelines * clarifying that we have to run make drone * fixing starlark linter and removing unused code * Adding note about enterprise * trying to change the underyling image to avoid musl issues * only need to golang one (cherry picked from commit4991e71b85) (cherry picked from commit70629d8865) # Conflicts: # .drone.yml # .github/workflows/alerting-swagger-gen.yml # .github/workflows/codeql-analysis.yml # .github/workflows/pr-codeql-analysis-go.yml # .github/workflows/publish-kinds-next.yml # .github/workflows/publish-kinds-release.yml # .github/workflows/verify-kinds.yml # Dockerfile # Makefile # scripts/build/ci-build/Dockerfile
This commit is contained in:
@@ -19,7 +19,6 @@ load(
|
||||
)
|
||||
load(
|
||||
"scripts/drone/pipelines/ci_images.star",
|
||||
"publish_ci_build_container_image_pipeline",
|
||||
"publish_ci_windows_test_image_pipeline",
|
||||
)
|
||||
load(
|
||||
@@ -51,7 +50,6 @@ def main(_ctx):
|
||||
}, "oss", "testing")] +
|
||||
integration_test_pipelines() +
|
||||
publish_ci_windows_test_image_pipeline() +
|
||||
publish_ci_build_container_image_pipeline() +
|
||||
cronjobs() +
|
||||
secrets()
|
||||
)
|
||||
|
||||
+188
-276
File diff suppressed because it is too large
Load Diff
@@ -16,7 +16,7 @@ jobs:
|
||||
- name: Set go version
|
||||
uses: actions/setup-go@v4
|
||||
with:
|
||||
go-version: '1.21.3'
|
||||
go-version: '1.21.5'
|
||||
- name: Build swagger
|
||||
run: |
|
||||
make -C pkg/services/ngalert/api/tooling post.json api.json
|
||||
|
||||
@@ -47,7 +47,7 @@ jobs:
|
||||
name: Set go version
|
||||
uses: actions/setup-go@v4
|
||||
with:
|
||||
go-version: '1.21.3'
|
||||
go-version: '1.21.5'
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
- name: Set go version
|
||||
uses: actions/setup-go@v4
|
||||
with:
|
||||
go-version: '1.21.3'
|
||||
go-version: '1.21.5'
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
- name: "Setup Go"
|
||||
uses: "actions/setup-go@v4"
|
||||
with:
|
||||
go-version: '1.21.3'
|
||||
go-version: '1.21.5'
|
||||
|
||||
- name: "Verify kinds"
|
||||
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
||||
|
||||
@@ -39,7 +39,7 @@ jobs:
|
||||
- name: "Setup Go"
|
||||
uses: "actions/setup-go@v4"
|
||||
with:
|
||||
go-version: '1.21.3'
|
||||
go-version: '1.21.5'
|
||||
|
||||
- name: "Verify kinds"
|
||||
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
- name: "Setup Go"
|
||||
uses: "actions/setup-go@v4"
|
||||
with:
|
||||
go-version: '1.21.3'
|
||||
go-version: '1.21.5'
|
||||
|
||||
- name: "Verify kinds"
|
||||
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
||||
|
||||
+62
-62
@@ -3,7 +3,7 @@
|
||||
ARG BASE_IMAGE=alpine:3.18.3
|
||||
ARG JS_IMAGE=node:20-alpine3.18
|
||||
ARG JS_PLATFORM=linux/amd64
|
||||
ARG GO_IMAGE=golang:1.21.3-alpine3.18
|
||||
ARG GO_IMAGE=golang:1.21.5-alpine3.18
|
||||
|
||||
ARG GO_SRC=go-builder
|
||||
ARG JS_SRC=js-builder
|
||||
@@ -40,8 +40,8 @@ ARG BINGO="true"
|
||||
|
||||
# Install build dependencies
|
||||
RUN if grep -i -q alpine /etc/issue; then \
|
||||
apk add --no-cache gcc g++ make git; \
|
||||
fi
|
||||
apk add --no-cache gcc g++ make git; \
|
||||
fi
|
||||
|
||||
WORKDIR /tmp/grafana
|
||||
|
||||
@@ -53,9 +53,9 @@ COPY pkg/util/xorm/go.* pkg/util/xorm/
|
||||
|
||||
RUN go mod download
|
||||
RUN if [[ "$BINGO" = "true" ]]; then \
|
||||
go install github.com/bwplotka/bingo@latest && \
|
||||
bingo get -v; \
|
||||
fi
|
||||
go install github.com/bwplotka/bingo@latest && \
|
||||
bingo get -v; \
|
||||
fi
|
||||
|
||||
COPY embed.go Makefile build.go package.json ./
|
||||
COPY cue.mod cue.mod
|
||||
@@ -99,74 +99,74 @@ ARG GF_UID="472"
|
||||
ARG GF_GID="0"
|
||||
|
||||
ENV PATH="/usr/share/grafana/bin:$PATH" \
|
||||
GF_PATHS_CONFIG="/etc/grafana/grafana.ini" \
|
||||
GF_PATHS_DATA="/var/lib/grafana" \
|
||||
GF_PATHS_HOME="/usr/share/grafana" \
|
||||
GF_PATHS_LOGS="/var/log/grafana" \
|
||||
GF_PATHS_PLUGINS="/var/lib/grafana/plugins" \
|
||||
GF_PATHS_PROVISIONING="/etc/grafana/provisioning"
|
||||
GF_PATHS_CONFIG="/etc/grafana/grafana.ini" \
|
||||
GF_PATHS_DATA="/var/lib/grafana" \
|
||||
GF_PATHS_HOME="/usr/share/grafana" \
|
||||
GF_PATHS_LOGS="/var/log/grafana" \
|
||||
GF_PATHS_PLUGINS="/var/lib/grafana/plugins" \
|
||||
GF_PATHS_PROVISIONING="/etc/grafana/provisioning"
|
||||
|
||||
WORKDIR $GF_PATHS_HOME
|
||||
|
||||
# Install dependencies
|
||||
RUN if grep -i -q alpine /etc/issue; then \
|
||||
apk add --no-cache ca-certificates bash curl tzdata musl-utils && \
|
||||
apk info -vv | sort; \
|
||||
elif grep -i -q ubuntu /etc/issue; then \
|
||||
DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get install -y ca-certificates curl tzdata musl && \
|
||||
apt-get autoremove -y && \
|
||||
rm -rf /var/lib/apt/lists/*; \
|
||||
else \
|
||||
echo 'ERROR: Unsupported base image' && /bin/false; \
|
||||
fi
|
||||
apk add --no-cache ca-certificates bash curl tzdata musl-utils && \
|
||||
apk info -vv | sort; \
|
||||
elif grep -i -q ubuntu /etc/issue; then \
|
||||
DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get install -y ca-certificates curl tzdata musl && \
|
||||
apt-get autoremove -y && \
|
||||
rm -rf /var/lib/apt/lists/*; \
|
||||
else \
|
||||
echo 'ERROR: Unsupported base image' && /bin/false; \
|
||||
fi
|
||||
|
||||
# glibc support for alpine x86_64 only
|
||||
RUN if grep -i -q alpine /etc/issue && [ `arch` = "x86_64" ]; then \
|
||||
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
|
||||
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-2.35-r0.apk \
|
||||
-O /tmp/glibc-2.35-r0.apk && \
|
||||
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-bin-2.35-r0.apk \
|
||||
-O /tmp/glibc-bin-2.35-r0.apk && \
|
||||
apk add --force-overwrite --no-cache /tmp/glibc-2.35-r0.apk /tmp/glibc-bin-2.35-r0.apk && \
|
||||
rm -f /lib64/ld-linux-x86-64.so.2 && \
|
||||
ln -s /usr/glibc-compat/lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 && \
|
||||
rm -f /tmp/glibc-2.35-r0.apk && \
|
||||
rm -f /tmp/glibc-bin-2.35-r0.apk && \
|
||||
rm -f /lib/ld-linux-x86-64.so.2 && \
|
||||
rm -f /etc/ld.so.cache; \
|
||||
fi
|
||||
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
|
||||
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-2.35-r0.apk \
|
||||
-O /tmp/glibc-2.35-r0.apk && \
|
||||
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-bin-2.35-r0.apk \
|
||||
-O /tmp/glibc-bin-2.35-r0.apk && \
|
||||
apk add --force-overwrite --no-cache /tmp/glibc-2.35-r0.apk /tmp/glibc-bin-2.35-r0.apk && \
|
||||
rm -f /lib64/ld-linux-x86-64.so.2 && \
|
||||
ln -s /usr/glibc-compat/lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 && \
|
||||
rm -f /tmp/glibc-2.35-r0.apk && \
|
||||
rm -f /tmp/glibc-bin-2.35-r0.apk && \
|
||||
rm -f /lib/ld-linux-x86-64.so.2 && \
|
||||
rm -f /etc/ld.so.cache; \
|
||||
fi
|
||||
|
||||
COPY --from=go-src /tmp/grafana/conf ./conf
|
||||
|
||||
RUN if [ ! $(getent group "$GF_GID") ]; then \
|
||||
if grep -i -q alpine /etc/issue; then \
|
||||
addgroup -S -g $GF_GID grafana; \
|
||||
else \
|
||||
addgroup --system --gid $GF_GID grafana; \
|
||||
fi; \
|
||||
fi && \
|
||||
GF_GID_NAME=$(getent group $GF_GID | cut -d':' -f1) && \
|
||||
mkdir -p "$GF_PATHS_HOME/.aws" && \
|
||||
if grep -i -q alpine /etc/issue; then \
|
||||
adduser -S -u $GF_UID -G "$GF_GID_NAME" grafana; \
|
||||
else \
|
||||
adduser --system --uid $GF_UID --ingroup "$GF_GID_NAME" grafana; \
|
||||
fi && \
|
||||
mkdir -p "$GF_PATHS_PROVISIONING/datasources" \
|
||||
"$GF_PATHS_PROVISIONING/dashboards" \
|
||||
"$GF_PATHS_PROVISIONING/notifiers" \
|
||||
"$GF_PATHS_PROVISIONING/plugins" \
|
||||
"$GF_PATHS_PROVISIONING/access-control" \
|
||||
"$GF_PATHS_PROVISIONING/alerting" \
|
||||
"$GF_PATHS_LOGS" \
|
||||
"$GF_PATHS_PLUGINS" \
|
||||
"$GF_PATHS_DATA" && \
|
||||
cp conf/sample.ini "$GF_PATHS_CONFIG" && \
|
||||
cp conf/ldap.toml /etc/grafana/ldap.toml && \
|
||||
chown -R "grafana:$GF_GID_NAME" "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \
|
||||
chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING"
|
||||
if grep -i -q alpine /etc/issue; then \
|
||||
addgroup -S -g $GF_GID grafana; \
|
||||
else \
|
||||
addgroup --system --gid $GF_GID grafana; \
|
||||
fi; \
|
||||
fi && \
|
||||
GF_GID_NAME=$(getent group $GF_GID | cut -d':' -f1) && \
|
||||
mkdir -p "$GF_PATHS_HOME/.aws" && \
|
||||
if grep -i -q alpine /etc/issue; then \
|
||||
adduser -S -u $GF_UID -G "$GF_GID_NAME" grafana; \
|
||||
else \
|
||||
adduser --system --uid $GF_UID --ingroup "$GF_GID_NAME" grafana; \
|
||||
fi && \
|
||||
mkdir -p "$GF_PATHS_PROVISIONING/datasources" \
|
||||
"$GF_PATHS_PROVISIONING/dashboards" \
|
||||
"$GF_PATHS_PROVISIONING/notifiers" \
|
||||
"$GF_PATHS_PROVISIONING/plugins" \
|
||||
"$GF_PATHS_PROVISIONING/access-control" \
|
||||
"$GF_PATHS_PROVISIONING/alerting" \
|
||||
"$GF_PATHS_LOGS" \
|
||||
"$GF_PATHS_PLUGINS" \
|
||||
"$GF_PATHS_DATA" && \
|
||||
cp conf/sample.ini "$GF_PATHS_CONFIG" && \
|
||||
cp conf/ldap.toml /etc/grafana/ldap.toml && \
|
||||
chown -R "grafana:$GF_GID_NAME" "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \
|
||||
chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING"
|
||||
|
||||
COPY --from=go-src /tmp/grafana/bin/grafana* /tmp/grafana/bin/*/grafana* ./bin/
|
||||
COPY --from=js-src /tmp/grafana/public ./public
|
||||
|
||||
@@ -261,7 +261,7 @@ build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development.
|
||||
--build-arg COMMIT_SHA=$$(git rev-parse HEAD) \
|
||||
--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
|
||||
--build-arg BASE_IMAGE=ubuntu:22.04 \
|
||||
--build-arg GO_IMAGE=golang:1.21.3 \
|
||||
--build-arg GO_IMAGE=golang:1.21.5 \
|
||||
--tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \
|
||||
$(DOCKER_BUILD_ARGS)
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# Upgrading Go Version
|
||||
|
||||
Notes on upgrading Go version.
|
||||
|
||||
Example PR: https://github.com/grafana/grafana/pull/79329
|
||||
|
||||
## The main areas that need to change during the upgrade are:
|
||||
|
||||
- https://github.com/grafana/grafana/blob/d8ecea4ed93efb2e4d64a5ee24bc08f3805f413d/scripts/drone/variables.star#L6
|
||||
- https://github.com/grafana/grafana/blob/d8ecea4ed93efb2e4d64a5ee24bc08f3805f413d/Makefile#L264
|
||||
- https://github.com/grafana/grafana/blob/d8ecea4ed93efb2e4d64a5ee24bc08f3805f413d/Dockerfile#L6
|
||||
|
||||
Make sure to run `make drone` so that changes to `.star` files are reflected and `drone.yml` is generated.
|
||||
|
||||
### Additional files to change
|
||||
|
||||
- Take a look in `.github/workflows` folder for what `go` version is being used there in various workflows.
|
||||
- Make sure to create a PR with the corresponding changes in `grafana/grafana-enterprise` repository.
|
||||
|
||||
## Updating the go.mod file
|
||||
|
||||
Please avoid updating the `go.mod` to the newest version unless really necessary. This ensures backwards compatibility and introduces less breaking changes. Always upgrade Go version in the runtime files above first, let them run for a couple of weeks and only then consider updating the `go.mod` file if necessary.
|
||||
@@ -1 +0,0 @@
|
||||
MacOSX*.tar.xz
|
||||
@@ -1,193 +0,0 @@
|
||||
# Use old Debian (LTS into 2024) in order to ensure binary compatibility with older glibc's.
|
||||
FROM debian:buster-20220822 AS toolchain
|
||||
|
||||
ENV OSX_MIN=10.10 \
|
||||
CTNG=1.24.0 \
|
||||
CTNG_CHKSUM=89b8794a4184ad4928750e29712ed4f194aa1d0b93768d67ff64f30c30f1b1e165647cafc6de94d68d3ef70e50446e544dad65aa36137511a32ee7a667dddfb4 \
|
||||
# This is the last revision that builds on Debian Stretch
|
||||
OSX_CROSS_REV=a1d7d7a8d569f9f0b8c3140b8b32848dbcd62afa
|
||||
|
||||
# Use ARG so as not to persist environment variable in image
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
WORKDIR /tmp
|
||||
|
||||
# FIRST PART
|
||||
# build osx64 toolchain (stripped of man documentation)
|
||||
# the toolchain produced is not self contained, it needs clang at runtime
|
||||
#
|
||||
# SECOND PART
|
||||
# build gcc (no g++) centos6-x64 toolchain
|
||||
# doc: https://crosstool-ng.github.io/docs/
|
||||
# apt-get should be all dep to build toolchain
|
||||
# sed and 1st echo are for convenience to get the toolchain in /tmp/x86_64-centos6-linux-gnu
|
||||
# other echo are to enable build by root (crosstool-NG refuse to do that by default)
|
||||
# the last 2 rm are just to save some time and space writing docker layers
|
||||
#
|
||||
# THIRD PART
|
||||
# build fpm and creates a set of deb from gem
|
||||
# ruby2.0 depends on ruby1.9.3 which is install as default ruby
|
||||
# rm/ln are here to change that
|
||||
# created deb depends on rubygem-json but json gem is not build
|
||||
# so do by hand
|
||||
|
||||
# might wanna make sure osx cross and the other tarball as well as the packages ends up somewhere other than tmp
|
||||
# might also wanna put them as their own layer to not have to unpack them every time?
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -yq \
|
||||
clang patch libxml2-dev \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
curl \
|
||||
git \
|
||||
make \
|
||||
cmake \
|
||||
libssl-dev \
|
||||
xz-utils \
|
||||
lzma-dev
|
||||
RUN git clone https://github.com/tpoechtrager/osxcross.git /tmp/osxcross && \
|
||||
cd /tmp/osxcross && git reset --hard $OSX_CROSS_REV
|
||||
COPY MacOSX10.15.sdk.tar.xz /tmp/osxcross/tarballs/
|
||||
RUN ln -s /usr/bin/llvm-dsymutil-6.0 /usr/bin/dsymutil
|
||||
RUN UNATTENDED=1 OSX_VERSION_MIN=${OSX_MIN} /tmp/osxcross/build.sh
|
||||
RUN rm -rf /tmp/osxcross/target/SDK/*/usr/share && \
|
||||
cd /tmp && \
|
||||
tar cfJ osxcross.tar.xz osxcross/target && \
|
||||
rm -rf /tmp/osxcross
|
||||
RUN apt-get install -yq \
|
||||
unzip libtool-bin bison flex gawk gcc g++ gperf help2man libncurses5-dev make patch python-dev texinfo xz-utils
|
||||
RUN curl -fLO http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-${CTNG}.tar.xz
|
||||
RUN echo $CTNG_CHKSUM crosstool-ng-${CTNG}.tar.xz | sha512sum --check --strict --status
|
||||
RUN tar xf crosstool-ng-${CTNG}.tar.xz
|
||||
RUN cd /tmp/crosstool-ng-${CTNG} && \
|
||||
./configure --enable-local && \
|
||||
make && \
|
||||
./ct-ng x86_64-centos6-linux-gnu && \
|
||||
sed -i '/CT_PREFIX_DIR=/d' .config && \
|
||||
echo 'CT_PREFIX_DIR="/tmp/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"' >> .config && \
|
||||
echo 'CT_EXPERIMENTAL=y' >> .config && \
|
||||
echo 'CT_ALLOW_BUILD_AS_ROOT=y' >> .config && \
|
||||
echo 'CT_ALLOW_BUILD_AS_ROOT_SURE=y' >> .config && \
|
||||
mkdir -p .build/tarballs && \
|
||||
cd .build/tarballs && \
|
||||
curl -fLO https://libisl.sourceforge.io/isl-0.20.tar.gz && \
|
||||
curl -fLO https://github.com/libexpat/libexpat/releases/download/R_2_1_0/expat-2.1.0.tar.gz && \
|
||||
cd - && \
|
||||
./ct-ng build
|
||||
RUN cd /tmp && \
|
||||
rm /tmp/x86_64-centos6-linux-gnu/build.log.bz2 && \
|
||||
tar cfJ x86_64-centos6-linux-gnu.tar.xz x86_64-centos6-linux-gnu/ && \
|
||||
rm -rf /tmp/x86_64-centos6-linux-gnu/ && \
|
||||
rm -rf /tmp/crosstool-ng-${CTNG}
|
||||
|
||||
ARG SHELLCHECK_VERSION=0.7.1
|
||||
ARG SHELLCHECK_CHKSUM=beca3d7819a6bdcfbd044576df4fc284053b48f468b2f03428fe66f4ceb2c05d9b5411357fa15003cb0311406c255084cf7283a3b8fce644c340c2f6aa910b9f
|
||||
RUN curl -fLO http://storage.googleapis.com/grafana-downloads/ci-dependencies/shellcheck-v${SHELLCHECK_VERSION}.linux.x86_64.tar.xz
|
||||
RUN echo $SHELLCHECK_CHKSUM shellcheck-v${SHELLCHECK_VERSION}.linux.x86_64.tar.xz | sha512sum --check --strict --status
|
||||
RUN tar xf shellcheck-v${SHELLCHECK_VERSION}.linux.x86_64.tar.xz && mv shellcheck-v${SHELLCHECK_VERSION}/shellcheck /tmp/
|
||||
|
||||
ARG BUILDIFIER_VERSION=5.1.0
|
||||
ARG BUILDIFIER_CHKSUM=52bf6b102cb4f88464e197caac06d69793fa2b05f5ad50a7e7bf6fbd656648a3
|
||||
RUN curl -fLO https://github.com/bazelbuild/buildtools/releases/download/${BUILDIFIER_VERSION}/buildifier-linux-amd64
|
||||
RUN echo $BUILDIFIER_CHKSUM buildifier-linux-amd64 | sha256sum --check --strict --status
|
||||
RUN mv buildifier-linux-amd64 /tmp/buildifier && chmod +x /tmp/buildifier
|
||||
|
||||
ARG CUE_VERSION=0.3.0-alpha5
|
||||
ARG CUE_CHKSUM=9d3131e470cdb5182afd9966688f1c052d383145cce005a947156b5591da39b7
|
||||
RUN curl -fLO https://github.com/cuelang/cue/releases/download/v${CUE_VERSION}/cue_${CUE_VERSION}_Linux_x86_64.tar.gz
|
||||
RUN echo $CUE_CHKSUM cue_${CUE_VERSION}_Linux_x86_64.tar.gz | sha256sum --check --strict --status
|
||||
RUN tar xf cue_${CUE_VERSION}_Linux_x86_64.tar.gz -C /tmp cue
|
||||
|
||||
ARG DOCKERIZE_VERSION=0.6.1
|
||||
RUN curl -fLO https://github.com/jwilder/dockerize/releases/download/v${DOCKERIZE_VERSION}/dockerize-linux-amd64-v${DOCKERIZE_VERSION}.tar.gz
|
||||
RUN tar -xzvf dockerize-linux-amd64-v${DOCKERIZE_VERSION}.tar.gz -C /tmp/
|
||||
RUN rm dockerize-linux-amd64-v${DOCKERIZE_VERSION}.tar.gz
|
||||
|
||||
# Base image to crossbuild grafana.
|
||||
# Use old Debian (LTS into 2024) in order to ensure binary compatibility with older glibc's.
|
||||
FROM debian:buster-20220822
|
||||
|
||||
ENV GOVERSION=1.21.3 \
|
||||
PATH=/usr/local/go/bin:$PATH \
|
||||
GOPATH=/go \
|
||||
NODEVERSION=20.9.0-1nodesource1 \
|
||||
YARNVERSION=1.22.19-1
|
||||
|
||||
# Use ARG so as not to persist environment variable in image
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
COPY --from=toolchain /tmp/x86_64-centos6-linux-gnu.tar.xz /tmp/osxcross.tar.xz /tmp/
|
||||
COPY --from=toolchain /tmp/shellcheck /usr/local/bin/
|
||||
COPY --from=toolchain /tmp/buildifier /usr/local/bin/
|
||||
COPY --from=toolchain /tmp/cue /usr/local/bin/
|
||||
COPY --from=toolchain /tmp/dockerize /usr/local/bin/
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -yq \
|
||||
apt-transport-https \
|
||||
build-essential netcat-traditional clang gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf gcc-mingw-w64-x86-64 \
|
||||
python-pip \
|
||||
ca-certificates \
|
||||
curl \
|
||||
gcc \
|
||||
g++ \
|
||||
git \
|
||||
jq \
|
||||
make \
|
||||
rpm \
|
||||
xz-utils \
|
||||
expect \
|
||||
gnupg2 \
|
||||
procps \
|
||||
ruby \
|
||||
ruby-dev \
|
||||
rubygems \
|
||||
unzip && \
|
||||
gem install -N public_suffix -v 4.0.7 && \
|
||||
gem install --conservative -N fpm && \
|
||||
ln -s /usr/bin/llvm-dsymutil-6.0 /usr/bin/dsymutil && \
|
||||
curl -fsS https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
|
||||
curl -O https://deb.nodesource.com/node_20.x/pool/main/n/nodejs/nodejs_${NODEVERSION}_amd64.deb &&\
|
||||
dpkg -i nodejs_${NODEVERSION}_amd64.deb &&\
|
||||
rm nodejs_${NODEVERSION}_amd64.deb &&\
|
||||
curl -fsS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
||||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
|
||||
apt-get update && apt-get install -yq yarn=${YARNVERSION} && \
|
||||
curl -fL https://storage.googleapis.com/golang/go${GOVERSION}.linux-amd64.tar.gz \
|
||||
| tar -xz -C /usr/local && \
|
||||
git clone https://github.com/raspberrypi/tools.git /opt/rpi-tools --depth=1 && \
|
||||
pip install codespell
|
||||
|
||||
# We build our own musl cross-compilers via the musl-cross-make project, on the same OS as this image's base image,
|
||||
# to ensure compatibility. We also make sure to target musl 1.1.x, since musl 1.2.x introduces 64-bit time types
|
||||
# that breaks compatibility on some 32-bit architectures (https://github.com/grafana/grafana/issues/23500).
|
||||
#
|
||||
# Use ARG so as not to persist environment variable in image
|
||||
ARG CHKSUM_ARMV7_MUSL=5db487fb0a4aa61667de45a9cfbf7940360bd7256583b8a1e7810b4d9dd0e02a8aac737ca634b57bf269195e776ef503832ed22a6689a1c8fcdcc956f846bef7
|
||||
ARG CHKSUM_ARMV8_MUSL=50f4899cc2f637dbc39470bbe307074ccf7f40da2ab730218d13a9f75d578266311db6a0785919dcdcb5e7ce4517b13ee8d4a56d76e6fca7c6d4c2510d71aa8b
|
||||
ARG CHKSUM_AMD64_MUSL=493a79e9e29a1eab3fdff6435bac6509253d2e54ac30ad9098ce5da638bbb8ad18a7ebf3520bcaf2f9588befeff23402d8bbf54fa3809bfe18c984a4ecabcb12
|
||||
|
||||
# Install musl cross compilers
|
||||
RUN cd /tmp && \
|
||||
curl -fLO https://grafana-downloads.storage.googleapis.com/compilers/arm-linux-musleabihf-cross.tgz && \
|
||||
([ "$(sha512sum arm-linux-musleabihf-cross.tgz|cut -f1 -d ' ')" = "$CHKSUM_ARMV7_MUSL" ] || (echo "Mismatching checksums armv7"; exit 1)) && \
|
||||
tar xf arm-linux-musleabihf-cross.tgz && \
|
||||
rm arm-linux-musleabihf-cross.tgz && \
|
||||
curl -fLO https://grafana-downloads.storage.googleapis.com/compilers/aarch64-linux-musl-cross.tgz && \
|
||||
([ "$(sha512sum aarch64-linux-musl-cross.tgz|cut -f1 -d ' ')" = "$CHKSUM_ARMV8_MUSL" ] || (echo "Mismatching checksums armv8"; exit 1)) && \
|
||||
tar xf aarch64-linux-musl-cross.tgz && \
|
||||
rm aarch64-linux-musl-cross.tgz && \
|
||||
curl -fLO https://grafana-downloads.storage.googleapis.com/compilers/x86_64-linux-musl-cross.tgz && \
|
||||
([ "$(sha512sum x86_64-linux-musl-cross.tgz|cut -f1 -d ' ')" = "$CHKSUM_AMD64_MUSL" ] || (echo "Mismatching checksums amd64"; exit 1)) && \
|
||||
tar xf x86_64-linux-musl-cross.tgz && \
|
||||
rm x86_64-linux-musl-cross.tgz
|
||||
|
||||
RUN go install github.com/mgechev/revive@v1.0.2 && \
|
||||
mv ${GOPATH}/bin/revive /usr/local/bin/ && \
|
||||
go install github.com/google/go-jsonnet/cmd/jsonnetfmt@latest && \
|
||||
mv ${GOPATH}/bin/jsonnetfmt /usr/local/bin/ && \
|
||||
go install github.com/monitoring-mixins/mixtool/cmd/mixtool@latest && \
|
||||
mv ${GOPATH}/bin/mixtool /usr/local/bin/
|
||||
|
||||
COPY ./bootstrap.sh /tmp/bootstrap.sh
|
||||
@@ -1,18 +0,0 @@
|
||||
# grafana-build-container
|
||||
|
||||
These are the sources for the Docker image that we use for the Grafana build containers. The image source itself
|
||||
is in Dockerfile, but there are supporting scripts such as the Makefile, for building images.
|
||||
|
||||
The image is based on Debian Buster, since we want an older Linux distribution (Buster has long-term support into 2024) to build binaries that are as portable as possible.
|
||||
|
||||
## Build/Publish Docker Image
|
||||
|
||||
In order to build and publish the Grafana build Docker image, execute the following:
|
||||
|
||||
```
|
||||
# Download MacOSX10.15.sdk.tar.xz from our private GCS bucket into this directory
|
||||
docker build -t grafana/build-container:<VERSION> --ulimit nofile=2048:2048 .
|
||||
docker push grafana/build-container:<VERSION>
|
||||
```
|
||||
|
||||
If you're running on a machine that has an ARM chip (Apple M1/M2, etc.), add `--platform linux/amd64` to the `docker build` command. It can take approximately four hours for an initial build to complete. Due to caching, subsequent builds take less time (~10 mins or so).
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd /tmp || exit 1
|
||||
tar xfJ x86_64-centos6-linux-gnu.tar.xz
|
||||
tar xfJ osxcross.tar.xz
|
||||
@@ -2,10 +2,6 @@
|
||||
This module contains steps and pipelines relating to creating CI Docker images.
|
||||
"""
|
||||
|
||||
load(
|
||||
"scripts/drone/utils/images.star",
|
||||
"images",
|
||||
)
|
||||
load(
|
||||
"scripts/drone/utils/utils.star",
|
||||
"pipeline",
|
||||
@@ -17,7 +13,6 @@ load(
|
||||
load(
|
||||
"scripts/drone/vault.star",
|
||||
"from_secret",
|
||||
"gcp_download_build_container_assets_key",
|
||||
)
|
||||
|
||||
def publish_ci_windows_test_image_pipeline():
|
||||
@@ -69,50 +64,3 @@ def publish_ci_windows_test_image_pipeline():
|
||||
}
|
||||
|
||||
return [pl]
|
||||
|
||||
def publish_ci_build_container_image_pipeline():
|
||||
trigger = {
|
||||
"event": ["promote"],
|
||||
"target": ["ci-build-container-image"],
|
||||
}
|
||||
pl = pipeline(
|
||||
name = "publish-ci-build-container-image",
|
||||
trigger = trigger,
|
||||
steps = [
|
||||
{
|
||||
"name": "validate-version",
|
||||
"image": images["alpine"],
|
||||
"commands": [
|
||||
"if [ -z \"${BUILD_CONTAINER_VERSION}\" ]; then echo Missing BUILD_CONTAINER_VERSION; false; fi",
|
||||
],
|
||||
},
|
||||
{
|
||||
"name": "download-macos-sdk",
|
||||
"image": images["cloudsdk"],
|
||||
"environment": {
|
||||
"GCP_KEY": from_secret(gcp_download_build_container_assets_key),
|
||||
},
|
||||
"commands": [
|
||||
"printenv GCP_KEY > /tmp/key.json",
|
||||
"gcloud auth activate-service-account --key-file=/tmp/key.json",
|
||||
"gsutil cp gs://grafana-private-downloads/MacOSX10.15.sdk.tar.xz ./scripts/build/ci-build/MacOSX10.15.sdk.tar.xz",
|
||||
],
|
||||
},
|
||||
{
|
||||
"name": "build-and-publish", # Consider splitting the build and the upload task.
|
||||
"image": images["cloudsdk"],
|
||||
"volumes": [{"name": "docker", "path": "/var/run/docker.sock"}],
|
||||
"environment": {
|
||||
"DOCKER_USERNAME": from_secret("docker_username"),
|
||||
"DOCKER_PASSWORD": from_secret("docker_password"),
|
||||
},
|
||||
"commands": [
|
||||
"printenv DOCKER_PASSWORD | docker login -u \"$DOCKER_USERNAME\" --password-stdin",
|
||||
"docker build -t \"grafana/build-container:${BUILD_CONTAINER_VERSION}\" ./scripts/build/ci-build",
|
||||
"docker push \"grafana/build-container:${BUILD_CONTAINER_VERSION}\"",
|
||||
],
|
||||
},
|
||||
],
|
||||
)
|
||||
|
||||
return [pl]
|
||||
|
||||
@@ -8,9 +8,10 @@ load(
|
||||
"nodejs_version",
|
||||
)
|
||||
|
||||
# "go" image can be switched back to golang:{}-alpine once this is resolved https://github.com/mattn/go-sqlite3/pull/1177#issuecomment-1849176090
|
||||
images = {
|
||||
"git": "alpine/git:2.40.1",
|
||||
"go": "golang:{}-alpine".format(golang_version),
|
||||
"go": "golang:{}-alpine3.18".format(golang_version),
|
||||
"node": "node:{}-alpine".format(nodejs_version),
|
||||
"cloudsdk": "google/cloud-sdk:431.0.0",
|
||||
"publish": "grafana/grafana-ci-deploy:1.3.3",
|
||||
|
||||
@@ -3,7 +3,7 @@ global variables
|
||||
"""
|
||||
|
||||
grabpl_version = "v3.0.42"
|
||||
golang_version = "1.21.3"
|
||||
golang_version = "1.21.5"
|
||||
|
||||
# nodejs_version should match what's in ".nvmrc", but without the v prefix.
|
||||
nodejs_version = "20.9.0"
|
||||
|
||||
Reference in New Issue
Block a user