| # --------------------------------------------------------------------------- |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You 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: knative |
| |
| on: |
| pull_request: |
| branches: |
| - master |
| - "release-*" |
| paths-ignore: |
| - '**.adoc' |
| - 'KEYS' |
| - 'LICENSE' |
| - 'NOTICE' |
| push: |
| branches: |
| - master |
| - "release-*" |
| paths-ignore: |
| - '**.adoc' |
| - 'KEYS' |
| - 'LICENSE' |
| - 'NOTICE' |
| |
| jobs: |
| test: |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout code |
| uses: actions/checkout@v2 |
| - name: Cleanup |
| run: | |
| ls -lart |
| echo "Initial status:" |
| df -h |
| |
| echo "Cleaning up resources:" |
| sudo swapoff -a |
| sudo rm -f /swapfile |
| sudo apt clean |
| docker rmi $(docker image ls -aq) |
| |
| echo "Final status:" |
| df -h |
| - name: Set up JDK 11 |
| uses: joschi/setup-jdk@v2 |
| with: |
| java-version: "11" |
| - name: Set Go |
| uses: actions/setup-go@v1 |
| with: |
| go-version: 1.13.x |
| - name: Kubernetes KinD Cluster |
| uses: container-tools/kind-action@v1 |
| - name: Info |
| run: | |
| kubectl version |
| kubectl cluster-info |
| kubectl describe nodes |
| - name: Install Knative |
| run: | |
| # Prerequisites |
| sudo pip install yq |
| |
| export SERVING_VERSION=v0.16.0 |
| export EVENTING_VERSION=v0.16.2 |
| export SOURCES_VERSION=v0.16.0 |
| |
| # Serving |
| kubectl apply --filename https://github.com/knative/serving/releases/download/$SERVING_VERSION/serving-crds.yaml |
| curl -L -s https://github.com/knative/serving/releases/download/$SERVING_VERSION/serving-core.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f - |
| |
| # Kourier |
| kubectl apply --filename https://github.com/knative/net-kourier/releases/download/$SERVING_VERSION/kourier.yaml |
| kubectl patch configmap/config-network \ |
| --namespace knative-serving \ |
| --type merge \ |
| --patch '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}' |
| |
| # Eventing |
| kubectl apply --filename https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/eventing-crds.yaml |
| curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/eventing-core.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f - |
| |
| # Eventing channels |
| curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/in-memory-channel.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f - |
| |
| # Eventing broker |
| curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/mt-channel-broker.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f - |
| |
| # Eventing sugar controller for injection |
| kubectl apply -f https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/eventing-sugar-controller.yaml |
| |
| # Camel Sources |
| kubectl apply --filename https://github.com/knative/eventing-contrib/releases/download/$SOURCES_VERSION/camel.yaml |
| |
| # Wait for installation completed |
| while [ "$(kubectl get pod -n kourier-system --no-headers | wc -l)" == "0" ]; do echo "Waiting for pods to start in kourier-system"; kubectl get pod -n kourier-system; sleep 5; done |
| while [ "$(kubectl get pod -n kourier-system -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in kourier-system"; kubectl get pod -n kourier-system; sleep 5; done |
| while [ "$(kubectl get pod -n knative-serving -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-serving"; kubectl get pod -n knative-serving; sleep 5; done |
| while [ "$(kubectl get pod -n knative-eventing -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-eventing"; kubectl get pod -n knative-eventing; sleep 5; done |
| while [ "$(kubectl get pod -n knative-sources -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-sources"; kubectl get pod -n knative-sources; sleep 5; done |
| |
| - name: Build Operator |
| run: | |
| echo "Build project" |
| make build-kamel |
| echo "Adding maven artifacts to the image context" |
| make PACKAGE_ARTIFACTS_STRATEGY=download package-artifacts |
| echo "Copying binary file to docker dir" |
| mkdir -p ./build/_output/bin |
| cp ./kamel ./build/_output/bin/ |
| echo "Building the images" |
| export LOCAL_IMAGE=$KIND_REGISTRY/apache/camel-k:$(make version) |
| docker build -t "${LOCAL_IMAGE}" -f build/Dockerfile . |
| docker push ${LOCAL_IMAGE} |
| |
| sudo mv ./kamel /usr/local/bin |
| - name: Run IT |
| run: | |
| echo "Installing camel k cluster resources" |
| kamel install --cluster-setup |
| |
| # Configure install options |
| export KAMEL_INSTALL_BUILD_PUBLISH_STRATEGY=Spectrum |
| export KAMEL_INSTALL_MAVEN_REPOSITORIES=$(make get-staging-repo) |
| export KAMEL_INSTALL_REGISTRY=$KIND_REGISTRY |
| export KAMEL_INSTALL_REGISTRY_INSECURE=true |
| export KAMEL_INSTALL_OPERATOR_IMAGE=$KIND_REGISTRY/apache/camel-k:$(make version) |
| |
| # Configure test options |
| export CAMEL_K_TEST_IMAGE_NAME=$KIND_REGISTRY/apache/camel-k |
| export CAMEL_K_TEST_IMAGE_VERSION=$(make version) |
| |
| # Then run integration tests |
| make test-knative |
| |
| yaks: |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout code |
| uses: actions/checkout@v2 |
| - name: Cleanup |
| run: | |
| ls -lart |
| echo "Initial status:" |
| df -h |
| |
| echo "Cleaning up resources:" |
| sudo swapoff -a |
| sudo rm -f /swapfile |
| sudo apt clean |
| docker rmi $(docker image ls -aq) |
| |
| echo "Final status:" |
| df -h |
| - name: Set up JDK 11 |
| uses: joschi/setup-jdk@v2 |
| with: |
| java-version: "11" |
| - name: Set Go |
| uses: actions/setup-go@v1 |
| with: |
| go-version: 1.13.x |
| - name: Get YAKS |
| run: | |
| export YAKS_VERSION=0.1.0 |
| curl -L https://github.com/citrusframework/yaks/releases/download/v${YAKS_VERSION}/yaks-${YAKS_VERSION}-linux-64bit.tar.gz -o yaks.tar.gz |
| tar -zxf yaks.tar.gz |
| sudo mv yaks /usr/local/bin/ |
| - name: Kubernetes KinD Cluster |
| uses: container-tools/kind-action@v1 |
| - name: Info |
| run: | |
| kubectl version |
| kubectl cluster-info |
| kubectl describe nodes |
| - name: Install YAKS |
| run: | |
| yaks install --cluster-setup |
| - name: Install Knative |
| run: | |
| # Prerequisites |
| sudo pip install yq |
| |
| export SERVING_VERSION=v0.16.0 |
| export EVENTING_VERSION=v0.16.2 |
| export SOURCES_VERSION=v0.16.0 |
| |
| # Serving |
| kubectl apply --filename https://github.com/knative/serving/releases/download/$SERVING_VERSION/serving-crds.yaml |
| curl -L -s https://github.com/knative/serving/releases/download/$SERVING_VERSION/serving-core.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f - |
| |
| # Kourier |
| kubectl apply --filename https://github.com/knative/net-kourier/releases/download/$SERVING_VERSION/kourier.yaml |
| kubectl patch configmap/config-network \ |
| --namespace knative-serving \ |
| --type merge \ |
| --patch '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}' |
| |
| # Eventing |
| kubectl apply --filename https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/eventing-crds.yaml |
| curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/eventing-core.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f - |
| |
| # Eventing channels |
| curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/in-memory-channel.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f - |
| |
| # Eventing broker |
| curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/mt-channel-broker.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f - |
| |
| # Eventing sugar controller for injection |
| kubectl apply -f https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/eventing-sugar-controller.yaml |
| |
| # Camel Sources |
| kubectl apply --filename https://github.com/knative/eventing-contrib/releases/download/$SOURCES_VERSION/camel.yaml |
| |
| # Wait for installation completed |
| while [ "$(kubectl get pod -n kourier-system --no-headers | wc -l)" == "0" ]; do echo "Waiting for pods to start in kourier-system"; kubectl get pod -n kourier-system; sleep 5; done |
| while [ "$(kubectl get pod -n kourier-system -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in kourier-system"; kubectl get pod -n kourier-system; sleep 5; done |
| while [ "$(kubectl get pod -n knative-serving -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-serving"; kubectl get pod -n knative-serving; sleep 5; done |
| while [ "$(kubectl get pod -n knative-eventing -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-eventing"; kubectl get pod -n knative-eventing; sleep 5; done |
| while [ "$(kubectl get pod -n knative-sources -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-sources"; kubectl get pod -n knative-sources; sleep 5; done |
| |
| - name: Build Operator |
| run: | |
| echo "Build project" |
| make build-kamel |
| echo "Adding maven artifacts to the image context" |
| make PACKAGE_ARTIFACTS_STRATEGY=download package-artifacts |
| echo "Copying binary file to docker dir" |
| mkdir -p ./build/_output/bin |
| cp ./kamel ./build/_output/bin/ |
| echo "Building the images" |
| export LOCAL_IMAGE=$KIND_REGISTRY/apache/camel-k:$(make version) |
| docker build -t "${LOCAL_IMAGE}" -f build/Dockerfile . |
| docker push ${LOCAL_IMAGE} |
| |
| sudo mv ./kamel /usr/local/bin |
| - name: Run IT |
| run: | |
| echo "Installing camel k cluster resources" |
| kamel install --cluster-setup |
| |
| # Configure install options |
| export KAMEL_INSTALL_BUILD_PUBLISH_STRATEGY=Spectrum |
| export KAMEL_INSTALL_MAVEN_REPOSITORIES=$(make get-staging-repo) |
| export KAMEL_INSTALL_REGISTRY=$KIND_REGISTRY |
| export KAMEL_INSTALL_REGISTRY_INSECURE=true |
| export KAMEL_INSTALL_OPERATOR_IMAGE=$KIND_REGISTRY/apache/camel-k:$(make version) |
| |
| # Configure test options |
| export CAMEL_K_TEST_IMAGE_NAME=$KIND_REGISTRY/apache/camel-k |
| export CAMEL_K_TEST_IMAGE_VERSION=$(make version) |
| |
| # Install Yaks globally |
| yaks install |
| |
| # Then run integration tests |
| yaks test e2e/yaks/common |