diff --git a/.github/workflows/arm-AL2023-build-test-push-workflow-AL2023.yml b/.github/workflows/arm-AL2023-build-test-push-workflow-AL2023.yml index 780ee7667..143111628 100644 --- a/.github/workflows/arm-AL2023-build-test-push-workflow-AL2023.yml +++ b/.github/workflows/arm-AL2023-build-test-push-workflow-AL2023.yml @@ -1,6 +1,7 @@ name: Arm AL2023 Smoke Test WorkFlow permissions: contents: read + checks: write packages: write id-token: write pull-requests: write @@ -17,7 +18,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -33,7 +34,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -52,10 +53,23 @@ jobs: run: goveralls -coverprofile=coverage.out -service=circle-ci -repotoken ${{ secrets.COVERALLS_TOKEN }} continue-on-error: true - name: Upload Coverage artifacts - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: coverage.out path: coverage.out + - name: Upload Unit Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: test-report-unit + path: unit_test*.xml + - name: Publish Unit Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'unit_test*.xml' + check_name: 'Unit Test Results (ARM AL2023)' + detailed_summary: true build-operator-image-arm-al2023: runs-on: ubuntu-latest needs: unit-tests @@ -66,12 +80,12 @@ jobs: S3_REGION: ${{ secrets.AWS_DEFAULT_REGION }} steps: - name: Set up cosign - uses: sigstore/cosign-installer@main + uses: sigstore/cosign-installer@v4.0.0 - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -98,7 +112,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and push Splunk Operator Image run: | export PLATFORMS=linux/arm64,linux/amd64 @@ -166,7 +180,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -208,7 +222,7 @@ jobs: sudo curl -L -o /usr/local/bin/operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}/operator-sdk-${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}-x86_64-linux-gnu sudo chmod +x /usr/local/bin/operator-sdk - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -224,7 +238,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Pull Splunk Enterprise Image run: docker pull ${{ env.SPLUNK_ENTERPRISE_IMAGE }} - name: Create EKS cluster @@ -248,6 +262,7 @@ jobs: id: smoketest timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -259,10 +274,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Smoke Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-smoke-arm-al2023-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Smoke Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Smoke Test Results (ARM AL2023) - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | diff --git a/.github/workflows/arm-AL2023-int-test-workflow.yml b/.github/workflows/arm-AL2023-int-test-workflow.yml index 2697ff1af..39986ebca 100644 --- a/.github/workflows/arm-AL2023-int-test-workflow.yml +++ b/.github/workflows/arm-AL2023-int-test-workflow.yml @@ -2,6 +2,7 @@ name: Arm AL2023 Integration Test WorkFlow permissions: contents: read packages: write + checks: write id-token: write pull-requests: write on: @@ -22,7 +23,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -46,7 +47,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and push Splunk Operator Image run: | export PLATFORMS=linux/arm64,linux/amd64 @@ -118,7 +119,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -156,7 +157,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -172,7 +173,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Pull Splunk Enterprise Image run: docker pull ${{ env.SPLUNK_ENTERPRISE_IMAGE }} - name: Create EKS cluster @@ -195,6 +196,7 @@ jobs: - name: Run Integration test timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -206,10 +208,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Integration Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-integration-arm-al2023-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Integration Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Integration Test Results (ARM AL2023) - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | diff --git a/.github/workflows/arm-RHEL-build-test-push-workflow.yml b/.github/workflows/arm-RHEL-build-test-push-workflow.yml index f860f1c43..07848683c 100644 --- a/.github/workflows/arm-RHEL-build-test-push-workflow.yml +++ b/.github/workflows/arm-RHEL-build-test-push-workflow.yml @@ -2,6 +2,7 @@ name: ARM RHEL Smoke Test WorkFlow permissions: contents: read packages: write + checks: write id-token: write pull-requests: write on: @@ -22,7 +23,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -46,7 +47,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and push Splunk Operator Image run: | export PLATFORMS=linux/arm64,linux/amd64 @@ -55,7 +56,6 @@ jobs: export IMG=${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA make docker-buildx PLATFORMS=$PLATFORMS BASE_IMAGE=$BASE_IMAGE BASE_IMAGE_VERSION=$BASE_IMAGE_VERSION IMG=$IMG smoke-tests-arm-rhel: - timeout-minutes: 240 strategy: fail-fast: false matrix: @@ -73,7 +73,9 @@ jobs: ] runs-on: ubuntu-latest needs: build-operator-image-arm-rhel + timeout-minutes: 240 env: + TEST_TIMEOUT: 225m CLUSTER_NODES: 1 CLUSTER_WORKERS: 3 SPLUNK_ENTERPRISE_IMAGE: ${{ secrets.ECR_PREFIX }}/${{ github.event.inputs.splunk_image_repository_tag }} @@ -119,7 +121,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -157,7 +159,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -173,7 +175,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Pull Splunk Enterprise Image run: docker pull ${{ env.SPLUNK_ENTERPRISE_IMAGE }} - name: Create EKS cluster @@ -196,6 +198,7 @@ jobs: - name: Run smoke test timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -207,10 +210,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Smoke Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-smoke-arm-rhel-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Smoke Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Smoke Test Results (ARM RHEL) - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | diff --git a/.github/workflows/arm-RHEL-int-test-workflow.yml b/.github/workflows/arm-RHEL-int-test-workflow.yml index ff9baddcb..83c7e8fb9 100644 --- a/.github/workflows/arm-RHEL-int-test-workflow.yml +++ b/.github/workflows/arm-RHEL-int-test-workflow.yml @@ -2,6 +2,7 @@ name: ARM RHEL Integration Test WorkFlow permissions: contents: read packages: write + checks: write id-token: write pull-requests: write on: @@ -22,7 +23,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -46,7 +47,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and push Splunk Operator Image run: | export PLATFORMS=linux/arm64,linux/amd64 @@ -118,7 +119,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -156,7 +157,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -172,7 +173,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Pull Splunk Enterprise Image run: docker pull ${{ env.SPLUNK_ENTERPRISE_IMAGE }} - name: Create EKS cluster @@ -195,6 +196,7 @@ jobs: - name: Run Integration test timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -206,10 +208,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Integration Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-integration-arm-rhel-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Integration Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Integration Test Results (ARM RHEL) - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | diff --git a/.github/workflows/arm-Ubuntu-build-test-push-workflow.yml b/.github/workflows/arm-Ubuntu-build-test-push-workflow.yml index e8e8ab65a..05aa9a1fc 100644 --- a/.github/workflows/arm-Ubuntu-build-test-push-workflow.yml +++ b/.github/workflows/arm-Ubuntu-build-test-push-workflow.yml @@ -2,6 +2,7 @@ name: Arm Ubuntu Smoke Test WorkFlow permissions: contents: read packages: write + checks: write id-token: write pull-requests: write on: @@ -17,7 +18,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -33,7 +34,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -52,10 +53,23 @@ jobs: run: goveralls -coverprofile=coverage.out -service=circle-ci -repotoken ${{ secrets.COVERALLS_TOKEN }} continue-on-error: true - name: Upload Coverage artifacts - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: coverage.out path: coverage.out + - name: Upload Unit Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: test-report-unit + path: unit_test*.xml + - name: Publish Unit Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'unit_test*.xml' + check_name: 'Unit Test Results (ARM Ubuntu)' + detailed_summary: true build-operator-image-arm-ubuntu: runs-on: ubuntu-latest needs: unit-tests @@ -66,12 +80,12 @@ jobs: S3_REGION: ${{ secrets.AWS_DEFAULT_REGION }} steps: - name: Set up cosign - uses: sigstore/cosign-installer@main + uses: sigstore/cosign-installer@v4.0.0 - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -98,7 +112,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and push Splunk Operator Image run: | export PLATFORMS=linux/arm64,linux/amd64 @@ -166,7 +180,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -208,7 +222,7 @@ jobs: sudo curl -L -o /usr/local/bin/operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}/operator-sdk-${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}-x86_64-linux-gnu sudo chmod +x /usr/local/bin/operator-sdk - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -224,7 +238,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Pull Splunk Enterprise Image run: docker pull ${{ env.SPLUNK_ENTERPRISE_IMAGE }} - name: Create EKS cluster @@ -248,6 +262,7 @@ jobs: id: smoketest timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -259,10 +274,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Smoke Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-smoke-arm-ubuntu-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Smoke Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Smoke Test Results (ARM Ubuntu) - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | diff --git a/.github/workflows/arm-Ubuntu-int-test-workflow.yml b/.github/workflows/arm-Ubuntu-int-test-workflow.yml index fe0a69e91..b3f133abe 100644 --- a/.github/workflows/arm-Ubuntu-int-test-workflow.yml +++ b/.github/workflows/arm-Ubuntu-int-test-workflow.yml @@ -2,6 +2,7 @@ name: Arm Ubuntu Integration Test WorkFlow Ubuntu permissions: contents: read packages: write + checks: write id-token: write pull-requests: write on: @@ -22,7 +23,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -46,7 +47,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and push Splunk Operator Image run: | export PLATFORMS=linux/arm64,linux/amd64 @@ -118,7 +119,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -156,7 +157,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -172,7 +173,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Pull Splunk Enterprise Image run: docker pull ${{ env.SPLUNK_ENTERPRISE_IMAGE }} - name: Create EKS cluster @@ -195,6 +196,7 @@ jobs: - name: Run Integration test timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -206,10 +208,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Integration Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-integration-arm-ubuntu-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Integration Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Integration Test Results (ARM Ubuntu) - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | @@ -218,11 +233,4 @@ jobs: - name: Cleanup up EKS cluster if: ${{ always() }} run: | - make cluster-down - #- name: Test Report - # uses: dorny/test-reporter@v1 - # if: success() || failure() # run this step even if previous step failed - # with: - # name: Integration Tests # Name of the check run which will be created - # path: inttest-*.xml # Path to test results - # reporter: jest-junit # Format of test results \ No newline at end of file + make cluster-down \ No newline at end of file diff --git a/.github/workflows/automated-release-workflow.yml b/.github/workflows/automated-release-workflow.yml index 348dea7ed..3c9bd63d1 100644 --- a/.github/workflows/automated-release-workflow.yml +++ b/.github/workflows/automated-release-workflow.yml @@ -28,7 +28,7 @@ jobs: SPLUNK_OPERATOR_RC_IMAGE_NAME: splunk/splunk-operator-rc steps: - name: Set up cosign - uses: sigstore/cosign-installer@main + uses: sigstore/cosign-installer@v4.0.0 - name: Checkout code uses: actions/checkout@v2 @@ -39,7 +39,7 @@ jobs: - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v5 @@ -63,7 +63,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PUSH_TOKEN}} @@ -85,7 +85,7 @@ jobs: make generate-artifacts IMG=splunk/splunk-operator:${{ github.event.inputs.release_version }} VERSION=${{ github.event.inputs.release_version }} SPLUNK_ENTERPRISE_IMAGE=splunk/splunk:${{ github.event.inputs.enterprise_version }} - name: Upload Release Artifacts - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "release-artifacts-${{ github.event.inputs.release_version }}" path: "release-**" @@ -108,14 +108,14 @@ jobs: run: | regctl image copy ${{ secrets.PUBLIC_ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_RC_IMAGE_NAME }}:${{ github.event.inputs.release_version }}-RC splunk/splunk-operator:${{ github.event.inputs.operator_image_tag }} regctl image copy ${{ secrets.PUBLIC_ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_RC_IMAGE_NAME }}:${{ github.event.inputs.release_version }}-RC splunk/splunk-operator:latest - + - name: Sign Splunk Operator image with a key run: | cosign sign --yes --key env://COSIGN_PRIVATE_KEY splunk/splunk-operator:${{ github.event.inputs.operator_image_tag }} env: COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} - + - name: Verify Splunk Operator image with a key run: | cosign verify --key env://COSIGN_PUBLIC_KEY splunk/splunk-operator:${{ github.event.inputs.operator_image_tag }} @@ -125,14 +125,14 @@ jobs: - name: Promote Distroless RC Image to Release run: | regctl image copy ${{ secrets.PUBLIC_ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_RC_IMAGE_NAME }}:${{ github.event.inputs.release_version }}-RC-distroless splunk/splunk-operator:${{ github.event.inputs.operator_image_tag }}-distroless - + - name: Sign Distroless Splunk Operator image with a key run: | cosign sign --yes --key env://COSIGN_PRIVATE_KEY splunk/splunk-operator:${{ github.event.inputs.operator_image_tag }}-distroless env: COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} - + - name: Verify Distroless Splunk Operator image with a key run: | cosign verify --key env://COSIGN_PUBLIC_KEY splunk/splunk-operator:${{ github.event.inputs.operator_image_tag }}-distroless diff --git a/.github/workflows/build-test-push-workflow.yml b/.github/workflows/build-test-push-workflow.yml index a627f35a6..e457272b8 100644 --- a/.github/workflows/build-test-push-workflow.yml +++ b/.github/workflows/build-test-push-workflow.yml @@ -2,6 +2,7 @@ name: Build and Test permissions: contents: read packages: write + checks: write id-token: write pull-requests: write on: @@ -23,7 +24,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -44,7 +45,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -64,10 +65,23 @@ jobs: run: goveralls -shallow -coverprofile=coverage.out -service=circle-ci -repotoken ${{ secrets.COVERALLS_TOKEN }} continue-on-error: true - name: Upload Coverage artifacts - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: coverage.out path: coverage.out + - name: Upload Unit Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: test-report-unit + path: unit_test*.xml + - name: Publish Unit Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'unit_test*.xml' + check_name: 'Unit Test Results' + detailed_summary: true build-operator-image: runs-on: ubuntu-latest needs: [check-formating, unit-tests] @@ -78,12 +92,12 @@ jobs: S3_REGION: ${{ secrets.AWS_DEFAULT_REGION }} steps: - name: Set up cosign - uses: sigstore/cosign-installer@main + uses: sigstore/cosign-installer@v4.0.0 - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -110,7 +124,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and push Splunk Operator Image run: | make docker-buildx IMG=${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA @@ -136,11 +150,11 @@ jobs: IMAGE_NAME: ${{ secrets.ECR_REPOSITORY }}/splunk/splunk-operator:${{ github.sha }} steps: - name: Set up cosign - uses: sigstore/cosign-installer@main + uses: sigstore/cosign-installer@v4.0.0 - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure AWS credentials @@ -152,7 +166,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Pull Splunk Operator Image Locally run: | docker pull ${{ env.IMAGE_NAME }} @@ -171,7 +185,7 @@ jobs: ignore-unfixed: true output: 'trivy-results.sarif' - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v3 + uses: github/codeql-action/upload-sarif@v4 with: sarif_file: 'trivy-results.sarif' smoke-tests: @@ -227,7 +241,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -269,7 +283,7 @@ jobs: sudo curl -L -o /usr/local/bin/operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}/operator-sdk-${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}-x86_64-linux-gnu sudo chmod +x /usr/local/bin/operator-sdk - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -287,7 +301,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Tag and Push Splunk Enterprise Image to ECR run: | docker tag ${{ env.SPLUNK_ENTERPRISE_IMAGE }} ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_ENTERPRISE_IMAGE }} @@ -312,6 +326,7 @@ jobs: id: smoketest timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -323,10 +338,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Smoke Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-smoke-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Smoke Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Smoke Test Results - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | @@ -336,10 +364,3 @@ jobs: if: ${{ always() }} run: | make cluster-down - #- name: Test Report - # uses: dorny/test-reporter@v1 - # if: success() || failure() # run this step even if previous step failed - # with: - # name: Integration Tests # Name of the check run which will be created - # path: inttest-*.xml # Path to test results - # reporter: jest-junit # Format of test results diff --git a/.github/workflows/bundle-push-post-release.yml b/.github/workflows/bundle-push-post-release.yml index 7b10c5061..36a6b6bdc 100644 --- a/.github/workflows/bundle-push-post-release.yml +++ b/.github/workflows/bundle-push-post-release.yml @@ -27,7 +27,7 @@ jobs: - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 @@ -36,7 +36,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PUSH_TOKEN}} diff --git a/.github/workflows/distroless-build-test-push-workflow.yml b/.github/workflows/distroless-build-test-push-workflow.yml index ffc3386f8..69a005c8d 100644 --- a/.github/workflows/distroless-build-test-push-workflow.yml +++ b/.github/workflows/distroless-build-test-push-workflow.yml @@ -2,6 +2,7 @@ name: Build and Test Distroles permissions: contents: read packages: write + checks: write id-token: write pull-requests: write on: @@ -23,7 +24,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -39,7 +40,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -58,10 +59,23 @@ jobs: run: goveralls -shallow -coverprofile=coverage.out -service=circle-ci -repotoken ${{ secrets.COVERALLS_TOKEN }} continue-on-error: true - name: Upload Coverage artifacts - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: coverage.out path: coverage.out + - name: Upload Unit Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: test-report-unit + path: unit_test*.xml + - name: Publish Unit Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'unit_test*.xml' + check_name: 'Unit Test Results' + detailed_summary: true build-operator-image: runs-on: ubuntu-latest needs: unit-tests @@ -72,12 +86,12 @@ jobs: S3_REGION: ${{ secrets.AWS_DEFAULT_REGION }} steps: - name: Set up cosign - uses: sigstore/cosign-installer@main + uses: sigstore/cosign-installer@v4.0.0 - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -104,7 +118,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and push Splunk Operator Image run: | export BASE_IMAGE=gcr.io/distroless/static-debian12 @@ -131,11 +145,11 @@ jobs: # IMAGE_NAME: ${{ secrets.ECR_REPOSITORY }}/splunk/splunk-operator:${{ github.sha }}-distroless # steps: # - name: Set up cosign -# uses: sigstore/cosign-installer@main +# uses: sigstore/cosign-installer@v4.0.0 # - uses: actions/checkout@v2 # - name: Dotenv Action # id: dotenv -# uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 +# uses: falti/dotenv-action@v1 # - name: Set up Docker Buildx # uses: docker/setup-buildx-action@v2.5.0 # - name: Configure AWS credentials @@ -147,7 +161,7 @@ jobs: # role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} # # - name: Login to Amazon ECR -# uses: aws-actions/amazon-ecr-login@v1 +# uses: aws-actions/amazon-ecr-login@v2 # - name: Pull Splunk Operator Image Locally # run: | # docker pull ${{ env.IMAGE_NAME }} @@ -166,7 +180,7 @@ jobs: # ignore-unfixed: true # output: 'trivy-results.sarif' # - name: Upload Trivy scan results to GitHub Security tab -# uses: github/codeql-action/upload-sarif@v3 +# uses: github/codeql-action/upload-sarif@v4 # with: # sarif_file: 'trivy-results.sarif' smoke-tests: @@ -223,7 +237,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -265,7 +279,7 @@ jobs: sudo curl -L -o /usr/local/bin/operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}/operator-sdk-${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}-x86_64-linux-gnu sudo chmod +x /usr/local/bin/operator-sdk - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -283,7 +297,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Tag and Push Splunk Enterprise Image to ECR run: | docker tag ${{ env.SPLUNK_ENTERPRISE_IMAGE }} ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_ENTERPRISE_IMAGE }} @@ -308,6 +322,7 @@ jobs: id: smoketest timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -319,10 +334,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Smoke Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-smoke-distroless-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Smoke Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Smoke Test Results (Distroless) - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | @@ -332,10 +360,3 @@ jobs: if: ${{ always() }} run: | make cluster-down - #- name: Test Report - # uses: dorny/test-reporter@v1 - # if: success() || failure() # run this step even if previous step failed - # with: - # name: Integration Tests # Name of the check run which will be created - # path: inttest-*.xml # Path to test results - # reporter: jest-junit # Format of test results diff --git a/.github/workflows/distroless-int-test-workflow.yml b/.github/workflows/distroless-int-test-workflow.yml index 6238aed14..01a024247 100644 --- a/.github/workflows/distroless-int-test-workflow.yml +++ b/.github/workflows/distroless-int-test-workflow.yml @@ -2,6 +2,7 @@ name: Integration Test Workflow Distroless permissions: contents: read packages: write + checks: write id-token: write pull-requests: write on: @@ -24,7 +25,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -48,7 +49,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and push Splunk Operator Image run: | export PLATFORMS=linux/arm64,linux/amd64 @@ -120,7 +121,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -158,7 +159,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -174,7 +175,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Pull Splunk Enterprise Image run: docker pull ${{ env.SPLUNK_ENTERPRISE_IMAGE }} - name: Create EKS cluster @@ -196,6 +197,7 @@ jobs: - name: Run Integration test timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -207,10 +209,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Integration Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-integration-distroless-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Integration Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Integration Test Results (Distroless) - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | @@ -220,10 +235,3 @@ jobs: if: ${{ always() }} run: | make cluster-down - #- name: Test Report - # uses: dorny/test-reporter@v1 - # if: success() || failure() # run this step even if previous step failed - # with: - # name: Integration Tests # Name of the check run which will be created - # path: inttest-*.xml # Path to test results - # reporter: jest-junit # Format of test results diff --git a/.github/workflows/helm-test-workflow.yml b/.github/workflows/helm-test-workflow.yml index 8f7549ab5..7aceea88a 100644 --- a/.github/workflows/helm-test-workflow.yml +++ b/.github/workflows/helm-test-workflow.yml @@ -2,6 +2,7 @@ name: Helm Test WorkFlow permissions: contents: read packages: write + checks: write id-token: write pull-requests: write on: @@ -26,7 +27,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -50,15 +51,16 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and Push Splunk Operator Image run: | make docker-buildx IMG=${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA int-tests: - timeout-minutes: 240 runs-on: ubuntu-latest needs: build-operator-image + timeout-minutes: 240 env: + TEST_TIMEOUT: 225m SPLUNK_ENTERPRISE_IMAGE: ${{ secrets.SPLUNK_ENTERPRISE_IMAGE }} SPLUNK_OPERATOR_IMAGE_NAME: splunk/splunk-operator SPLUNK_OPERATOR_IMAGE_FILENAME: splunk-operator @@ -103,7 +105,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -148,7 +150,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -163,7 +165,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Pull Splunk Operator Image Locally and change name run: | docker pull ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA @@ -218,11 +220,18 @@ jobs: TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | kubectl kuttl test --config kuttl/kuttl-test-helm.yaml --report xml - - name: Publish Results - uses: mikepenz/action-junit-report@v3 + - name: Upload Helm Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: test-report-helm + path: '**/kuttl-artifacts/*.xml' + - name: Publish Helm Test Report + uses: mikepenz/action-junit-report@v6 if: always() with: - report_paths: '*/kuttl-artifacts/.xml' + report_paths: '**/kuttl-artifacts/*.xml' + check_name: 'Helm Test Results' detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} diff --git a/.github/workflows/int-test-azure-workflow.yml b/.github/workflows/int-test-azure-workflow.yml index 8b4d0e9a8..743bb5df6 100644 --- a/.github/workflows/int-test-azure-workflow.yml +++ b/.github/workflows/int-test-azure-workflow.yml @@ -2,6 +2,7 @@ name: Integration Test on Azure WorkFlow permissions: contents: read packages: write + checks: write pull-requests: write on: push: @@ -22,7 +23,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -69,7 +70,7 @@ jobs: uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Set Cluster Name run: | echo "TEST_CLUSTER_NAME=az${{ github.run_id }}" >> $GITHUB_ENV @@ -144,7 +145,7 @@ jobs: uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -173,7 +174,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -224,6 +225,8 @@ jobs: cp /snap/bin/kustomize ./bin/kustomize - name: Run Integration test timeout-minutes: 240 + env: + TEST_TIMEOUT: 225m run: | make int-test - name: Collect Test Logs @@ -233,10 +236,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-appframeworkazure" path: "/tmp/pod_logs/**" + - name: Upload Integration Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-integration-azure" + path: report-junit*.xml + - name: Publish Integration Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Integration Test Results (Azure)' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | diff --git a/.github/workflows/int-test-gcp-workflow.yml b/.github/workflows/int-test-gcp-workflow.yml index 1d3dce0ce..c72c05579 100644 --- a/.github/workflows/int-test-gcp-workflow.yml +++ b/.github/workflows/int-test-gcp-workflow.yml @@ -3,7 +3,7 @@ permissions: contents: read packages: write pull-requests: write - + checks: write on: push: branches: @@ -25,7 +25,7 @@ jobs: - name: Load Environment Variables id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 with: path: .env # Adjust the path if your dotenv file is located elsewhere @@ -123,7 +123,7 @@ jobs: - name: Load Environment Variables id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 with: path: .env @@ -258,6 +258,8 @@ jobs: - name: Run Integration Tests timeout-minutes: 240 + env: + TEST_TIMEOUT: 225m run: | export GCP_SERVICE_ACCOUNT_KEY=${{ secrets.GCP_SERVICE_ACCOUNT_KEY_BASE64 }} make int-test @@ -270,10 +272,23 @@ jobs: - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: splunk-pods-logs-artifacts-${{ matrix.test_focus.name }} path: /tmp/pod_logs/** + - name: Upload Integration Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: test-report-integration-gcp-${{ matrix.test_focus.name }} + path: report-junit*.xml + - name: Publish Integration Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Integration Test Results (GCP) - ${{ matrix.test_focus.name }}' + detailed_summary: true - name: Cleanup Test Case Artifacts if: ${{ always() }} run: | diff --git a/.github/workflows/int-test-workflow.yml b/.github/workflows/int-test-workflow.yml index 4d0ef5379..001a34cee 100644 --- a/.github/workflows/int-test-workflow.yml +++ b/.github/workflows/int-test-workflow.yml @@ -2,6 +2,7 @@ name: Integration Test WorkFlow permissions: contents: read packages: write + checks: write id-token: write pull-requests: write on: @@ -25,7 +26,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -49,7 +50,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and push Splunk Operator Image run: | make docker-buildx IMG=${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA @@ -115,7 +116,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Change splunk enterprise to release image on main branches if: github.ref == 'refs/heads/main' run: | @@ -153,7 +154,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -171,7 +172,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Tag and Push Splunk Enterprise Image to ECR run: | docker tag ${{ env.SPLUNK_ENTERPRISE_IMAGE }} ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_ENTERPRISE_IMAGE }} @@ -195,6 +196,7 @@ jobs: - name: Run Integration test timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -206,10 +208,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Integration Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-integration-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Integration Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Integration Test Results - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | @@ -218,11 +233,4 @@ jobs: - name: Cleanup up EKS cluster if: ${{ always() }} run: | - make cluster-down - #- name: Test Report - # uses: dorny/test-reporter@v1 - # if: success() || failure() # run this step even if previous step failed - # with: - # name: Integration Tests # Name of the check run which will be created - # path: inttest-*.xml # Path to test results - # reporter: jest-junit # Format of test results \ No newline at end of file + make cluster-down \ No newline at end of file diff --git a/.github/workflows/manual-int-test-workflow.yml b/.github/workflows/manual-int-test-workflow.yml index f5150b3ac..96629316e 100644 --- a/.github/workflows/manual-int-test-workflow.yml +++ b/.github/workflows/manual-int-test-workflow.yml @@ -2,6 +2,7 @@ name: Manual Integration Test WorkFlow permissions: contents: read packages: write + checks: write id-token: write pull-requests: write on: @@ -74,7 +75,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Install Kubectl uses: Azure/setup-kubectl@v3 with: @@ -106,7 +107,7 @@ jobs: sudo curl -L -o /usr/local/bin/operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}/operator-sdk-${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}-x86_64-linux-gnu sudo chmod +x /usr/local/bin/operator-sdk - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -121,7 +122,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and Push Splunk Operator Image run: | docker pull registry.access.redhat.com/ubi8/ubi-minimal:latest @@ -149,6 +150,7 @@ jobs: - name: Run Integration test timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -161,10 +163,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Integration Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-integration-manual-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Integration Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Manual Integration Test Results - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | @@ -185,7 +200,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure AWS credentials @@ -196,7 +211,7 @@ jobs: aws-region: ${{ vars.AWS_REGION }} role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Pull Splunk Operator Image Locally run: | docker pull ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA @@ -204,7 +219,7 @@ jobs: run: | docker tag ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA ${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:${{ env.TAG }} - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PUSH_TOKEN}} diff --git a/.github/workflows/merge-develop-to-main-workflow.yml b/.github/workflows/merge-develop-to-main-workflow.yml index cab11eb85..b94624df1 100644 --- a/.github/workflows/merge-develop-to-main-workflow.yml +++ b/.github/workflows/merge-develop-to-main-workflow.yml @@ -33,7 +33,7 @@ jobs: git reset --hard develop - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Create Pull Request uses: peter-evans/create-pull-request@v3.10.1 with: @@ -62,7 +62,7 @@ jobs: - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 @@ -121,7 +121,7 @@ jobs: make generate-artifacts IMG=${{ secrets.PUBLIC_ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_RC_IMAGE_NAME }}:${{ github.event.inputs.release_version }}-RC${{ github.event.inputs.release_candiate_version }} VERSION=${{ github.event.inputs.release_version }} SPLUNK_ENTERPRISE_IMAGE=splunk/splunk:${{ github.event.inputs.enterprise_version }} - name: Upload Release Artifacts - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "release-artifacts-${{ github.event.inputs.release_version }}-RC" path: "release-**" diff --git a/.github/workflows/namespace-scope-int-workflow.yml b/.github/workflows/namespace-scope-int-workflow.yml index b3576b1ee..fc3d3554f 100644 --- a/.github/workflows/namespace-scope-int-workflow.yml +++ b/.github/workflows/namespace-scope-int-workflow.yml @@ -4,6 +4,7 @@ permissions: packages: write id-token: write pull-requests: write + checks: write on: schedule: - cron: "0 02 * * WED,SUN" @@ -71,7 +72,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Install Kubectl uses: Azure/setup-kubectl@v3 with: @@ -103,7 +104,7 @@ jobs: sudo curl -L -o /usr/local/bin/operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}/operator-sdk-${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}-x86_64-linux-gnu sudo chmod +x /usr/local/bin/operator-sdk - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -118,7 +119,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and Push Splunk Operator Image run: | docker pull registry.access.redhat.com/ubi8/ubi-minimal:latest @@ -146,6 +147,7 @@ jobs: - name: Run Integration test timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -158,10 +160,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Integration Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-integration-namespace-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Integration Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Namespace-Scope Integration Test Results - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup up EKS cluster if: ${{ always() }} run: | diff --git a/.github/workflows/nightly-int-test-workflow.yml b/.github/workflows/nightly-int-test-workflow.yml index 6079816af..3f886dd9a 100644 --- a/.github/workflows/nightly-int-test-workflow.yml +++ b/.github/workflows/nightly-int-test-workflow.yml @@ -4,6 +4,7 @@ permissions: packages: write id-token: write pull-requests: write + checks: write on: schedule: - cron: "0 06 * * 0" @@ -21,7 +22,7 @@ jobs: ref: develop - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Setup Go uses: actions/setup-go@v2 with: @@ -45,7 +46,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build and Push Splunk Operator Image run: | make docker-buildx IMG=${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA @@ -112,7 +113,7 @@ jobs: echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Install Kubectl uses: Azure/setup-kubectl@v3 with: @@ -140,7 +141,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN}} @@ -155,7 +156,7 @@ jobs: role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Tag and Push Splunk Enterprise Image to ECR run: | docker tag ${{ env.SPLUNK_ENTERPRISE_IMAGE }} ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_ENTERPRISE_IMAGE }} @@ -186,6 +187,7 @@ jobs: - name: Run Integration test timeout-minutes: 240 env: + TEST_TIMEOUT: 225m TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }} TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }} run: | @@ -198,10 +200,23 @@ jobs: find ./test -name "*.log" -exec cp {} /tmp/pod_logs \; - name: Archive Pod Logs if Failure in Smoke Test if: ${{ always() }} - uses: actions/upload-artifact@v4.4.0 + uses: actions/upload-artifact@v6 with: name: "splunk-pods-logs--artifacts-${{ matrix.test }}" path: "/tmp/pod_logs/**" + - name: Upload Integration Test Results + if: always() + uses: actions/upload-artifact@v6 + with: + name: "test-report-integration-nightly-${{ matrix.test }}" + path: report-junit*.xml + - name: Publish Integration Test Report + uses: mikepenz/action-junit-report@v6 + if: always() + with: + report_paths: 'report-junit*.xml' + check_name: 'Nightly Integration Test Results - ${{ matrix.test }}' + detailed_summary: true - name: Cleanup Test Case artifacts if: ${{ always() }} run: | @@ -219,13 +234,13 @@ jobs: TAG: edge steps: - name: Set up cosign - uses: sigstore/cosign-installer@main + uses: sigstore/cosign-installer@v4.0.0 - uses: actions/checkout@v2 with: ref: develop - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure AWS credentials @@ -236,7 +251,7 @@ jobs: aws-region: ${{ vars.AWS_REGION }} role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }} - name: Login to Amazon ECR - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Pull Splunk Operator Image Locally run: | docker pull ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA @@ -244,7 +259,7 @@ jobs: run: | docker tag ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA ${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:${{ env.TAG }} - name: Configure Docker Hub credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PUSH_TOKEN}} @@ -256,9 +271,8 @@ jobs: env: COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} - - name: Verify Signed Splunk Operator image + - name: Verify Signed Splunk Operator image run: | cosign verify --key env://COSIGN_PUBLIC_KEY ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:${{ github.sha }} env: COSIGN_PUBLIC_KEY: ${{ secrets.COSIGN_PUBLIC_KEY }} - \ No newline at end of file diff --git a/.github/workflows/pre-release-workflow.yml b/.github/workflows/pre-release-workflow.yml index bdf1cc9b2..cb5e42dcf 100644 --- a/.github/workflows/pre-release-workflow.yml +++ b/.github/workflows/pre-release-workflow.yml @@ -53,13 +53,13 @@ jobs: - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2.5.0 - name: Configure Docker Credentials - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PUSH_TOKEN}} diff --git a/.github/workflows/prodsec-workflow.yml b/.github/workflows/prodsec-workflow.yml index 64fe43b9a..ea0929f0a 100644 --- a/.github/workflows/prodsec-workflow.yml +++ b/.github/workflows/prodsec-workflow.yml @@ -37,7 +37,7 @@ jobs: - uses: actions/checkout@v2 - name: Dotenv Action id: dotenv - uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359 + uses: falti/dotenv-action@v1 - name: Run FOSSA Test uses: fossas/fossa-action@main with: diff --git a/.gitignore b/.gitignore index 4846768ad..5de8f6d85 100644 --- a/.gitignore +++ b/.gitignore @@ -91,7 +91,8 @@ clair-scanner clair-scanner-logs release-* deploy/olm-certified -*junit.xml +report-junit*.xml +unit_test*.xml # Bias Language Linter .biaslanguage/ bin/ diff --git a/Makefile b/Makefile index 170ba70a6..df5dfaf34 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ SPLUNK_ENTERPRISE_IMAGE ?= "docker.io/splunk/splunk" # add namespace to this WATCH_NAMESPACE ?= "" -# SPLUNK_GENERAL_TERMS is used for the mandatory acknowledgment mechanism for +# SPLUNK_GENERAL_TERMS is used for the mandatory acknowledgment mechanism for # the Splunk General Terms (SGT) https://www.splunk.com/en_us/legal/splunk-general-terms.html. # See README for more information on the required value. SPLUNK_GENERAL_TERMS ?= "" @@ -138,7 +138,8 @@ vet: setup/ginkgo ## Run go vet against code. go vet ./... test: manifests generate fmt vet setup-envtest ## Run tests. - KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use ${ENVTEST_K8S_VERSION} --bin-dir $(LOCALBIN) -p path)" ginkgo --junit-report=unit_test.xml --output-dir=`pwd` -vv --trace --keep-going --timeout=3h --cover --covermode=count --coverprofile=coverage.out ./pkg/splunk/common ./pkg/splunk/enterprise ./pkg/splunk/client ./pkg/splunk/util ./internal/controller ./pkg/splunk/splkcontroller + REPORT_FILE="unit_test-$$(date +%Y%m%d-%H%M%S)$${GITHUB_RUN_ID:+-$$GITHUB_RUN_ID}.xml"; \ + KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use ${ENVTEST_K8S_VERSION} --bin-dir $(LOCALBIN) -p path)" ginkgo --junit-report=$$REPORT_FILE --output-dir=`pwd` -vv --trace --keep-going --timeout=$${TEST_TIMEOUT:-170m} --cover --covermode=count --coverprofile=coverage.out ./pkg/splunk/common ./pkg/splunk/enterprise ./pkg/splunk/client ./pkg/splunk/util ./internal/controller ./pkg/splunk/splkcontroller ##@ Documentation diff --git a/test/trigger-tests.sh b/test/trigger-tests.sh index b04698e0c..dce729e03 100644 --- a/test/trigger-tests.sh +++ b/test/trigger-tests.sh @@ -147,6 +147,11 @@ kubectl patch configmap splunk-operator-manager-telemetry -n splunk-operator --t echo "Skipping following test :: ${TEST_TO_SKIP}" +TIMESTAMP=$(date +%Y%m%d-%H%M%S) +REPORT_FILENAME="report-junit-${TIMESTAMP}${GITHUB_RUN_ID:+-${GITHUB_RUN_ID}}-${TEST_TO_RUN:-all}.xml" + +TEST_TIMEOUT="${TEST_TIMEOUT:-225m}" + # Running only smoke test cases by default or value passed through TEST_FOCUS env variable. To run different test packages add/remove path from focus argument or TEST_FOCUS variable -echo "ginkgo --junit-report=inttest.xml -v --keep-going --trace -r --timeout=7h -nodes=${CLUSTER_NODES} --focus="${TEST_TO_RUN}" --skip="${TEST_TO_SKIP}" --output-interceptor-mode=none --cover ${topdir}/test/ -- -commit-hash=${COMMIT_HASH} -operator-image=${PRIVATE_SPLUNK_OPERATOR_IMAGE} -splunk-image=${PRIVATE_SPLUNK_ENTERPRISE_IMAGE} -cluster-wide=${CLUSTER_WIDE}" -ginkgo --junit-report=inttest-junit.xml --output-dir=`pwd` -v --keep-going --trace -r --timeout=7h -nodes=${CLUSTER_NODES} --focus="${TEST_TO_RUN}" --skip="${TEST_TO_SKIP}" --output-interceptor-mode=none --cover ${topdir}/test/ -- -commit-hash=${COMMIT_HASH} -operator-image=${PRIVATE_SPLUNK_OPERATOR_IMAGE} -splunk-image=${PRIVATE_SPLUNK_ENTERPRISE_IMAGE} -cluster-wide=${CLUSTER_WIDE} \ No newline at end of file +echo "ginkgo --junit-report=${REPORT_FILENAME} -v --keep-going --trace -r --timeout=${TEST_TIMEOUT} -nodes=${CLUSTER_NODES} --focus=\"${TEST_TO_RUN}\" --skip=\"${TEST_TO_SKIP}\" --output-interceptor-mode=none --cover ${topdir}/test/ -- -commit-hash=${COMMIT_HASH} -operator-image=${PRIVATE_SPLUNK_OPERATOR_IMAGE} -splunk-image=${PRIVATE_SPLUNK_ENTERPRISE_IMAGE} -cluster-wide=${CLUSTER_WIDE}" +ginkgo --junit-report=${REPORT_FILENAME} --output-dir=`pwd` -v --keep-going --trace -r --timeout=${TEST_TIMEOUT} -nodes=${CLUSTER_NODES} --focus="${TEST_TO_RUN}" --skip="${TEST_TO_SKIP}" --output-interceptor-mode=none --cover ${topdir}/test/ -- -commit-hash=${COMMIT_HASH} -operator-image=${PRIVATE_SPLUNK_OPERATOR_IMAGE} -splunk-image=${PRIVATE_SPLUNK_ENTERPRISE_IMAGE} -cluster-wide=${CLUSTER_WIDE} \ No newline at end of file