Merge pull request #6626 from TBBle/run-cri_integration-tests-in-GitHub_Actions

Run CRI integration tests in GitHub Actions (Windows)
This commit is contained in:
Phil Estes 2022-03-07 13:15:42 -05:00 committed by GitHub
commit f18880a0ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 57 additions and 7 deletions

View File

@ -230,7 +230,7 @@ jobs:
integration-windows: integration-windows:
name: Windows Integration name: Windows Integration
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
timeout-minutes: 35 timeout-minutes: 50
needs: [project, linters, protos, man] needs: [project, linters, protos, man]
env: env:
GOTEST: gotestsum -- GOTEST: gotestsum --
@ -259,11 +259,17 @@ jobs:
repository: Microsoft/hcsshim repository: Microsoft/hcsshim
path: src/github.com/Microsoft/hcsshim path: src/github.com/Microsoft/hcsshim
- uses: actions/checkout@v2
with:
repository: kubernetes-sigs/cri-tools
path: src/github.com/kubernetes-sigs/cri-tools
- name: Set env - name: Set env
run: | run: |
echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
echo "${{ github.workspace }}/bin" >> $GITHUB_PATH echo "${{ github.workspace }}/bin" >> $GITHUB_PATH
echo "${{ github.workspace }}/src/github.com/containerd/containerd/bin" >> $GITHUB_PATH echo "${{ github.workspace }}/src/github.com/containerd/containerd/bin" >> $GITHUB_PATH
echo "${{ github.workspace }}/src/github.com/kubernetes-sigs/cri-tools/build/bin" >> $GITHUB_PATH
- run: script/setup/install-dev-tools - run: script/setup/install-dev-tools
@ -279,6 +285,35 @@ jobs:
git fetch --tags origin "${SHIM_COMMIT}" git fetch --tags origin "${SHIM_COMMIT}"
git checkout "${SHIM_COMMIT}" git checkout "${SHIM_COMMIT}"
GO111MODULE=on go build -mod=vendor -o "${bindir}/integration/client/containerd-shim-runhcs-v1.exe" ./cmd/containerd-shim-runhcs-v1 GO111MODULE=on go build -mod=vendor -o "${bindir}/integration/client/containerd-shim-runhcs-v1.exe" ./cmd/containerd-shim-runhcs-v1
cd ../../kubernetes-sigs/cri-tools
make critest
- run: script/setup/install-cni-windows
- env:
TEST_IMAGE_LIST: ${{github.workspace}}/repolist.toml
CRI_TEST_IMAGES: ${{github.workspace}}/cri-test-images.yaml
BUSYBOX_TESTING_IMAGE_REF: "k8s.gcr.io/e2e-test-images/busybox:1.29-2"
RESOURCE_CONSUMER_TESTING_IMAGE_REF: "k8s.gcr.io/e2e-test-images/resource-consumer:1.10"
WEBSERVER_TESTING_IMAGE_REF: "k8s.gcr.io/e2e-test-images/nginx:1.14-2"
run: |
cat > "${{ env.TEST_IMAGE_LIST }}" << EOF
busybox = "${{ env.BUSYBOX_TESTING_IMAGE_REF }}"
ResourceConsumer = "${{ env.RESOURCE_CONSUMER_TESTING_IMAGE_REF }}"
EOF
cat > "${{ env.CRI_TEST_IMAGES }}" << EOF
defaultTestContainerImage: ${{ env.BUSYBOX_TESTING_IMAGE_REF }}
webServerTestImage: ${{ env.WEBSERVER_TESTING_IMAGE_REF }}
EOF
- name: Get crictl tool
shell: powershell
run: |
# Get critctl tool. Used for cri-integration tests
$CRICTL_DOWNLOAD_URL="https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.21.0/crictl-v1.21.0-windows-amd64.tar.gz"
curl.exe -L $CRICTL_DOWNLOAD_URL -o c:\crictl.tar.gz
tar -xvf c:\crictl.tar.gz
mv crictl.exe "${{ github.workspace }}/bin/crictl.exe" # Move crictl somewhere in path
- run: script/setup/install-gotestsum - run: script/setup/install-gotestsum
- name: Tests - name: Tests
@ -301,6 +336,22 @@ jobs:
CGO_ENABLED: 1 CGO_ENABLED: 1
GOTESTSUM_JUNITFILE: ${{github.workspace}}/test-integration-parallel-junit.xml GOTESTSUM_JUNITFILE: ${{github.workspace}}/test-integration-parallel-junit.xml
run: mingw32-make.exe integration run: mingw32-make.exe integration
- name: CRI Integration Test
env:
TEST_IMAGE_LIST: ${{github.workspace}}/repolist.toml
run: |
make cri-integration
- name: cri-tools critest
env:
CRI_TEST_IMAGES: ${{github.workspace}}/cri-test-images.yaml
shell: powershell
run: |
Start-Process -FilePath containerd.exe -NoNewWindow -RedirectStandardError true -PassThru
get-process | sls containerd
start-sleep 5
critest.exe --runtime-endpoint=npipe://.//pipe//containerd-containerd --test-images-file='${{env.CRI_TEST_IMAGES}}' --report-dir='${{github.workspace}}/critestreport'
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
if: always() if: always()
with: with:

