diff --git a/.github/workflows/ci-docker-hotrod.yml b/.github/workflows/ci-docker-hotrod.yml index 3bb9e902a40..c2ba2e8d793 100644 --- a/.github/workflows/ci-docker-hotrod.yml +++ b/.github/workflows/ci-docker-hotrod.yml @@ -57,7 +57,3 @@ jobs: env: DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} QUAY_TOKEN: ${{ secrets.QUAY_TOKEN }} - - - name: Print logs from hotrod - run: docker compose -f ./examples/hotrod/docker-compose.yml logs - if: failure() diff --git a/.github/workflows/ci-e2e-cassandra.yml b/.github/workflows/ci-e2e-cassandra.yml index 6ba76478f6a..938ab126bde 100644 --- a/.github/workflows/ci-e2e-cassandra.yml +++ b/.github/workflows/ci-e2e-cassandra.yml @@ -45,10 +45,6 @@ jobs: id: test-execution run: bash scripts/cassandra-integration-test.sh ${{ matrix.version.major }} ${{ matrix.version.schema }} ${{ matrix.jaeger-version }} - - name: Output Cassandra logs - run: docker compose -f ${{ steps.test-execution.outputs.docker_compose_file }} logs - if: ${{ failure() }} - - name: Upload coverage to codecov uses: ./.github/actions/upload-codecov with: diff --git a/.github/workflows/ci-e2e-elasticsearch.yml b/.github/workflows/ci-e2e-elasticsearch.yml index 2a5165b3bf3..47796eb3052 100644 --- a/.github/workflows/ci-e2e-elasticsearch.yml +++ b/.github/workflows/ci-e2e-elasticsearch.yml @@ -58,11 +58,6 @@ jobs: id: test-execution run: bash scripts/es-integration-test.sh ${{ matrix.version.distribution }} ${{ matrix.version.major }} ${{ matrix.version.jaeger }} - - - name: Output ${{ matrix.version.distribution }} logs - run: docker compose -f ${{ steps.test-execution.outputs.docker_compose_file }} logs - if: ${{ failure() }} - - name: Upload coverage to codecov uses: ./.github/actions/upload-codecov with: diff --git a/.github/workflows/ci-e2e-opensearch.yml b/.github/workflows/ci-e2e-opensearch.yml index a25f3ed8f26..d7d8a48d9e2 100644 --- a/.github/workflows/ci-e2e-opensearch.yml +++ b/.github/workflows/ci-e2e-opensearch.yml @@ -56,11 +56,6 @@ jobs: id: test-execution run: bash scripts/es-integration-test.sh ${{ matrix.version.distribution }} ${{ matrix.version.major }} ${{ matrix.version.jaeger }} - - - name: Output ${{ matrix.version.distribution }} logs - run: docker compose -f ${{ steps.test-execution.outputs.docker_compose_file }} logs - if: ${{ failure() }} - - name: Upload coverage to codecov uses: ./.github/actions/upload-codecov with: diff --git a/scripts/es-integration-test.sh b/scripts/es-integration-test.sh index d5b0327d40a..d1e58af5e7d 100755 --- a/scripts/es-integration-test.sh +++ b/scripts/es-integration-test.sh @@ -8,6 +8,7 @@ set -euf -o pipefail # use global variables to reflect status of db db_is_up= +success="false" usage() { echo "Usage: $0 " @@ -55,10 +56,6 @@ wait_for_storage() { # if after all the attempts the storage is not accessible, terminate it and exit if [[ "$(curl "${params[@]}" "${url}")" != "200" ]]; then echo "ERROR: ${distro} is not ready at ${url} after $(( attempt * 10 )) seconds" - echo "::group::${distro} logs" - docker compose -f "${compose_file}" logs - echo "::endgroup::" - docker compose -f "${compose_file}" down db_is_up=0 else echo "SUCCESS: ${distro} is available at ${url}" @@ -87,18 +84,29 @@ bring_up_storage() { break fi done - if [ ${db_is_up} = "1" ]; then - # shellcheck disable=SC2064 - trap "teardown_storage ${compose_file}" EXIT - else + # shellcheck disable=SC2064 + trap "teardown_storage ${compose_file} ${distro}" EXIT + if [ ${db_is_up} != "1" ]; then echo "ERROR: unable to start ${distro}" exit 1 fi } +dump_logs() { + local compose_file=$1 + local distro=$2 + echo "::group::${distro} logs" + docker compose -f "${compose_file}" logs + echo "::endgroup::" +} + # terminate the elasticsearch/opensearch container teardown_storage() { local compose_file=$1 + local distro=$2 + if [[ "$success" == "false" ]]; then + dump_logs "${compose_file}" "${distro}" + fi docker compose -f "${compose_file}" down } @@ -131,6 +139,7 @@ main() { echo "ERROR: Invalid argument value jaeger_version=${j_version}, expecing v1/v2". exit 1 fi + success="true" } main "$@" diff --git a/scripts/hotrod-integration-test.sh b/scripts/hotrod-integration-test.sh index 949a8654cc1..0cff5a405fc 100755 --- a/scripts/hotrod-integration-test.sh +++ b/scripts/hotrod-integration-test.sh @@ -17,6 +17,7 @@ docker_compose_file="./examples/hotrod/docker-compose.yml" platforms="$(make echo-linux-platforms)" current_platform="$(go env GOOS)/$(go env GOARCH)" LOCAL_FLAG='' +success="false" while getopts "lp:h" opt; do case "${opt}" in @@ -33,8 +34,18 @@ while getopts "lp:h" opt; do esac done +dump_logs() { + local compose_file=$1 + echo "::group:: Hotrod logs" + docker compose -f "${compose_file}" logs + echo "::endgroup::" +} + teardown() { echo "Tearing down..." + if [[ "$success" == "false" ]]; then + dump_logs "${docker_compose_file}" + fi docker compose -f "$docker_compose_file" down } trap teardown EXIT @@ -115,6 +126,8 @@ if [[ "$span_count" -lt "$EXPECTED_SPANS" ]]; then exit 1 fi +success="true" + # Ensure the image is published after successful test (maybe with -l flag if on a pull request). # This is where all those multi-platform binaries we built earlier are utilized. bash scripts/build-upload-a-docker-image.sh ${LOCAL_FLAG} -c example-hotrod -d examples/hotrod -p "${platforms}"