-
Notifications
You must be signed in to change notification settings - Fork 165
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Loading status checks…
[chore] move package tests from contrib repo to this repo (#604)
* move package tests from contrib repo Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add shellcheck option to follow other files Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> use shellcheck directive Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> make shellcheck happy Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> fix shellcheck things Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> move dockerfiles, remove unneeded files Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> also test rpm package Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add missing variable Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> only build linux amd64 for now Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> only build linux amd64 for now Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> fix service unit name Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add missing files Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> remove unneeded variables and files Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add checkout step Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> fix if conditionals Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add demo config, add script run Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> copy over package test scripts Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add job dependency Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> move package test steps for testing Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> revert goreleaser change Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> fix if statement Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> test commit Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> run package tests as part of core ci workflow Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> download artifacts in new workflow Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> defuse package tests for now Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> upload linux/amd64 service packages after building a snapshot Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> update goreleaser-pro to latest version, add version field to config files to remove warning Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add package test workflow Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> * move pipeline code to separate workflow Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> * typo Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> * apply some suggestions Co-authored-by: Pablo Baeyens <pbaeyens31+github@gmail.com> * goreleaser pro related errors Co-authored-by: Pablo Baeyens <pbaeyens31+github@gmail.com> * update local testing docs slightly Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> --------- Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> Co-authored-by: Pablo Baeyens <pbaeyens31+github@gmail.com>
- v0.116.1
- v0.116.0
- v0.115.1
- v0.115.0
- v0.114.0
- v0.113.0
- v0.112.0
- v0.111.0
- v0.110.0
- v0.109.0
- v0.108.0
- v0.107.0
- cmd/builder/v0.116.1
- cmd/builder/v0.116.0
- cmd/builder/v0.115.1
- cmd/builder/v0.115.0
- cmd/builder/v0.114.0
- cmd/builder/v0.113.0
- cmd/builder/v0.112.0
- cmd/builder/v0.111.0
- cmd/builder/v0.110.0
- cmd/builder/v0.109.0
- cmd/builder/v0.108.0
- cmd/builder/v0.107.0
Showing
14 changed files
with
252 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
name: Package Tests | ||
|
||
on: | ||
workflow_call: | ||
inputs: | ||
type: | ||
required: true | ||
type: string | ||
distribution: | ||
required: true | ||
type: string | ||
|
||
jobs: | ||
package-tests: | ||
name: Package Tests | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
type: ${{ fromJSON(inputs.type) }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | ||
|
||
- name: Download built artifacts | ||
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | ||
with: | ||
name: linux-packages | ||
|
||
- name: Test ${{ matrix.type }} package | ||
run: ./scripts/package-tests/package-tests.sh ./otelcol*-SNAPSHOT-*_linux_amd64.${{ matrix.type }} ${{ inputs.distribution }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
version: 2 | ||
release: | ||
header: | | ||
Check the [v{{.Version}} contrib changelog](https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tags/v{{.Version}}) and the [v{{.Version}} core changelog](https://github.com/open-telemetry/opentelemetry-collector/releases/tags/v{{.Version}}) for changelogs on specific components. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
partial: | ||
by: target | ||
version: 2 | ||
project_name: opentelemetry-collector-releases | ||
env: | ||
- COSIGN_YES=true | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# A debian image with systemd enabled. Must be run with: | ||
# `-d --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro` flags | ||
FROM debian:12 | ||
|
||
ENV container docker | ||
ENV DEBIAN_FRONTEND noninteractive | ||
|
||
# Enable systemd. | ||
RUN apt-get update ; \ | ||
apt-get install -y systemd systemd-sysv procps; \ | ||
apt-get clean ; \ | ||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | ||
|
||
CMD ["/lib/systemd/systemd"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# A rockylinux image with systemd enabled. Must be run with: | ||
# `-d --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro` flags | ||
FROM rockylinux:9.3 | ||
|
||
ENV container docker | ||
|
||
RUN dnf install -y initscripts | ||
|
||
CMD ["/usr/sbin/init"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# Build and test deb/rpm/apk packages | ||
|
||
## Prerequisites | ||
|
||
Tools: | ||
|
||
- [Go](https://go.dev/) | ||
- [GoReleaser](https://goreleaser.com/) | ||
- [Podman](https://podman.io/) | ||
- make | ||
|
||
## How to build and test | ||
|
||
To build the Collector Linux packages, a few steps are required: | ||
|
||
- Run `make generate` to (re-)generate sources and GoReleaser files | ||
- Go to the distribution folder that you want to build (under the `distributions` folder) | ||
- Run `goreleaser release --snapshot --clean --skip sbom,sign,archive,docker` | ||
- This will build the necessary release assets with all architectures and packaging types into the `dist` folder inside your | ||
current folder. (We can skip many parts of the release build that we don't need for running the package tests locally) | ||
- We use GoReleaser Pro only features in CI. If you want to run this locally, and you run into `unmarshal` errors, | ||
you may have to remove the parts that goreleaser complains about or use a pro license. | ||
- Go back to the root of the repo | ||
- To start the package tests, | ||
run: `./scripts/package-tests/package-tests.sh ./distributions/<otelcol|otelcol-contrib>/dist/<otelcol|otelcol-contrib>_*-SNAPSHOT-*_linux_amd64.<deb|rpm> <otelcol|otelcol-contrib>` | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
#!/bin/bash | ||
|
||
# Copyright The OpenTelemetry Authors | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
podman_cp() { | ||
local container="$1" | ||
local src="$2" | ||
local dest="$3" | ||
local dest_dir | ||
dest_dir="$( dirname "$dest" )" | ||
|
||
echo "Copying $src to $container:$dest ..." | ||
podman exec "$container" mkdir -p "$dest_dir" | ||
podman cp "$src" "$container":"$dest" | ||
} | ||
|
||
install_pkg() { | ||
local container="$1" | ||
local pkg_path="$2" | ||
local pkg_base | ||
pkg_base=$( basename "$pkg_path" ) | ||
|
||
echo "Installing $pkg_base ..." | ||
podman_cp "$container" "$pkg_path" /tmp/"$pkg_base" | ||
if [[ "${pkg_base##*.}" = "deb" ]]; then | ||
podman exec "$container" dpkg -i /tmp/"$pkg_base" | ||
else | ||
podman exec "$container" rpm -ivh /tmp/"$pkg_base" | ||
fi | ||
} | ||
|
||
uninstall_pkg() { | ||
local container="$1" | ||
local pkg_type="$2" | ||
local pkg_name="$3" | ||
|
||
echo "Uninstalling $pkg_name ..." | ||
if [[ "$pkg_type" = "deb" ]]; then | ||
podman exec "$container" dpkg -r "$pkg_name" | ||
else | ||
podman exec "$container" rpm -e "$pkg_name" | ||
fi | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
#!/bin/bash | ||
|
||
# Copyright The OpenTelemetry Authors | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
set -euov pipefail | ||
|
||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | ||
REPO_DIR="$( cd "$SCRIPT_DIR/../../../../" && pwd )" | ||
export REPO_DIR | ||
PKG_PATH="${1:-}" | ||
DISTRO="${2:-}" | ||
|
||
SERVICE_NAME=$DISTRO | ||
PROCESS_NAME=$DISTRO | ||
|
||
# shellcheck source=scripts/package-tests/common.sh | ||
source "$SCRIPT_DIR"/common.sh | ||
|
||
if [[ -z "$PKG_PATH" ]]; then | ||
echo "usage: ${BASH_SOURCE[0]} DEB_OR_RPM_PATH" >&2 | ||
exit 1 | ||
fi | ||
|
||
if [[ ! -f "$PKG_PATH" ]]; then | ||
echo "$PKG_PATH not found!" >&2 | ||
exit 1 | ||
fi | ||
|
||
|
||
pkg_base="$( basename "$PKG_PATH" )" | ||
pkg_type="${pkg_base##*.}" | ||
if [[ ! "$pkg_type" =~ ^(deb|rpm)$ ]]; then | ||
echo "$PKG_PATH not supported!" >&2 | ||
exit 1 | ||
fi | ||
image_name="otelcontribcol-$pkg_type-test" | ||
container_name="$image_name" | ||
container_exec="podman exec $container_name" | ||
|
||
trap 'podman rm -fv $container_name >/dev/null 2>&1 || true' EXIT | ||
|
||
podman build -t "$image_name" -f "$SCRIPT_DIR/Dockerfile.test.$pkg_type" "$SCRIPT_DIR" | ||
podman rm -fv "$container_name" >/dev/null 2>&1 || true | ||
|
||
# test install | ||
CRUN_VER='1.14.4' | ||
mkdir -p "${HOME}/.local/bin" | ||
curl -L "https://github.com/containers/crun/releases/download/${CRUN_VER}/crun-${CRUN_VER}-linux-amd64" -o "${HOME}/.local/bin/crun" | ||
chmod +x "${HOME}/.local/bin/crun" | ||
mkdir -p "${HOME}/.config/containers" | ||
cat << EOF > "${HOME}/.config/containers/containers.conf" | ||
[engine.runtimes] | ||
crun = [ | ||
"${HOME}/.local/bin/crun", | ||
"/usr/bin/crun" | ||
] | ||
EOF | ||
|
||
echo | ||
podman run --name "$container_name" -d "$image_name" | ||
install_pkg "$container_name" "$PKG_PATH" | ||
|
||
# ensure service has started and still running after 5 seconds | ||
sleep 5 | ||
echo "Checking $SERVICE_NAME service status ..." | ||
$container_exec systemctl --no-pager status "$SERVICE_NAME" | ||
|
||
echo "Checking $PROCESS_NAME process ..." | ||
if [ "$DISTRO" = "otelcol" ]; then | ||
$container_exec pgrep -a -u otel "$PROCESS_NAME" | ||
else | ||
$container_exec pgrep -a -u otelcol-contrib "$PROCESS_NAME" | ||
fi | ||
|
||
# test uninstall | ||
echo | ||
uninstall_pkg "$container_name" "$pkg_type" "$DISTRO" | ||
|
||
echo "Checking $SERVICE_NAME service status after uninstall ..." | ||
if $container_exec systemctl --no-pager status "$SERVICE_NAME"; then | ||
echo "$SERVICE_NAME service still running after uninstall" >&2 | ||
exit 1 | ||
fi | ||
echo "$SERVICE_NAME service successfully stopped after uninstall" | ||
|
||
echo "Checking $SERVICE_NAME service existence after uninstall ..." | ||
if $container_exec systemctl list-unit-files --all | grep "$SERVICE_NAME"; then | ||
echo "$SERVICE_NAME service still exists after uninstall" >&2 | ||
exit 1 | ||
fi | ||
echo "$SERVICE_NAME service successfully removed after uninstall" | ||
|
||
echo "Checking $PROCESS_NAME process after uninstall ..." | ||
if $container_exec pgrep "$PROCESS_NAME"; then | ||
echo "$PROCESS_NAME process still running after uninstall" | ||
exit 1 | ||
fi | ||
echo "$PROCESS_NAME process successfully killed after uninstall" |