mirror of https://github.com/grafana/grafana
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 onepull/79508/head^2
parent
79fca7dce4
commit
4991e71b85
@ -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 |
Loading…
Reference in new issue