Skip to content

Commit 9c637b7

Browse files
authored
[chore] add a smoke test for the TA (#5505)
1 parent e69dc85 commit 9c637b7

File tree

11 files changed

+164
-20
lines changed

11 files changed

+164
-20
lines changed

.github/workflows/ansible.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ on:
1717
- '.github/workflows/ansible.yml'
1818
- 'deployments/ansible/**'
1919
- '!**.md'
20+
- '!packaging/technical-addon/**'
2021
schedule:
2122
- cron: '0 0 * * 1,4' # Every Monday and Thrusday at midnight UTC
2223

.github/workflows/auto-instrumentation.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ on:
1111
- 'instrumentation/**'
1212
- 'internal/**'
1313
- '!**.md'
14+
- '!packaging/technical-addon/**'
1415

1516
concurrency:
1617
group: auto-instrumentation-${{ github.event.pull_request.number || github.ref }}

.github/workflows/integration-test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ on:
1717
- 'go.mod'
1818
- 'go.sum'
1919
- '!**.md'
20+
- '!packaging/technical-addon/**'
2021

2122
concurrency:
2223
group: integration-test-${{ github.event.pull_request.number || github.ref }}

.github/workflows/linux-package-test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ on:
1212
- 'Makefile'
1313
- 'Makefile.Common'
1414
- '!**.md'
15+
- '!packaging/technical-addon/**'
1516

1617
concurrency:
1718
group: linux-package-test-${{ github.event.pull_request.number || github.ref }}

.github/workflows/splunk-ta-otel.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: splunk-ta-otel-build
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
paths:
9+
- '.github/workflows/splunk-ta-otel.yml'
10+
- 'packaging/technical-addon/**'
11+
- 'cmd/**'
12+
- 'internal/**'
13+
- 'pkg/**'
14+
- 'tests/**'
15+
- '!**.md'
16+
17+
concurrency:
18+
group: splunk-technical-addon-${{ github.event.pull_request.number || github.ref }}
19+
cancel-in-progress: true
20+
21+
env:
22+
GO_VERSION: 1.22.7
23+
24+
jobs:
25+
setup-environment:
26+
name: setup-environment
27+
# Use 20.04.5 until https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/16450 is resolved
28+
runs-on: ubuntu-20.04
29+
steps:
30+
- name: Check out the codebase.
31+
uses: actions/checkout@v4
32+
33+
- name: Set up Go
34+
uses: actions/setup-go@v5
35+
with:
36+
go-version: ${{ env.GO_VERSION }}
37+
cache-dependency-path: '**/go.sum'
38+
39+
- name: Installing dependency
40+
run: |
41+
make install-tools
42+
43+
44+
test:
45+
name: test
46+
# Use 20.04.5 until https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/16450 is resolved
47+
runs-on: ubuntu-20.04
48+
needs: [setup-environment]
49+
steps:
50+
- name: Check out the codebase.
51+
uses: actions/checkout@v4
52+
53+
- name: Set up Go
54+
uses: actions/setup-go@v5
55+
with:
56+
go-version: ${{ env.GO_VERSION }}
57+
cache-dependency-path: '**/go.sum'
58+
59+
- name: Build & Package TA
60+
run: |
61+
set -o pipefail
62+
make -e package-technical-addon

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,3 +271,7 @@ endif
271271
docker create --platform linux/$(GOARCH) --name otelcol-fips-builder-$(GOOS)-$(GOARCH) otelcol-fips-builder-$(GOOS)-$(GOARCH) true >/dev/null
272272
docker cp otelcol-fips-builder-$(GOOS)-$(GOARCH):/src/bin/otelcol_$(GOOS)_$(GOARCH)$(EXTENSION) ./bin/otelcol-fips_$(GOOS)_$(GOARCH)$(EXTENSION)
273273
@docker rm -f otelcol-fips-builder-$(GOOS)-$(GOARCH) >/dev/null
274+
275+
276+
.PHONY: package-technical-addon
277+
package-technical-addon: bundle.d otelcol generate-technical-addon package-ta smoketest-ta

packaging/technical-addon/Makefile

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ generate-technical-addon: env-guard-all
2222
BUILD_DIR="$(BUILD_DIR)" \
2323
SOURCE_DIR="$(SOURCE_DIR)" \
2424
$(SOURCE_DIR)/packaging-scripts/make-buildspace.sh
25+
# Should only have affect if otelcol or download make targets were run first
26+
# Running make download-otelcol will overwrite anything locally created
27+
mkdir -p $(BUILD_DIR)/out/bin/
28+
cp -Rv bin/* $(BUILD_DIR)/out/bin/
29+
mkdir -p $(BUILD_DIR)/out/smart-agent
30+
cp ./dist/agent-bundle_linux_amd64.tar.gz $(BUILD_DIR)/out/smart-agent
2531

2632
.PHONY: env-guard-all
2733
env-guard-all:
@@ -43,8 +49,8 @@ env-guard-verify: env-guard-ta
4349
UF_VERSION="$(UF_VERSION)" \
4450
$(SOURCE_DIR)/packaging-scripts/env/verify.sh
4551

46-
.PHONY: download
47-
download: env-guard-ta
52+
.PHONY: download-otelcol
53+
download-otelcol: env-guard-ta
4854
BUILD_DIR="$(BUILD_DIR)" \
4955
SOURCE_DIR="$(SOURCE_DIR)" \
5056
OTEL_COLLECTOR_VERSION="$(OTEL_COLLECTOR_VERSION)" \
@@ -54,8 +60,8 @@ download: env-guard-ta
5460
$(SOURCE_DIR)/packaging-scripts/download-release.sh
5561

5662

57-
.PHONY: package
58-
package: env-guard-ta
63+
.PHONY: package-ta
64+
package-ta: env-guard-ta
5965
BUILD_DIR="$(BUILD_DIR)" \
6066
SOURCE_DIR="$(SOURCE_DIR)" \
6167
ARCH="$(ARCH)" \
@@ -64,10 +70,10 @@ package: env-guard-ta
6470
$(SOURCE_DIR)/packaging-scripts/package-ta.sh
6571

6672
.PHONY: distribute-ta
67-
distribute-ta: generate-technical-addon download package
73+
distribute-ta: generate-technical-addon download-otelcol package-ta
6874

69-
.PHONY: verify
70-
verify: env-guard-verify
75+
.PHONY: verify-ta
76+
verify-ta: env-guard-verify
7177
SOURCE_DIR="$(SOURCE_DIR)" \
7278
BUILD_DIR="$(BUILD_DIR)" \
7379
ARCH="$(ARCH)" \
@@ -79,8 +85,16 @@ verify: env-guard-verify
7985
OLLY_ACCESS_TOKEN="$(OLLY_ACCESS_TOKEN)" \
8086
$(SOURCE_DIR)/packaging-scripts/deploy-and-verify.sh
8187

82-
.PHONY: update-deps
83-
update-deps:
88+
.PHONY: smoketest-ta
89+
smoketest-ta:
90+
SOURCE_DIR="$(SOURCE_DIR)" \
91+
BUILD_DIR="$(BUILD_DIR)" \
92+
ARCH="$(ARCH)" \
93+
PLATFORM="$(PLATFORM)" \
94+
$(SOURCE_DIR)/packaging-scripts/cicd-tests/smoketests/smoketest.sh
95+
96+
.PHONY: update-ta-deps
97+
update-ta-deps:
8498
SOURCE_DIR="$(SOURCE_DIR)" \
8599
SPLUNK_OTEL_VERSION="$(SPLUNK_OTEL_VERSION)" \
86100
$(SOURCE_DIR)/packaging-scripts/update-otel-version.sh
@@ -89,14 +103,14 @@ update-deps:
89103
TA_VERSION="$(TA_VERSION)" \
90104
$(SOURCE_DIR)/packaging-scripts/update-ta-version.sh
91105

92-
.PHONY: release
93-
release:
106+
.PHONY: release-ta
107+
release-ta:
94108
SOURCE_DIR="$(SOURCE_DIR)" \
95109
$(SOURCE_DIR)/packaging-scripts/release-ta-version.sh
96110

97-
.PHONY: update-and-release
98-
update-and-release: update-deps release
111+
.PHONY: update-and-release-ta
112+
update-and-release: update-ta-deps release-ta
99113

100-
.PHONY: clean
101-
clean:
114+
.PHONY: clean-ta
115+
clean-ta:
102116
rm -rf build
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/bash -eu
2+
3+
repack_with_access_token() {
4+
local token="${SPLUNK_O11Y_ACCESS_TOKEN:-$1}"
5+
local path="${TA_TGZ_PATH:-$2}"
6+
7+
echo "Adding access token to: $path"
8+
9+
TEMP_DIR="$BUILD_DIR/repack"
10+
mkdir -p "$TEMP_DIR"
11+
tar xzvf "$BUILD_DIR/out/distribution/Splunk_TA_otel.tgz" -C "$TEMP_DIR"
12+
cp -r "$TEMP_DIR/Splunk_TA_otel/default/" "$TEMP_DIR/Splunk_TA_otel/local/"
13+
echo "$token" > "$TEMP_DIR/Splunk_TA_otel/local/access_token"
14+
15+
random_suffix="$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 6)"
16+
repacked="$TEMP_DIR/Splunk_TA_otel-${random_suffix}.tgz"
17+
tar -C "$TEMP_DIR" -hcz --file "$repacked" "Splunk_TA_otel"
18+
19+
echo "$repacked"
20+
return 0
21+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
version: "3.6"
2+
# See https://splunk.github.io/docker-splunk/advanced/APP_INSTALL.html#apps-on-filesystem
3+
services:
4+
so1:
5+
image: ${SPLUNK_IMAGE:-splunk/splunk:latest}
6+
healthcheck:
7+
test: ["CMD", "curl", "-f", "http://localhost:8000/en-US/account/login"]
8+
interval: 30s
9+
timeout: 10s
10+
retries: 5
11+
start_period: 60s
12+
hostname: so1
13+
environment:
14+
- SPLUNK_START_ARGS=--accept-license
15+
- SPLUNK_APPS_URL=/addon-dir/$REPACKED_TA_NAME
16+
- SPLUNK_PASSWORD=Chang3d!
17+
ports:
18+
- 8000
19+
volumes:
20+
- $ADDON_DIR:/addon-dir
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/bin/bash -eu
2+
set -o pipefail
3+
4+
[[ -z "$BUILD_DIR" ]] && echo "BUILD_DIR not set" && exit 1
5+
[[ -z "$SOURCE_DIR" ]] && echo "SOURCE_DIR not set" && exit 1
6+
7+
source "${SOURCE_DIR}/packaging-scripts/cicd-tests/add-access-token.sh"
8+
SPLUNK_APPS_URL="$(repack_with_access_token "foobar" "$BUILD_DIR/out/distribution/Splunk_TA_otel.tgz" | tail -n 1)"
9+
REPACKED_TA_NAME="$(basename "$SPLUNK_APPS_URL")"
10+
ADDON_DIR="$(realpath "$(dirname "$SPLUNK_APPS_URL")")"
11+
echo "Testing with hot TA $SPLUNK_APPS_URL ($ADDON_DIR and $REPACKED_TA_NAME)"
12+
DOCKER_COMPOSE_CONFIG="$SOURCE_DIR/packaging-scripts/cicd-tests/smoketests/docker-compose.yml"
13+
ADDON_DIR="$ADDON_DIR" REPACKED_TA_NAME="$REPACKED_TA_NAME" docker compose --file "$DOCKER_COMPOSE_CONFIG" up --detach --wait
14+
15+
16+
# Should trap this
17+
ADDON_DIR="$ADDON_DIR" REPACKED_TA_NAME="$REPACKED_TA_NAME" docker compose --file "$DOCKER_COMPOSE_CONFIG" down

packaging/technical-addon/packaging-scripts/package-ta.sh

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash -eux
1+
#!/bin/bash -eu
22
set -o pipefail
33

44
TA_NAME="Splunk_TA_otel"
@@ -37,13 +37,15 @@ if [ "$PLATFORM" == "darwin" ] ; then # NOTE Darwin not used yet
3737
fi
3838

3939
# Copy smart agent bundle into addon package directory
40+
version=""
41+
if [ "$OTEL_COLLECTOR_VERSION" == "" ]; then
42+
version="${OTEL_COLLECTOR_VERSION}_"
43+
fi
4044
if [ "$PLATFORM" == "windows" ] || [ "$PLATFORM" == "all" ] ; then
41-
SMART_AGENT_BUNDLE="agent-bundle_${OTEL_COLLECTOR_VERSION}_windows_${ARCH}.zip"
42-
cp "$BUILD_DIR/out/smart-agent/$SMART_AGENT_BUNDLE" "$TA_PACKAGING_DIR/$TA_NAME/windows_$SPLUNK_ARCH/bin/agent-bundle_windows_${ARCH}.zip"
45+
cp "$BUILD_DIR/out/smart-agent/agent-bundle_${version}windows_${ARCH}.zip" "$TA_PACKAGING_DIR/$TA_NAME/windows_$SPLUNK_ARCH/bin/agent-bundle_windows_${ARCH}.zip"
4346
fi
4447
if [ "$PLATFORM" == "linux" ] || [ "$PLATFORM" == "all" ] ; then
45-
SMART_AGENT_BUNDLE="agent-bundle_${OTEL_COLLECTOR_VERSION}_linux_${ARCH}.tar.gz"
46-
cp "$BUILD_DIR/out/smart-agent/$SMART_AGENT_BUNDLE" "$TA_PACKAGING_DIR/$TA_NAME/linux_$SPLUNK_ARCH/bin/agent-bundle_linux_${ARCH}.tar.gz"
48+
cp "$BUILD_DIR/out/smart-agent/agent-bundle_${version}linux_${ARCH}.tar.gz" "$TA_PACKAGING_DIR/$TA_NAME/linux_$SPLUNK_ARCH/bin/agent-bundle_linux_${ARCH}.tar.gz"
4749
fi
4850

4951
# Prepare artifact directory structure

0 commit comments

Comments
 (0)