Skip to content

Commit ce90044

Browse files
authored
[chore] Add Docker test pipeline (open-telemetry#837)
* initial testing Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> try to build images again Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> ignore darwin ppc64le build Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> try with conditional Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> fix expression Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> try again Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> debugging Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> and again Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> disable windows/ppc64le Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> remove ppc64le from darwin and windows builds Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> more debugging Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> try agian Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> again Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> more Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> try using tojson and not fromjson Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> extract data from files directly Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> finally getting somewhere Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> more jq changes Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> more variables Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> remove newlines Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> remove quotes Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> try removing quotes in jq commands Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> extract goos and goarch from tar.gz artifacts Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> use correct path Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> try with different conditional Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> adjust paths again Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> try adding quotes Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> try different conditional Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> dfebugging Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> sanity check Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> fix conditional, try to fix quotes Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> copy binary before building image Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add first docker test steps Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> fix matrix reference Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> reduce pipeline debugging demand Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> exclude darwin and windows docker tests Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> remove darwin for now Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> debugging of paths Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> fix path Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> change from docker ps to docker logs Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> set entrypoint manually Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> change from import to load Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> almost there Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> fix version Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> set name explicitely Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> more output Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> redirect stderr to stdout Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> better output Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> more debug output Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> fix newlines Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> use special test config file Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> forgot backslash... Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add pwd Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> do loopback Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> Revert "reduce pipeline debugging demand" This reverts commit b858523. remove maybe unneeded steps Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add back download step Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add back qemu action Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add back checkout step Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> add back qemu step Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> revert removal of windows/ppc64le variant Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> revert matrix configs Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> * remove darwin/ppc64le variant from CI since no artifacts are built there Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> * only run docker test steps on linux Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com> --------- Signed-off-by: Moritz Wiesinger <moritz.wiesinger@dynatrace.com>
1 parent dd74261 commit ce90044

File tree

2 files changed

+128
-0
lines changed

2 files changed

+128
-0
lines changed

.github/workflows/base-ci-goreleaser.yaml

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ jobs:
4646
- GOOS: windows
4747
GOARCH: ppc64le
4848
runs-on: ubuntu-24.04
49+
outputs:
50+
version: ${{ steps.prep.outputs.version }}
4951

5052
steps:
5153
- name: Checkout
@@ -165,6 +167,9 @@ jobs:
165167
- name: Print built artifacts
166168
run: cat ./distributions/${{ inputs.distribution }}/dist/**/artifacts.json
167169

170+
- name: Print metadata
171+
run: cat ./distributions/${{ inputs.distribution }}/dist/**/metadata.json
172+
168173
- name: Print dist folder contents
169174
if: always()
170175
run: ls -laR ./distributions/${{ inputs.distribution }}/dist
@@ -184,3 +189,109 @@ jobs:
184189
name: msi-packages
185190
path: distributions/${{ inputs.distribution }}/dist/windows_amd64_v1/**/*.msi
186191
if-no-files-found: error
192+
193+
- name: Prepare variables
194+
if: matrix.GOOS == 'linux'
195+
id: prep
196+
run: |
197+
# Find version number and types of built artifacts
198+
echo "version=$(cat ./distributions/${{ inputs.distribution }}/dist/**/metadata.json | jq -r '.version')" >> "$GITHUB_OUTPUT"
199+
echo "types=$(cat ./distributions/${{ inputs.distribution }}/dist/**/artifacts.json | jq '[.[].type]' | tr -d '\n' )" >> "$GITHUB_OUTPUT"
200+
201+
# Find GOOS and GOARCH
202+
os=$(cat ./distributions/${{ inputs.distribution }}/dist/**/artifacts.json | jq -r '.[] | select(.name | contains(".tar.gz")) | .goos')
203+
arch=$(cat ./distributions/${{ inputs.distribution }}/dist/**/artifacts.json | jq -r '.[] | select(.name | contains(".tar.gz")) | .goarch')
204+
echo "arch=$os-$arch" >> "$GITHUB_OUTPUT"
205+
206+
# Find binary path
207+
echo "binary-path=$(cat ./distributions/${{ inputs.distribution }}/dist/**/artifacts.json | jq -r 'map(select(any(.type; contains("Binary")))) | .[].path' )" >> "$GITHUB_OUTPUT"
208+
209+
- name: Print version and target
210+
if: matrix.GOOS == 'linux'
211+
run: |
212+
echo 'Version: ${{ steps.prep.outputs.version }}'
213+
echo 'Types: ${{ steps.prep.outputs.types }}'
214+
echo 'Arch: ${{ steps.prep.outputs.arch }}'
215+
echo 'Images?: ${{ steps.prep.outputs.container-images }}'
216+
217+
- name: Copy binary to distro root folder
218+
if: matrix.GOOS == 'linux'
219+
run: cp ./distributions/${{ inputs.distribution }}/${{ steps.prep.outputs.binary-path }} ./distributions/${{ inputs.distribution }}
220+
221+
- name: Build container images locally
222+
if: matrix.GOOS == 'linux' && contains(steps.prep.outputs.types, 'Docker Image')
223+
uses: docker/build-push-action@0adf9959216b96bec444f325f1e493d4aa344497 # v6.14.0
224+
with:
225+
context: ./distributions/${{ inputs.distribution }}
226+
push: false
227+
load: true
228+
tags: ${{ inputs.distribution }}:${{ steps.prep.outputs.version }}-${{ steps.prep.outputs.arch }}
229+
230+
- name: Export container image to tarball
231+
if: matrix.GOOS == 'linux' && contains(steps.prep.outputs.types, 'Docker Image')
232+
run: |
233+
docker save ${{ inputs.distribution }}:${{ steps.prep.outputs.version }}-${{ steps.prep.outputs.arch }} > /tmp/${{ inputs.distribution }}.tar
234+
235+
- name: Upload container image artifact
236+
if: matrix.GOOS == 'linux' && contains(steps.prep.outputs.types, 'Docker Image')
237+
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
238+
with:
239+
name: ${{ inputs.distribution }}-image-${{ steps.prep.outputs.version }}-${{ steps.prep.outputs.arch }}
240+
path: /tmp/${{ inputs.distribution }}.tar
241+
retention-days: 7
242+
243+
docker-tests:
244+
needs:
245+
- check-goreleaser
246+
strategy:
247+
matrix:
248+
GOOS: ${{ fromJSON( inputs.goos) }}
249+
GOARCH: ${{ fromJSON( inputs.goarch) }}
250+
exclude:
251+
- GOOS: darwin
252+
- GOOS: windows
253+
runs-on: ubuntu-24.04
254+
steps:
255+
- name: Checkout
256+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
257+
258+
- name: Setup QEMU
259+
uses: docker/setup-qemu-action@4574d27a4764455b42196d70a065bc6853246a25 # v3.4.0
260+
with:
261+
platforms: arm64,ppc64le,linux/arm/v7,s390x
262+
263+
- name: Download container image artifact
264+
uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 #v4.1.9
265+
with:
266+
name: ${{ inputs.distribution }}-image-${{ needs.check-goreleaser.outputs.version }}-${{ matrix.GOOS }}-${{ matrix.GOARCH }}
267+
268+
- name: Load image into docker
269+
run: |
270+
docker image load --input ./${{ inputs.distribution }}.tar
271+
docker image ls
272+
docker image inspect ${{ inputs.distribution }}:${{ needs.check-goreleaser.outputs.version }}-${{ matrix.GOOS }}-${{ matrix.GOARCH }}
273+
274+
- name: Run container image
275+
run: |
276+
echo "Running container..."
277+
docker run --name ${{ inputs.distribution }} \
278+
-d \
279+
-v ${PWD}/tests/docker-tests/default-config.yaml:/config.yaml \
280+
${{ inputs.distribution }}:${{ needs.check-goreleaser.outputs.version }}-${{ matrix.GOOS }}-${{ matrix.GOARCH }} \
281+
--config /config.yaml
282+
echo "docker ps:"
283+
echo ""
284+
docker ps
285+
echo "Sleeping for a bit..."
286+
sleep 10
287+
echo "Checking logs for correct startup..."
288+
docker logs ${{ inputs.distribution }} >& docker-logs-${{ inputs.distribution }}.log
289+
if cat docker-logs-${{ inputs.distribution }}.log | grep "Everything is ready."; then
290+
echo "${{ inputs.distribution }} started up correctly"
291+
else
292+
echo "${{ inputs.distribution }} failed to start"
293+
echo "Printing container logs below..."
294+
echo ""
295+
cat docker-logs-${{ inputs.distribution }}.log
296+
exit 1
297+
fi
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
receivers:
3+
otlp:
4+
protocols:
5+
grpc:
6+
endpoint: 0.0.0.0:4317
7+
8+
exporters:
9+
otlphttp:
10+
endpoint: "http://0.0.0.0:4317"
11+
12+
service:
13+
pipelines:
14+
metrics:
15+
receivers: [otlp]
16+
processors: []
17+
exporters: [otlphttp]

0 commit comments

Comments
 (0)