-
Notifications
You must be signed in to change notification settings - Fork 5
152 lines (138 loc) · 5.05 KB
/
test.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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
---
name: test
on:
push:
tags-ignore:
- "*"
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
# Install Catlin linting tool
- name: Install linting tools
run: |
set -Eeu
git clone https://github.com/tektoncd/catlin
cd catlin
make bin/catlin
sudo cp bin/catlin /usr/local/bin
catlin --help
# run Catlin linting
- name: Run Catlin linting
run: |
set -Eeu
helm template task-oc . > task-oc.yaml
cat task-oc.yaml
catlin validate task-oc.yaml || true
helm template task-tkn . > task-tkn.yaml
cat task-tkn.yaml
catlin validate task-tkn.yaml || true
test-e2e:
strategy:
fail-fast: false # Keep running if one leg fails.
matrix:
pipeline-version:
- v0.47.5
- v0.50.5
- v0.53.3
- latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
registry: registry.redhat.io
username: ${{ secrets.REGISTRY_REDHAT_USERNAME }}
password: ${{ secrets.REGISTRY_REDHAT_TOKEN }}
- uses: azure/setup-helm@v4
# instantiate a KinD (Kubernetes in Docker) cluster, installs `kubectl` and configures the
# `kubeconfig` to reach the local cluster
- uses: helm/[email protected]
with:
cluster_name: kind
wait: 120s
# installs Tekton Pipelines and `tkn` command line, including a local Container-Registry with
# settings to reach it during testing
- uses: openshift-pipelines/setup-tektoncd@v1
with:
pipeline_version: ${{ matrix.pipeline-version }}
# setting up Knative Serving
- name: setup-serverless
run: |
curl -O -L "https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64"
sudo mv cosign-linux-amd64 /usr/local/bin/cosign
sudo chmod +x /usr/local/bin/cosign
sudo apt-get install jq
curl -sSL https://github.com/knative/serving/releases/latest/download/serving-core.yaml \
| grep 'gcr.io/' | awk '{print $2}' | sort | uniq \
| xargs -n 1 \
cosign verify -o text \
--certificate-identity=signer@knative-releases.iam.gserviceaccount.com \
--certificate-oidc-issuer=https://accounts.google.com
kubectl apply -f https://github.com/knative/serving/releases/latest/download/serving-crds.yaml
kubectl apply -f https://github.com/knative/serving/releases/latest/download/serving-core.yaml
kubectl apply -f https://github.com/knative/net-kourier/releases/latest/download/kourier.yaml
kubectl patch configmap/config-network \
--namespace knative-serving \
--type merge \
--patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}'
sleep 60
#Adding roles for allowing kn-apply to create service in default namespace
cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: knative-serving-role
rules:
- apiGroups: ["serving.knative.dev"]
resources: ["services"]
verbs: ["get", "create", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: knative-serving-rolebinding
namespace: default
subjects:
- kind: ServiceAccount
name: default
namespace: default
roleRef:
kind: Role
name: knative-serving-role
apiGroup: rbac.authorization.k8s.io
EOF
kubectl get pods -n knative-serving
all_pods=$(kubectl get pods -n "knative-serving" --no-headers=true)
while read -r pod; do
pod_name=$(echo "$pod" | awk '{print $1}')
pod_status=$(echo "$pod" | awk '{print $3}')
# Check if the pod status is not "Running"
if [ "$pod_status" != "Running" ]; then
echo "Pod $pod_name is not running"
exit 1
fi
done <<< "$all_pods"
echo "All pods are running"
# running end-to-end test target
- name: test-e2e
run: |
set -Eeuo pipefail
kubectl delete secret regcred || true
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=$HOME/.docker/config.json \
--type=kubernetes.io/dockerconfigjson
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regcred"}]}'
make test-e2e