diff --git a/.github/workflows/porch-e2e.yaml b/.github/workflows/porch-e2e.yaml new file mode 100644 index 00000000..b0ba55f0 --- /dev/null +++ b/.github/workflows/porch-e2e.yaml @@ -0,0 +1,71 @@ +# Copyright 2024 The Nephio Authors +# +# 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: Porch End-to-End Tests +on: + push: + paths-ignore: + - "docs/**" + - "release/**" + - "deployments/**" + pull_request: + paths-ignore: + - "docs/**" + - "release/**" + - "deployments/**" + +jobs: + tests: + name: Porch End-to-End Tests + runs-on: ubuntu-latest + + steps: + - name: Free up disk space + run: sudo rm -rf /usr/share/dotnet && sudo rm -rf /opt/ghc && sudo rm -rf "/usr/local/share/boost" && sudo rm -rf "$AGENT_TOOLSDIRECTORY" + - name: Checkout Porch + uses: actions/checkout@v3 + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: '>=1.21.5' + - name: Setup kubectl + uses: azure/setup-kubectl@v3 + - name: Install kpt + uses: jaxxstorm/action-install-gh-release@v1.10.0 + with: + repo: kptdev/kpt + tag: v1.0.0-beta.49 + rename-to: kpt + chmod: 0755 + - name: Create k8s Kind Cluster + uses: helm/kind-action@v1 + with: + cluster_name: kind + - name: Build Images and Deploy porch kpt pkg + run: IMAGE_REPO=porch-kind IMAGE_TAG=${GITHUB_SHA:0:8} make run-in-kind-kpt + - name: e2e test + run: E2E=1 go test -v -timeout 20m ${GITHUB_WORKSPACE}/test/e2e + # - name: Porch CLI e2e test + # run: make test-porch + - name: Export porch server logs + if: always() + run: | + name=$(kubectl -n porch-system get pod -l app=porch-server -o custom-columns=NAME:.metadata.name --no-headers=true) + kubectl -n porch-system logs $name > porch-e2e-server.log + - name: Archive logs + if: always() + uses: actions/upload-artifact@v3 + with: + name: porch-e2e-server.log + path: porch-e2e-server.log diff --git a/Makefile b/Makefile index 3723f24b..344b1fd8 100644 --- a/Makefile +++ b/Makefile @@ -309,6 +309,7 @@ deployment-config-kpt: --controllers-image "$(IMAGE_REPO)/$(PORCH_CONTROLLERS_IMAGE):$(IMAGE_TAG)" \ --function-image "$(IMAGE_REPO)/$(PORCH_FUNCTION_RUNNER_IMAGE):$(IMAGE_TAG)" \ --wrapper-server-image "$(IMAGE_REPO)/$(PORCH_WRAPPER_SERVER_IMAGE):$(IMAGE_TAG)" \ + --test-git-server-image "$(IMAGE_REPO)/$(TEST_GIT_SERVER_IMAGE):${IMAGE_TAG}" \ --enabled-reconcilers "$(ENABLED_RECONCILERS)" \ --kind-context "$(KIND_CONTEXT_NAME)" diff --git a/scripts/create-deployment-kpt.sh b/scripts/create-deployment-kpt.sh index 7561d0d4..31fbeaeb 100755 --- a/scripts/create-deployment-kpt.sh +++ b/scripts/create-deployment-kpt.sh @@ -28,6 +28,7 @@ Supported Flags: --controllers-image IMAGE ... address of the Porch controllers image --function-image IMAGE ... address of the Porch function runtime image --wrapper-server-image IMAGE ... address of the Porch function wrapper server image + --test-git-server-image ... address of the test git server image --enabled-reconcilers RECONCILERS ... comma-separated list of reconcilers that should be enabled in porch controller EOF exit 1 @@ -67,6 +68,11 @@ while [[ $# -gt 0 ]]; do shift 2 ;; + --test-git-server-image) + TEST_GIT_SERVER_IMAGE="${2}" + shift 2 + ;; + --enabled-reconcilers) ENABLED_RECONCILERS="${2}" shift 2 @@ -116,6 +122,7 @@ function load-custom-images { kind load docker-image ${CONTROLLERS_IMAGE} -n ${KIND_CONTEXT_NAME} kind load docker-image ${FUNCTION_IMAGE} -n ${KIND_CONTEXT_NAME} kind load docker-image ${WRAPPER_SERVER_IMAGE} -n ${KIND_CONTEXT_NAME} + kind load docker-image ${TEST_GIT_SERVER_IMAGE} -n ${KIND_CONTEXT_NAME} } function main() { @@ -137,19 +144,19 @@ function main() { done customize-pkg-images \ - "porch-server:latest" \ + "porch-server:v2.0.0" \ "${SERVER_IMAGE}" customize-pkg-images \ - "porch-controllers:latest" \ + "porch-controllers:v2.0.0" \ "${CONTROLLERS_IMAGE}" customize-pkg-images \ - "porch-function-runner:latest" \ + "porch-function-runner:v2.0.0" \ "${FUNCTION_IMAGE}" customize-pkg-images \ - "porch-wrapper-server:latest" \ + "porch-wrapper-server:v2.0.0" \ "${WRAPPER_SERVER_IMAGE}" deploy-porch-dev-pkg