-
Notifications
You must be signed in to change notification settings - Fork 635
117 lines (112 loc) · 4.11 KB
/
e2e.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# 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}