View File

@ -183,7 +183,6 @@ jobs:
ssh -i $HOME/.ssh/id_rsa ${{ env.SSH_OPTS }} azureuser@${{ env.VM_PUB_IP }} "sh.exe -s" <<EOF ssh -i $HOME/.ssh/id_rsa ${{ env.SSH_OPTS }} azureuser@${{ env.VM_PUB_IP }} "sh.exe -s" <<EOF
cd c:/containerd cd c:/containerd
./script/setup/install-cni-windows ./script/setup/install-cni-windows
mkdir /c/tmp
export TEST_IMAGE_LIST=c:/repolist.toml export TEST_IMAGE_LIST=c:/repolist.toml
make cri-integration | tee c:/Logs/cri-integration.log make cri-integration | tee c:/Logs/cri-integration.log
EOF EOF

View File

@ -31,7 +31,7 @@ import (
) )
func TestAdditionalGids(t *testing.T) { func TestAdditionalGids(t *testing.T) {
testPodLogDir, err := os.MkdirTemp("/tmp", "additional-gids") testPodLogDir, err := os.MkdirTemp("", "additional-gids")
require.NoError(t, err) require.NoError(t, err)
defer os.RemoveAll(testPodLogDir) defer os.RemoveAll(testPodLogDir)

View File

@ -30,7 +30,7 @@ import (
) )
func TestContainerLogWithoutTailingNewLine(t *testing.T) { func TestContainerLogWithoutTailingNewLine(t *testing.T) {
testPodLogDir, err := os.MkdirTemp("/tmp", "container-log-without-tailing-newline") testPodLogDir, err := os.MkdirTemp("", "container-log-without-tailing-newline")
require.NoError(t, err) require.NoError(t, err)
defer os.RemoveAll(testPodLogDir) defer os.RemoveAll(testPodLogDir)
@ -80,7 +80,7 @@ func TestContainerLogWithoutTailingNewLine(t *testing.T) {
} }
func TestLongContainerLog(t *testing.T) { func TestLongContainerLog(t *testing.T) {
testPodLogDir, err := os.MkdirTemp("/tmp", "long-container-log") testPodLogDir, err := os.MkdirTemp("", "long-container-log")
require.NoError(t, err) require.NoError(t, err)
defer os.RemoveAll(testPodLogDir) defer os.RemoveAll(testPodLogDir)

View File

@ -31,7 +31,7 @@ import (
) )
func TestPodDualStack(t *testing.T) { func TestPodDualStack(t *testing.T) {
testPodLogDir, err := os.MkdirTemp("/tmp", "dualstack") testPodLogDir, err := os.MkdirTemp("", "dualstack")
require.NoError(t, err) require.NoError(t, err)
defer os.RemoveAll(testPodLogDir) defer os.RemoveAll(testPodLogDir)

View File

@ -64,7 +64,7 @@ func TestPodHostname(t *testing.T) {
if test.needsHostNetwork && goruntime.GOOS == "windows" { if test.needsHostNetwork && goruntime.GOOS == "windows" {
t.Skip("Skipped on Windows.") t.Skip("Skipped on Windows.")
} }
testPodLogDir, err := os.MkdirTemp("/tmp", "hostname") testPodLogDir, err := os.MkdirTemp("", "hostname")
require.NoError(t, err) require.NoError(t, err)
defer os.RemoveAll(testPodLogDir) defer os.RemoveAll(testPodLogDir)