Skip to content

[WIP] Add e2e github action #18

[WIP] Add e2e github action

[WIP] Add e2e github action #18

Workflow file for this run

# Copyright 2024 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: e2e
on:
pull_request:
types:
- opened
- synchronize
- labeled
branches:
- main
- release-*
push:
branches:
- main
- release-*
jobs:
build:
runs-on: ubuntu-latest
if: contains(github.event.pull_request.labels.*.name, 'ok-to-test') || github.event_name == 'push'
steps:
- uses: actions/checkout@v4
name: Check out code
- 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
REPO_FULL_NAME="${{ github.event.pull_request.head.repo.full_name }}"
echo "${REPO_FULL_NAME}"
echo "LABEL_IMAGE_SOURCE=https://github.com/${REPO_FULL_NAME}" >> $GITHUB_ENV
GENERATE_ARTIFACTS="true"
if [[ "${{ github.actor }}" == "dependabot[bot]" ]]; then
GENERATE_ARTIFACTS="false"
fi
echo "PUSH_ON_BUILD=${GENERATE_ARTIFACTS}" >> $GITHUB_ENV
echo "BUILD_MULTI_ARCH_IMAGES=false" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ secrets.CNT_ACCESS_KEY_ID }}
password: ${{ secrets.CNT_SECRET_ACCESS_KEY }}
- name: Build image
env:
IMAGE_NAME: ghcr.io/${LOWERCASE_REPO_OWNER}/k8s-device-plugin
VERSION: ${COMMIT_SHORT_SHA}
run: |
echo "${VERSION}"
make -f deployments/container/Makefile build-ubuntu20.04
test:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
name: Checkout code
- name: Calculate test env vars
id: vars
run: |
echo "COMMIT_SHORT_SHA=${GITHUB_SHA:0:8}" >> $GITHUB_ENV
echo "GH_ACTION=gh-action-${GITHUB_SHA:0:8}" >> $GITHUB_ENV
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: 'stable'
- name: Get private key
run: |
cat << EOF > ./key.pem
${{ secrets.AWS_SSH_KEY }}
EOF
chmod 0400 ./key.pem
- name: Install and setup Holodeck
env:
HOLODECK_VERSION: v0.1.1
SSH_KEY: ${{ github.workspace }}/key.pem
run: |
curl -sL https://github.com/NVIDIA/holodeck/releases/download/${HOLODECK_VERSION}/holodeck-linux-amd64 -o /usr/local/bin/holodeck
chmod +x /usr/local/bin/holodeck
sed -i "s|HOLODECK_NAME|${GH_ACTION}|g" tests/e2e/holodeck.yaml
sed -i "s|HOLODECK_PRIVATE_KEY|${SSH_KEY}|g" tests/e2e/holodeck.yaml
- name: Create test environment
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
holodeck create -f holodeck.yaml -p -c ${{ github.workspace }}/${COMMIT_SHORT_SHA} -k ./kubeconfig
- name: Run tests
env:
KUBECONFIG: ${{ github.workspace }}/kubeconfig
E2E_IMAGE_REPO: ghcr.io/nvidia/k8s-device-plugin
E2E_IMAGE_TAG: ${COMMIT_SHORT_SHA}-ubuntu20.04
run: |
echo "Running e2e-tests"
make -f tests/e2e/Makefile e2e-test
- name: Cleanup
run: |
holodeck delete -f holodeck.yaml -c ${{ github.workspace }}/${COMMIT_SHORT_SHA}