[main] Upgrade to latest dependencies #4894
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: KinD e2e tests | |
on: | |
push: | |
branches: [ 'main', 'release-*' ] | |
pull_request: | |
branches: [ 'main', 'release-*' ] | |
jobs: | |
ko-resolve: | |
name: e2e tests | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false # Keep running if one leg fails. | |
matrix: | |
k8s-version: | |
- v1.29.2 | |
eventing-version: | |
- knative-v1.15.0 | |
# Map between K8s and KinD versions. | |
# This is attempting to make it a bit clearer what's being tested. | |
# See: https://github.com/kubernetes-sigs/kind/releases/tag/v0.9.0 | |
include: | |
- k8s-version: v1.29.2 | |
kind-version: v0.22.0 | |
kind-image-sha: sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245 | |
env: | |
KO_DOCKER_REPO: kind.local | |
SYSTEM_NAMESPACE: knative-eventing | |
KIND_CLUSTER_NAME: kind | |
steps: | |
- name: Defaults | |
run: | | |
if [[ "${{ secrets.SLACK_WEBHOOK }}" != "" ]]; then | |
echo "SLACK_WEBHOOK=exists" >> $GITHUB_ENV | |
fi | |
- name: Set up Go | |
uses: knative/actions/setup-go@main | |
- name: Install ko | |
uses: ko-build/setup-ko@v0.7 | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Install KinD | |
env: | |
KIND_VERSION: ${{ matrix.kind-version }} | |
run: | | |
set -x | |
curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/${{ matrix.kind-version }}/kind-$(uname)-amd64 | |
chmod +x ./kind | |
sudo mv kind /usr/local/bin | |
- name: Create KinD Cluster | |
run: | | |
set -x | |
# KinD configuration. | |
cat > kind.yaml <<EOF | |
apiVersion: kind.x-k8s.io/v1alpha4 | |
kind: Cluster | |
# This is needed in order to support projected volumes with service account tokens. | |
# See: https://kubernetes.slack.com/archives/CEKK1KTN2/p1600268272383600 | |
kubeadmConfigPatches: | |
- | | |
apiVersion: kubeadm.k8s.io/v1beta2 | |
kind: ClusterConfiguration | |
metadata: | |
name: config | |
apiServer: | |
extraArgs: | |
"service-account-issuer": "kubernetes.default.svc" | |
"service-account-signing-key-file": "/etc/kubernetes/pki/sa.key" | |
nodes: | |
- role: control-plane | |
image: kindest/node:${{ matrix.k8s-version }}@${{ matrix.kind-image-sha }} | |
- role: worker | |
image: kindest/node:${{ matrix.k8s-version }}@${{ matrix.kind-image-sha }} | |
EOF | |
# Create a cluster! | |
kind create cluster --config kind.yaml | |
- name: Install nats | |
run: | | |
set -x | |
kubectl create namespace nats | |
kubectl apply -n nats-io -f ./config/broker/natsjsm.yaml | |
# Create a ConfigMap that we use to instruct Broker to create nats channels. | |
kubectl create namespace knative-eventing | |
kubectl apply -n knative-eventing -f ./config/broker/config-br-default-channel-jsm.yaml | |
kubectl apply -n knative-eventing -f ./config/broker/config-nats.yaml | |
- name: Install Knative Eventing | |
run: | | |
set -x | |
kubectl apply --filename https://github.com/knative/eventing/releases/download/${{ matrix.eventing-version }}/eventing-crds.yaml | |
sleep 2 # Wait for the CRDs to be reconciled. | |
kubectl apply --filename https://github.com/knative/eventing/releases/download/${{ matrix.eventing-version }}/eventing-core.yaml | |
kubectl apply --filename https://github.com/knative/eventing/releases/download/${{ matrix.eventing-version }}/mt-channel-broker.yaml | |
- name: Install | |
run: | | |
set -x | |
# TODO: this should use the release script and then apply the newly created release yaml in the future. | |
# Install the nats channel | |
ko apply -f ./config/webhook | |
ko apply -f ./config/jetstream | |
- name: Wait for Ready | |
run: | | |
set -e | |
source ./vendor/knative.dev/hack/infra-library.sh | |
wait_until_pods_running ${SYSTEM_NAMESPACE} | |
# For debugging. | |
kubectl get pods --all-namespaces | |
- name: Run e2e Tests | |
run: | | |
set -x | |
# Run the tests tagged as e2e on the KinD cluster. | |
go test -v -race -count=1 -timeout=15m -tags=e2e ./test/e2e/... | |
- name: Gather Failure Data | |
if: ${{ failure() }} | |
run: | | |
set -x | |
echo "===================== Brokers ==============================" | |
kubectl get broker --all-namespaces=true -oyaml | |
echo "===================== Channels =============================" | |
kubectl get channel --all-namespaces=true -oyaml | |
echo "===================== Triggers =============================" | |
kubectl get trigger --all-namespaces=true -oyaml | |
echo "===================== K8s Events ===========================" | |
kubectl get events --all-namespaces=true -oyaml | |
echo "===================== Pod Logs =============================" | |
namespace=knative-eventing | |
for pod in $(kubectl get pod -n $namespace | awk '{print $1}'); do | |
for container in $(kubectl get pod "${pod}" -n $namespace -ojsonpath='{.spec.containers[*].name}'); do | |
echo "Namespace, Pod, Container: ${namespace}, ${pod}, ${container}" | |
kubectl logs -n $namespace "${pod}" -c "${container}" || true | |
echo "----------------------------------------------------------" | |
echo "Namespace, Pod, Container (Previous instance): ${namespace}, ${pod}, ${container}" | |
kubectl logs -p -n $namespace "${pod}" -c "${container}" || true | |
echo "============================================================" | |
done | |
done | |
- name: Post failure notice to Slack | |
# Note: using env.SLACK_WEBHOOK here because secrets are not allowed in the if block. | |
if: ${{ env.SLACK_WEBHOOK != '' && failure() && github.event_name != 'pull_request' }} | |
uses: rtCamp/action-slack-notify@v2.1.0 | |
env: | |
SLACK_ICON: http://github.com/knative.png?size=48 | |
SLACK_USERNAME: github-actions | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
SLACK_CHANNEL: 'eventing-delivery' | |
MSG_MINIMAL: 'true' | |
SLACK_TITLE: Periodic e2e for Nats on kind on (${{ matrix.k8s-version }}, ${{ matrix.eventing-version }}) failed. | |
SLACK_MESSAGE: | | |
For detailed logs: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |