diff --git a/Dockerfile b/Dockerfile index ca7b4be646..23b84f7bd1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -795,7 +795,7 @@ COPY . /work # Run the build script once to build the ops agent engine to a cache RUN mkdir -p /tmp/cache_run/golang && cp -r . /tmp/cache_run/golang WORKDIR /tmp/cache_run/golang -RUN ./pkg/rpm/build.sh &> /dev/null || true +RUN SLE_VERSION=12 ./pkg/rpm/build.sh &> /dev/null || true WORKDIR /work COPY ./confgenerator/default-config.yaml /work/cache/etc/google-cloud-ops-agent/config.yaml @@ -803,7 +803,7 @@ COPY --from=sles12-build-otel /work/cache /work/cache COPY --from=sles12-build-fluent-bit /work/cache /work/cache COPY --from=sles12-build-systemd /work/cache /work/cache COPY --from=sles12-build-wrapper /work/cache /work/cache -RUN ./pkg/rpm/build.sh +RUN SLE_VERSION=12 ./pkg/rpm/build.sh COPY cmd/ops_agent_uap_plugin cmd/ops_agent_uap_plugin COPY ./builds/ops_agent_plugin.sh . @@ -900,7 +900,7 @@ COPY . /work # Run the build script once to build the ops agent engine to a cache RUN mkdir -p /tmp/cache_run/golang && cp -r . /tmp/cache_run/golang WORKDIR /tmp/cache_run/golang -RUN ./pkg/rpm/build.sh &> /dev/null || true +RUN SLE_VERSION=15 ./pkg/rpm/build.sh &> /dev/null || true WORKDIR /work COPY ./confgenerator/default-config.yaml /work/cache/etc/google-cloud-ops-agent/config.yaml @@ -908,7 +908,7 @@ COPY --from=sles15-build-otel /work/cache /work/cache COPY --from=sles15-build-fluent-bit /work/cache /work/cache COPY --from=sles15-build-systemd /work/cache /work/cache COPY --from=sles15-build-wrapper /work/cache /work/cache -RUN ./pkg/rpm/build.sh +RUN SLE_VERSION=15 ./pkg/rpm/build.sh COPY cmd/ops_agent_uap_plugin cmd/ops_agent_uap_plugin COPY ./builds/ops_agent_plugin.sh . @@ -921,6 +921,111 @@ COPY --from=sles15-build /tmp/google-cloud-ops-agent.tgz /google-cloud-ops-agent COPY --from=sles15-build /google-cloud-ops-agent*.rpm / COPY --from=sles15-build /google-cloud-ops-agent-plugin*.tar.gz / +# ====================================== +# Build Ops Agent for sles-16 +# ====================================== + +FROM opensuse/leap:16.0 AS sles16-build-base +ARG OPENJDK_MAJOR_VERSION + +RUN set -x; zypper -n refresh && \ + zypper -n update && \ + zypper -n install git systemd autoconf automake flex libtool libcurl-devel libopenssl-devel libyajl-devel gcc gcc-c++ zlib-devel rpm-build expect cmake systemd-devel systemd-rpm-macros unzip zip 'bison>3' +# Allow fluent-bit to find systemd +RUN ln -fs /usr/lib/systemd /lib/systemd +COPY --from=openjdk-install /usr/local/java-${OPENJDK_MAJOR_VERSION}-openjdk/ /usr/local/java-${OPENJDK_MAJOR_VERSION}-openjdk +ENV JAVA_HOME /usr/local/java-${OPENJDK_MAJOR_VERSION}-openjdk/ +COPY --from=cmake-install-recent /cmake.sh /cmake.sh +RUN set -x; bash /cmake.sh --skip-license --prefix=/usr/local + + +SHELL ["/bin/bash", "-c"] + +# Install golang +ARG TARGETARCH +ARG GO_VERSION +ADD https://go.dev/dl/go${GO_VERSION}.linux-${TARGETARCH}.tar.gz /tmp/go${GO_VERSION}.tar.gz +RUN set -xe; \ + tar -xf /tmp/go${GO_VERSION}.tar.gz -C /usr/local +ENV PATH="${PATH}:/usr/local/go/bin" + + +FROM sles16-build-base AS sles16-build-otel +WORKDIR /work +# Download golang deps +COPY ./submodules/opentelemetry-operations-collector/go.mod ./submodules/opentelemetry-operations-collector/go.sum submodules/opentelemetry-operations-collector/ +RUN cd submodules/opentelemetry-operations-collector && go mod download + +COPY ./submodules/opentelemetry-java-contrib submodules/opentelemetry-java-contrib +# Install gradle. The first invocation of gradlew does this +RUN cd submodules/opentelemetry-java-contrib && ./gradlew --no-daemon -Djdk.lang.Process.launchMechanism=vfork tasks +COPY ./submodules/opentelemetry-operations-collector submodules/opentelemetry-operations-collector +COPY ./builds/otel.sh . +RUN \ + unset OTEL_TRACES_EXPORTER && \ + unset OTEL_EXPORTER_OTLP_TRACES_ENDPOINT && \ + unset OTEL_EXPORTER_OTLP_TRACES_PROTOCOL && \ + ./otel.sh /work/cache/ + +FROM sles16-build-base AS sles16-build-fluent-bit +WORKDIR /work +COPY ./submodules/fluent-bit submodules/fluent-bit +COPY ./builds/fluent_bit.sh . +RUN ./fluent_bit.sh /work/cache/ + + +FROM sles16-build-base AS sles16-build-systemd +WORKDIR /work +COPY ./systemd systemd +COPY ./builds/systemd.sh . +RUN ./systemd.sh /work/cache/ + + +FROM sles16-build-base AS sles16-build-golang-base +WORKDIR /work +COPY go.mod go.sum ./ +# Fetch dependencies +RUN go mod download +COPY confgenerator confgenerator +COPY apps apps +COPY internal internal + + +FROM sles16-build-golang-base AS sles16-build-wrapper +WORKDIR /work +COPY cmd/agent_wrapper cmd/agent_wrapper +COPY ./builds/agent_wrapper.sh . +RUN ./agent_wrapper.sh /work/cache/ + + +FROM sles16-build-golang-base AS sles16-build +WORKDIR /work +COPY . /work + +# Run the build script once to build the ops agent engine to a cache +RUN mkdir -p /tmp/cache_run/golang && cp -r . /tmp/cache_run/golang +WORKDIR /tmp/cache_run/golang +RUN SLE_VERSION=16 ./pkg/rpm/build.sh &> /dev/null || true +WORKDIR /work + +COPY ./confgenerator/default-config.yaml /work/cache/etc/google-cloud-ops-agent/config.yaml +COPY --from=sles16-build-otel /work/cache /work/cache +COPY --from=sles16-build-fluent-bit /work/cache /work/cache +COPY --from=sles16-build-systemd /work/cache /work/cache +COPY --from=sles16-build-wrapper /work/cache /work/cache +RUN SLE_VERSION=16 ./pkg/rpm/build.sh + +COPY cmd/ops_agent_uap_plugin cmd/ops_agent_uap_plugin +COPY ./builds/ops_agent_plugin.sh . +RUN ./ops_agent_plugin.sh /work/cache/ +RUN ./pkg/plugin/build.sh /work/cache sles16 + + +FROM scratch AS sles16 +COPY --from=sles16-build /tmp/google-cloud-ops-agent.tgz /google-cloud-ops-agent-sles-16.tgz +COPY --from=sles16-build /google-cloud-ops-agent*.rpm / +COPY --from=sles16-build /google-cloud-ops-agent-plugin*.tar.gz / + # ====================================== # Build Ops Agent for ubuntu-jammy # ====================================== @@ -1330,6 +1435,7 @@ COPY --from=bullseye /* / COPY --from=trixie /* / COPY --from=sles12 /* / COPY --from=sles15 /* / +COPY --from=sles16 /* / COPY --from=jammy /* / COPY --from=noble /* / COPY --from=plucky /* / diff --git a/dockerfiles/compile.go b/dockerfiles/compile.go index 092929fd2e..69b26c3255 100644 --- a/dockerfiles/compile.go +++ b/dockerfiles/compile.go @@ -182,7 +182,7 @@ RUN set -x; \ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 1 \ --slave /usr/bin/g++ g++ /usr/bin/g++-8 && \ update-alternatives --set gcc /usr/bin/gcc-8` + installJava + installCMake, - package_build: "RUN ./pkg/rpm/build.sh", + package_build: "RUN SLE_VERSION=12 ./pkg/rpm/build.sh", tar_distro_name: "sles-12", package_extension: "rpm", }, @@ -194,10 +194,22 @@ RUN set -x; \ zypper -n install git systemd autoconf automake flex libtool libcurl-devel libopenssl-devel libyajl-devel gcc gcc-c++ zlib-devel rpm-build expect cmake systemd-devel systemd-rpm-macros unzip zip 'bison>3' # Allow fluent-bit to find systemd RUN ln -fs /usr/lib/systemd /lib/systemd` + installJava + installCMake, - package_build: "RUN ./pkg/rpm/build.sh", + package_build: "RUN SLE_VERSION=15 ./pkg/rpm/build.sh", tar_distro_name: "sles-15", package_extension: "rpm", }, + { + from_image: "opensuse/leap:16.0", + target_name: "sles16", + install_packages: `RUN set -x; zypper -n refresh && \ + zypper -n update && \ + zypper -n install git systemd autoconf automake flex libtool libcurl-devel libopenssl-devel libyajl-devel gcc gcc-c++ zlib-devel rpm-build expect cmake systemd-devel systemd-rpm-macros unzip zip 'bison>3' +# Allow fluent-bit to find systemd +RUN ln -fs /usr/lib/systemd /lib/systemd` + installJava + installCMake, + package_build: "RUN SLE_VERSION=16 ./pkg/rpm/build.sh", + tar_distro_name: "sles-16", + package_extension: "rpm", + }, { from_image: "ubuntu:jammy", target_name: "jammy", diff --git a/kokoro/config/build/presubmit/sles15_aarch64.gcl b/kokoro/config/build/presubmit/sles15_aarch64.gcl index 1041e8e918..4a5a002f78 100644 --- a/kokoro/config/build/presubmit/sles15_aarch64.gcl +++ b/kokoro/config/build/presubmit/sles15_aarch64.gcl @@ -3,7 +3,7 @@ import '../common.gcl' as common config build = common.build { params { environment { - DISTRO = 'sles15' + DISTRO = 'sles16' PKGFORMAT = 'rpm' } } diff --git a/kokoro/config/build/presubmit/sles15_x86_64.gcl b/kokoro/config/build/presubmit/sles15_x86_64.gcl index 1041e8e918..4a5a002f78 100644 --- a/kokoro/config/build/presubmit/sles15_x86_64.gcl +++ b/kokoro/config/build/presubmit/sles15_x86_64.gcl @@ -3,7 +3,7 @@ import '../common.gcl' as common config build = common.build { params { environment { - DISTRO = 'sles15' + DISTRO = 'sles16' PKGFORMAT = 'rpm' } } diff --git a/kokoro/config/test/ops_agent/presubmit/sles15_aarch64.gcl b/kokoro/config/test/ops_agent/presubmit/sles15_aarch64.gcl index 1279b4897e..ecac3b9349 100644 --- a/kokoro/config/test/ops_agent/presubmit/sles15_aarch64.gcl +++ b/kokoro/config/test/ops_agent/presubmit/sles15_aarch64.gcl @@ -3,7 +3,7 @@ import 'common.gcl' as common config build = common.ops_agent_test { params { environment { - TARGET = 'sles15' + TARGET = 'sles16' ARCH = 'aarch64' } } diff --git a/kokoro/config/test/ops_agent/presubmit/sles15_x86_64.gcl b/kokoro/config/test/ops_agent/presubmit/sles15_x86_64.gcl index 0508fe0124..98b80a3b57 100644 --- a/kokoro/config/test/ops_agent/presubmit/sles15_x86_64.gcl +++ b/kokoro/config/test/ops_agent/presubmit/sles15_x86_64.gcl @@ -3,7 +3,7 @@ import 'common.gcl' as common config build = common.ops_agent_test { params { environment { - TARGET = 'sles15' + TARGET = 'sles16' ARCH = 'x86_64' } } diff --git a/kokoro/config/test/third_party_apps/presubmit/sles15_aarch64.gcl b/kokoro/config/test/third_party_apps/presubmit/sles15_aarch64.gcl index 65024bfea8..7789bf4aef 100644 --- a/kokoro/config/test/third_party_apps/presubmit/sles15_aarch64.gcl +++ b/kokoro/config/test/third_party_apps/presubmit/sles15_aarch64.gcl @@ -3,7 +3,7 @@ import 'common.gcl' as common config build = common.third_party_apps_test { params { environment { - TARGET = 'sles15' + TARGET = 'sles16' ARCH = 'aarch64' } } diff --git a/kokoro/config/test/third_party_apps/presubmit/sles15_x86_64.gcl b/kokoro/config/test/third_party_apps/presubmit/sles15_x86_64.gcl index 1d3afe1f56..da5ca29e1c 100644 --- a/kokoro/config/test/third_party_apps/presubmit/sles15_x86_64.gcl +++ b/kokoro/config/test/third_party_apps/presubmit/sles15_x86_64.gcl @@ -3,7 +3,7 @@ import 'common.gcl' as common config build = common.third_party_apps_test { params { environment { - TARGET = 'sles15' + TARGET = 'sles16' ARCH = 'x86_64' } } diff --git a/pkg/rpm/build.sh b/pkg/rpm/build.sh index 23b0f55270..5fe7275b26 100755 --- a/pkg/rpm/build.sh +++ b/pkg/rpm/build.sh @@ -19,9 +19,14 @@ set -ex . VERSION # Build .rpms +RPMBUILD_ARGS=() +if [[ -n "${SLE_VERSION}" ]]; then + RPMBUILD_ARGS+=(--define "sle_version ${SLE_VERSION}") +fi rpmbuild --define "_source_filedigest_algorithm md5" \ --define "package_version ${PKG_VERSION//[^a-zA-Z0-9.]/.}" \ --define "_sourcedir $(pwd)" \ --define "_rpmdir $(pwd)" \ + "${RPMBUILD_ARGS[@]}" \ -ba pkg/rpm/google-cloud-ops-agent.spec cp $(uname -m)/google-cloud-ops-agent*.rpm / diff --git a/project.yaml b/project.yaml index f99389a133..cb723163da 100644 --- a/project.yaml +++ b/project.yaml @@ -198,6 +198,22 @@ targets: - suse-cloud:sles-15-sp6-arm64 - opensuse-cloud:opensuse-leap-arm64 - opensuse-cloud=opensuse-leap-15-6-v20250724-arm64 + sles16: + os_versions: [sles-16*, opensuse-leap-16*] + package_extension: + rpm + architectures: + x86_64: + test_distros: + representative: + - suse-cloud:sles-16-0-x86-64 + exhaustive: + - suse-sap-cloud:sles-sap-16-0-x86-64 + aarch64: + test_distros: + representative: + - suse-cloud:sles-16-0-arm64 + exhaustive: windows: package_extension: goo diff --git a/submodules/fluent-bit b/submodules/fluent-bit index 2a1d3c5d7f..b2f90f3580 160000 --- a/submodules/fluent-bit +++ b/submodules/fluent-bit @@ -1 +1 @@ -Subproject commit 2a1d3c5d7f5b4de13bb5fdb3ae7800e805eac775 +Subproject commit b2f90f35803d4e95efba8dbecd18596938050ade diff --git a/submodules/opentelemetry-operations-collector b/submodules/opentelemetry-operations-collector index 71c5b409e4..6be459c822 160000 --- a/submodules/opentelemetry-operations-collector +++ b/submodules/opentelemetry-operations-collector @@ -1 +1 @@ -Subproject commit 71c5b409e4bbb19ee795684003a3fe4ebe28d410 +Subproject commit 6be459c822b2994b5d06e4adb53ccc31fe992a2a diff --git a/transformation_test/transformation_test.go b/transformation_test/transformation_test.go index fa1c3ad025..9f41ec7ccd 100644 --- a/transformation_test/transformation_test.go +++ b/transformation_test/transformation_test.go @@ -658,7 +658,6 @@ func sanitizeFluentBitStderr(t *testing.T, input string) string { result := strings.Join(regexp.MustCompile(`(?m)^.*\[error\].*$`).FindAllString(input, -1), "\n") // Remove timestamps result = regexp.MustCompile(`\d{4}/\d{2}/\d{2}\s\d{2}:\d{2}:\d{2}`).ReplaceAllString(result, "YYYY/MM/DD HH:MM:SS") - result = strings.ReplaceAll(result, "\t", " ") return result }