forked from open-telemetry/opentelemetry-collector-releases
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
move package tests from contrib repo (#1)
- Loading branch information
Showing
18 changed files
with
262 additions
and
10 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
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
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
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
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 debian11 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 rockylinux8.5 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 a full release 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) | ||
- If you run into `unmarshal` errors, start to remove the parts that goreleaser complains about. This likely happens | ||
due to a missing goreleaser pro license and therefore feature that you can't use. | ||
- 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" |