# Copyright 2025 NVIDIA CORPORATION # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. name: End-to-end Tests on: workflow_run: workflows: [image] types: - completed branches: - "pull-request/[0-9]+" - main - release-* jobs: e2e-tests: runs-on: linux-amd64-cpu4 if: ${{ github.event.workflow_run.conclusion == 'success' }} && ${{ github.event.workflow_run.event == 'push' }} steps: - name: Check out code uses: actions/checkout@v4 - name: Calculate build vars id: vars run: | echo "COMMIT_SHORT_SHA=${GITHUB_SHA:0:8}" >> $GITHUB_ENV echo "LOWERCASE_REPO_OWNER=$(echo "${GITHUB_REPOSITORY_OWNER}" | awk '{print tolower($0)}')" >> $GITHUB_ENV GOLANG_VERSION=$(./hack/golang-version.sh) echo "GOLANG_VERSION=${GOLANG_VERSION##GOLANG_VERSION := }" >> $GITHUB_ENV - name: Install Go uses: actions/setup-go@v5 with: go-version: ${{ env.GOLANG_VERSION }} - name: Set up Holodeck uses: NVIDIA/holodeck@v0.2.5 with: aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws_ssh_key: ${{ secrets.AWS_SSH_KEY }} holodeck_config: "tests/e2e/infra/aws.yaml" - name: Get public dns name id: holodeck_public_dns_name uses: mikefarah/yq@master with: cmd: yq '.status.properties[] | select(.name == "public-dns-name") | .value' /github/workspace/.cache/holodeck.yaml - name: Run e2e tests env: IMAGE_NAME: ghcr.io/${LOWERCASE_REPO_OWNER}/container-toolkit VERSION: ${COMMIT_SHORT_SHA} SSH_KEY: ${{ secrets.AWS_SSH_KEY }} E2E_SSH_USER: ${{ secrets.E2E_SSH_USER }} E2E_SSH_HOST: ${{ steps.holodeck_public_dns_name.outputs.result }} E2E_INSTALL_CTK: "true" run: | e2e_ssh_key=$(mktemp) echo "$SSH_KEY" > "$e2e_ssh_key" chmod 600 "$e2e_ssh_key" export E2E_SSH_KEY="$e2e_ssh_key" make -f tests/e2e/Makefile test - name: Send Slack alert notification id: slack if: ${{ failure() }} uses: slackapi/slack-github-action@v1.27.0 env: SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} SUMMARY_URL: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}} with: channel-id: ${{ secrets.SLACK_CHANNEL_ID }} slack-message: | :x: On repository ${{ github.repository }} the Workflow *${{ github.workflow }}* has failed. Details: ${{ env.SUMMARY_URL }}