-
Notifications
You must be signed in to change notification settings - Fork 215
[chore] move package tests from contrib repo to this repo #604
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
f78e2f7
move package tests from contrib repo
mowies 2748861
move pipeline code to separate workflow
mowies 2d040ee
typo
mowies 4c524b4
apply some suggestions
mowies 90af744
goreleaser pro related errors
mowies 5dcfd26
update local testing docs slightly
mowies File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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 hidden or 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" |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.