Skip to content

Commit 8909392

Browse files
committed
fix: fix installing with ./hack/dev/kind.sh
Updated CI workflow and associated scripts to enhance the end-to-end testing setup. This involved modifying environment variables for controller URLs, docker repositories, and kubeconfig paths. Additionally, the gosmee replay URLs were adjusted to use HTTP instead of HTTPS, and specific Gitea-related gosmee URL generation was refactored to utilize a dynamic approach. The scripts also saw updates for creating GitHub app secrets and controllers on GHE, along with changes to how Gitea tests are segmented. Minor adjustments were made to Makefile and the collect_logs function to reflect these changes. Fix installing on latest kind for local registry. Signed-off-by: Chmouel Boudjnah <chmouel@redhat.com>
1 parent 220c89d commit 8909392

File tree

4 files changed

+101
-95
lines changed

4 files changed

+101
-95
lines changed

.github/workflows/e2e.yaml

Lines changed: 78 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ jobs:
5353
]
5454

5555
env:
56-
CONTROLLER_DOMAIN_URL: paac.paac-127-0-0-1.nip.io
56+
CONTROLLER_DOMAIN_URL: controller.paac-127-0-0-1.nip.io
5757
KOCACHE: /tmp/ko-cache
58-
KO_DOCKER_REPO: registry.paac-127-0-0-1.nip.io
59-
KUBECONFIG: /home/runner/.kube/config.local
58+
KO_DOCKER_REPO: localhost:5000
59+
KUBECONFIG: /home/runner/.kube/config.kind
6060
TARGET_TEAM_SLUGS: "pipeline-as-code,pipeline-as-code-contributors"
6161
TEST_BITBUCKET_CLOUD_API_URL: https://api.bitbucket.org/2.0
6262
TEST_BITBUCKET_CLOUD_E2E_REPOSITORY: cboudjna/pac-e2e-tests
@@ -66,21 +66,20 @@ jobs:
6666
TEST_BITBUCKET_SERVER_TOKEN: ${{ secrets.BITBUCKET_SERVER_TOKEN }}
6767
TEST_BITBUCKET_SERVER_USER: pipelines
6868
TEST_BITBUCKET_SERVER_WEBHOOK_SECRET: ${{ secrets.BITBUCKET_SERVER_WEBHOOK_SECRET }}
69-
TEST_EL_URL: https://paac.paac-127-0-0-1.nip.io
69+
TEST_EL_URL: http://controller.paac-127-0-0-1.nip.io
7070
TEST_EL_WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }}
7171
TEST_GITEA_API_URL: http://localhost:3000
72-
TEST_GITEA_INTERNAL_URL: http://forgejo-http.forgejo.svc.cluster.local:3000
72+
TEST_GITEA_INTERNAL_URL: http://gitea.gitea:3000
7373
TEST_GITEA_PASSWORD: pac
7474
TEST_GITEA_REPO_OWNER: pac/pac
75-
TEST_GITEA_SMEEURL: ${{ secrets.TEST_GITEA_SMEEURL }}
7675
TEST_GITEA_USERNAME: pac
7776
TEST_GITHUB_API_URL: api.github.com
7877
TEST_GITHUB_PRIVATE_TASK_NAME: task-remote
7978
TEST_GITHUB_PRIVATE_TASK_URL: https://github.com/openshift-pipelines/pipelines-as-code-e2e-tests-private/blob/main/remote_task.yaml
8079
TEST_GITHUB_REPO_OWNER_GITHUBAPP: openshift-pipelines/pipelines-as-code-e2e-tests
8180
TEST_GITHUB_REPO_OWNER_WEBHOOK: openshift-pipelines/pipelines-as-code-e2e-tests-webhook
8281
TEST_GITHUB_SECOND_API_URL: ghe.pipelinesascode.com
83-
TEST_GITHUB_SECOND_EL_URL: https://ghe.paac-127-0-0-1.nip.io
82+
TEST_GITHUB_SECOND_EL_URL: http://ghe.paac-127-0-0-1.nip.io
8483
TEST_GITHUB_SECOND_REPO_INSTALLATION_ID: 1
8584
TEST_GITHUB_SECOND_REPO_OWNER_GITHUBAPP: pipelines-as-code/e2e
8685
TEST_GITLAB_API_URL: https://gitlab.com
@@ -291,64 +290,95 @@ jobs:
291290
with:
292291
repo: chmouel/snazy
293292

294-
- name: Install minica
295-
run: |
296-
go install github.com/jsha/minica@latest
297-
echo "$HOME/go/bin" >> "$GITHUB_PATH"
298-
299-
- name: Clone startpaac
300-
uses: actions/checkout@v6
301-
with:
302-
repository: openshift-pipelines/startpaac
303-
path: startpaac
304-
305293
- name: Run gosmee for main controller
306294
run: |
307-
nohup gosmee client --saveDir /tmp/gosmee-replay ${{ secrets.PYSMEE_URL }} "https://${CONTROLLER_DOMAIN_URL}" > /tmp/gosmee-main.log 2>&1 &
295+
nohup gosmee client --saveDir /tmp/gosmee-replay ${{ secrets.PYSMEE_URL }} "http://${CONTROLLER_DOMAIN_URL}" > /tmp/gosmee-main.log 2>&1 &
308296
309-
- name: Run gosmee for main controller (Gitea)
310-
if: startsWith(matrix.provider, 'gitea') || matrix.provider == 'concurrency'
311-
run: |
312-
nohup gosmee client --saveDir /tmp/gosmee-replay ${{ secrets.TEST_GITEA_SMEEURL }} "https://${CONTROLLER_DOMAIN_URL}" >> /tmp/gosmee-main.log 2>&1 &
297+
# - name: Run gosmee for main controller (Gitea)
298+
# if: startsWith(matrix.provider, 'gitea') || matrix.provider == 'concurrency'
299+
# run: |
300+
# nohup gosmee client --saveDir /tmp/gosmee-replay ${{ secrets.TEST_GITEA_SMEEURL }} "http://${CONTROLLER_DOMAIN_URL}" >> /tmp/gosmee-main.log 2>&1 &
313301

314302
- name: Run gosmee for second controller (GHE)
315303
if: matrix.provider == 'github_second_controller' || matrix.provider == 'concurrency'
316304
run: |
317-
nohup gosmee client --saveDir /tmp/gosmee-replay-ghe ${{ secrets.TEST_GITHUB_SECOND_SMEE_URL }} "https://ghe.paac-127-0-0-1.nip.io" > /tmp/gosmee-ghe.log 2>&1 &
305+
nohup gosmee client --saveDir /tmp/gosmee-replay-ghe ${{ secrets.TEST_GITHUB_SECOND_SMEE_URL }} "http://ghe.paac-127-0-0-1.nip.io" > /tmp/gosmee-ghe.log 2>&1 &
306+
307+
- name: Generate unique gosmee URL for Gitea tests
308+
if: startsWith(matrix.provider, 'gitea') || matrix.provider == 'concurrency'
309+
id: gosmee-url
310+
run: |
311+
SMEE_URL=$(curl -s https://hook.pipelinesascode.com -o /dev/null -w '%{redirect_url}')
312+
echo "Generated unique smee URL: ${SMEE_URL}"
313+
echo "url=${SMEE_URL}" >> "$GITHUB_OUTPUT"
314+
echo "TEST_GITEA_SMEEURL=${SMEE_URL}" >> "$GITHUB_ENV"
318315
319316
- name: Setup tmate session
320317
uses: mxschmitt/action-tmate@v3
318+
# add all environment so we can debug easily
319+
env:
320+
CONTROLLER_DOMAIN_URL: controller.paac-127-0-0-1.nip.io
321+
KOCACHE: /tmp/ko-cache
322+
KO_DOCKER_REPO: localhost:5000
323+
KUBECONFIG: /home/runner/.kube/config.kind
324+
TARGET_TEAM_SLUGS: "pipeline-as-code,pipeline-as-code-contributors"
325+
TEST_BITBUCKET_CLOUD_API_URL: https://api.bitbucket.org/2.0
326+
TEST_BITBUCKET_CLOUD_E2E_REPOSITORY: cboudjna/pac-e2e-tests
327+
TEST_BITBUCKET_CLOUD_USER: cboudjna
328+
TEST_BITBUCKET_SERVER_API_URL: ${{ secrets.BITBUCKET_SERVER_API_URL }}
329+
TEST_BITBUCKET_SERVER_E2E_REPOSITORY: PAC/pac-e2e-tests
330+
TEST_BITBUCKET_SERVER_TOKEN: ${{ secrets.BITBUCKET_SERVER_TOKEN }}
331+
TEST_BITBUCKET_SERVER_USER: pipelines
332+
TEST_BITBUCKET_SERVER_WEBHOOK_SECRET: ${{ secrets.BITBUCKET_SERVER_WEBHOOK_SECRET }}
333+
TEST_EL_URL: http://controller.paac-127-0-0-1.nip.io
334+
TEST_EL_WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }}
335+
TEST_GITEA_API_URL: http://localhost:3000
336+
TEST_GITEA_PASSWORD: pac
337+
TEST_GITEA_REPO_OWNER: pac/pac
338+
TEST_GITEA_USERNAME: pac
339+
TEST_GITHUB_API_URL: api.github.com
340+
TEST_GITHUB_PRIVATE_TASK_NAME: task-remote
341+
TEST_GITHUB_PRIVATE_TASK_URL: https://github.com/openshift-pipelines/pipelines-as-code-e2e-tests-private/blob/main/remote_task.yaml
342+
TEST_GITHUB_REPO_OWNER_GITHUBAPP: openshift-pipelines/pipelines-as-code-e2e-tests
343+
TEST_GITHUB_REPO_OWNER_WEBHOOK: openshift-pipelines/pipelines-as-code-e2e-tests-webhook
344+
TEST_GITHUB_SECOND_API_URL: ghe.pipelinesascode.com
345+
TEST_GITHUB_SECOND_EL_URL: http://ghe.paac-127-0-0-1.nip.io
346+
TEST_GITHUB_SECOND_REPO_INSTALLATION_ID: 1
347+
TEST_GITHUB_SECOND_REPO_OWNER_GITHUBAPP: pipelines-as-code/e2e
348+
TEST_GITLAB_API_URL: https://gitlab.com
349+
TEST_GITLAB_PROJECT_ID: ${{ vars.TEST_GITLAB_PROJECT_ID }}
350+
TEST_BITBUCKET_CLOUD_TOKEN: ${{ secrets.BITBUCKET_CLOUD_TOKEN }}
351+
TEST_GITHUB_REPO_INSTALLATION_ID: ${{ vars.INSTALLATION_ID }}
352+
TEST_GITHUB_TOKEN: ${{ secrets.GH_APPS_TOKEN }}
353+
TEST_GITHUB_SECOND_TOKEN: ${{ secrets.TEST_GITHUB_SECOND_TOKEN }}
354+
TEST_GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }}
355+
TEST_PROVIDER: ${{ matrix.provider }}
321356
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }}
322357
with:
323358
detached: true
324359
limit-access-to-actor: true
325360

326-
- name: Start installing cluster with startpaac
361+
- name: Start installing cluster
362+
run: |
363+
export PAC_DIR=${PWD}
364+
bash -x ./hack/dev/kind/install.sh
365+
366+
- name: Create PAC github-app-secret
327367
env:
328-
PAC_DIR: ${{ github.workspace }}
329-
PAAC_DOMAIN: paac-127-0-0-1.nip.io
330-
TEST_GITEA_SMEEURL: ${{ secrets.TEST_GITEA_SMEEURL }}
368+
PAC_GITHUB_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
369+
PAC_GITHUB_APPLICATION_ID: ${{ vars.APPLICATION_ID }}
370+
PAC_WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }}
331371
run: |
332-
# Create real secrets for startpaac (not dummy)
333-
mkdir -p ~/secrets
334-
echo "${{ vars.APPLICATION_ID }}" > ~/secrets/github-application-id
335-
echo "${{ secrets.APP_PRIVATE_KEY }}" > ~/secrets/github-private-key
336-
echo "${{ secrets.WEBHOOK_SECRET }}" > ~/secrets/webhook.secret
337-
echo "${{ secrets.PYSMEE_URL }}" > ~/secrets/smee
338-
339-
# Create second controller secrets
340-
mkdir -p ~/secrets-second
341-
echo "${{ vars.TEST_GITHUB_SECOND_APPLICATION_ID }}" > ~/secrets-second/github-application-id
342-
echo "${{ secrets.TEST_GITHUB_SECOND_PRIVATE_KEY }}" > ~/secrets-second/github-private-key
343-
echo "${{ secrets.TEST_GITHUB_SECOND_WEBHOOK_SECRET }}" > ~/secrets-second/webhook.secret
344-
echo "${{ secrets.TEST_GITHUB_SECOND_SMEE_URL }}" > ~/secrets-second/smee
345-
346-
export PAC_SECRET_FOLDER=~/secrets
347-
export PAC_SECOND_SECRET_FOLDER=~/secrets-second
348-
export TARGET_HOST=local
349-
350-
cd startpaac
351-
./startpaac --ci -a
372+
./hack/gh-workflow-ci.sh create_pac_github_app_secret
373+
374+
- name: Create second Github APP Controller on GHE
375+
env:
376+
TEST_GITHUB_SECOND_SMEE_URL: ${{ secrets.TEST_GITHUB_SECOND_SMEE_URL }}
377+
TEST_GITHUB_SECOND_PRIVATE_KEY: ${{ secrets.TEST_GITHUB_SECOND_PRIVATE_KEY }}
378+
TEST_GITHUB_SECOND_WEBHOOK_SECRET: ${{ secrets.TEST_GITHUB_SECOND_WEBHOOK_SECRET }}
379+
TEST_GITHUB_SECOND_APPLICATION_ID: ${{ vars.TEST_GITHUB_SECOND_APPLICATION_ID }}
380+
run: |
381+
./hack/gh-workflow-ci.sh create_second_github_app_controller_on_ghe
352382
353383
- name: Enable debug logging for e2e
354384
run: |
@@ -360,29 +390,6 @@ jobs:
360390
kubectl -n pipelines-as-code rollout status deployment/pipelines-as-code-$name --timeout=120s
361391
done
362392
363-
- name: Install minica CA certificate to system trust store
364-
run: |
365-
set -x
366-
echo "=== Installing minica CA certificate to system trust store ==="
367-
if [ -f /tmp/certs/minica.pem ]; then
368-
sudo mkdir -p /usr/local/share/ca-certificates/
369-
sudo cp /tmp/certs/minica.pem /usr/local/share/ca-certificates/minica.crt
370-
sudo update-ca-certificates
371-
echo "✓ CA certificate installed to system trust store"
372-
373-
# Verify installation
374-
ls -la /usr/local/share/ca-certificates/minica.crt
375-
echo "System will now trust HTTPS connections to *.127-0-0-1.nip.io domains"
376-
else
377-
echo "✗ ERROR: /tmp/certs/minica.pem not found"
378-
echo "startpaac should have created this file"
379-
exit 1
380-
fi
381-
382-
- name: Configure git to skip TLS verification
383-
run: |
384-
git config --global http.sslVerify false
385-
386393
# Adjusted step-level conditions based on the new job-level logic
387394
- name: Run E2E Tests
388395
# This step runs for schedule, PR target (if job started), or workflow_dispatch (if job started)
@@ -392,7 +399,6 @@ jobs:
392399
TEST_PROVIDER: ${{ matrix.provider }}
393400
TEST_BITBUCKET_CLOUD_TOKEN: ${{ secrets.BITBUCKET_CLOUD_TOKEN }}
394401
TEST_EL_WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }}
395-
TEST_GITEA_SMEEURL: ${{ secrets.TEST_GITEA_SMEEURL }}
396402
TEST_GITHUB_REPO_INSTALLATION_ID: ${{ vars.INSTALLATION_ID }}
397403
TEST_GITHUB_TOKEN: ${{ secrets.GH_APPS_TOKEN }}
398404
TEST_GITHUB_SECOND_TOKEN: ${{ secrets.TEST_GITHUB_SECOND_TOKEN }}
@@ -411,7 +417,6 @@ jobs:
411417
TEST_PROVIDER: ${{ matrix.provider }}
412418
TEST_BITBUCKET_CLOUD_TOKEN: ${{ secrets.BITBUCKET_CLOUD_TOKEN }}
413419
TEST_EL_WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }}
414-
TEST_GITEA_SMEEURL: ${{ secrets.TEST_GITEA_SMEEURL }}
415420
TEST_GITHUB_REPO_INSTALLATION_ID: ${{ vars.INSTALLATION_ID }}
416421
TEST_GITHUB_TOKEN: ${{ secrets.GH_APPS_TOKEN }}
417422
TEST_GITHUB_SECOND_TOKEN: ${{ secrets.TEST_GITHUB_SECOND_TOKEN }}
@@ -425,7 +430,6 @@ jobs:
425430
- name: Collect logs
426431
if: ${{ always() }}
427432
env:
428-
TEST_GITEA_SMEEURL: ${{ secrets.TEST_GITEA_SMEEURL }}
429433
TEST_GITHUB_SECOND_SMEE_URL: ${{ secrets.TEST_GITHUB_SECOND_SMEE_URL }}
430434
run: |
431435
./hack/gh-workflow-ci.sh collect_logs

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ test-e2e-cleanup: ## cleanup test e2e namespace/pr left open
7272
@./hack/dev/e2e-tests-cleanup.sh
7373

7474
.PHONY: test-e2e
75-
test-e2e: test-e2e-cleanup ## run e2e tests
75+
test-e2e: ## run e2e tests
7676
env GODEBUG=asynctimerchan=1 \
7777
$(GO) test $(DEFAULT_GO_TEST_FLAGS) $(GO_TEST_FLAGS) -timeout $(TIMEOUT_E2E) -failfast -count=1 -tags=e2e ./test
7878

hack/dev/kind/install.sh

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,23 @@ function reinstall_kind() {
8484
cat <<EOF >>${TMPD}/kconfig.yaml
8585
containerdConfigPatches:
8686
- |-
87-
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:${REG_PORT}"]
88-
endpoint = ["http://${REG_NAME}:5000"]
87+
[plugins."io.containerd.grpc.v1.cri".registry]
88+
config_path = "/etc/containerd/certs.d"
8989
EOF
9090

9191
${SUDO} ${kind} create cluster --name ${KIND_CLUSTER_NAME} --config ${TMPD}/kconfig.yaml
9292
mkdir -p $(dirname ${KUBECONFIG})
9393
${SUDO} ${kind} --name ${KIND_CLUSTER_NAME} get kubeconfig >${KUBECONFIG}
9494

95+
# Configure registry on each node
96+
REGISTRY_DIR="/etc/containerd/certs.d/localhost:${REG_PORT}"
97+
for node in $(${SUDO} ${kind} get nodes --name ${KIND_CLUSTER_NAME}); do
98+
docker exec "${node}" mkdir -p "${REGISTRY_DIR}"
99+
cat <<EOF | docker exec -i "${node}" cp /dev/stdin "${REGISTRY_DIR}/hosts.toml"
100+
[host."http://${REG_NAME}:5000"]
101+
EOF
102+
done
103+
95104
docker network connect "kind" "${REG_NAME}" 2>/dev/null || true
96105
cat <<EOF | kubectl apply -f -
97106
apiVersion: v1

hack/gh-workflow-ci.sh

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,8 @@ create_second_github_app_controller_on_ghe() {
4242
local test_github_second_application_id="${TEST_GITHUB_SECOND_APPLICATION_ID}"
4343
local test_github_second_webhook_secret="${TEST_GITHUB_SECOND_WEBHOOK_SECRET}"
4444

45-
if [[ -n "$(type -p apt)" ]]; then
46-
sudo apt update &&
47-
sudo apt install -y python3-yaml
48-
elif [[ -n "$(type -p dnf)" ]]; then
49-
dnf install -y python3-pyyaml
50-
else
51-
# TODO(chmouel): setup a virtualenvironment instead
52-
python3 -m pip install --break-system-packages PyYAML
53-
fi
45+
# install uv
46+
type -p uv >/dev/null 2>&1 || { curl -LsSf https://astral.sh/uv/install.sh | sh; }
5447

5548
./hack/second-controller.py \
5649
--controller-image="ko" \
@@ -78,7 +71,6 @@ get_tests() {
7871
all_tests=$(grep -hioP '^func[[:space:]]+Test[[:alnum:]_]+' "${testfiles[@]}" | sed -E 's/^func[[:space:]]+//')
7972

8073
local -a gitea_tests
81-
local chunk_size remainder
8274
if [[ "${target}" == *"gitea"* ]]; then
8375
# Filter Gitea tests, excluding Concurrency tests
8476
mapfile -t gitea_tests < <(echo "${all_tests}" | grep -iP '^TestGitea' 2>/dev/null | grep -ivP 'Concurrency' 2>/dev/null | sort 2>/dev/null)
@@ -90,6 +82,11 @@ get_tests() {
9082
fi
9183
done
9284
gitea_tests=("${filtered_tests[@]}")
85+
fi
86+
87+
# Calculate chunk sizes for splitting gitea tests into 3 parts
88+
local chunk_size remainder
89+
if [[ ${#gitea_tests[@]} -gt 0 ]]; then
9390
chunk_size=$((${#gitea_tests[@]} / 3))
9491
remainder=$((${#gitea_tests[@]} % 3))
9592
fi
@@ -123,10 +120,6 @@ get_tests() {
123120
printf '%s\n' "${gitea_tests[@]:${start_idx}:$((chunk_size + remainder))}"
124121
fi
125122
;;
126-
gitea_others)
127-
# Deprecated: Use gitea_1, gitea_2, gitea_3 instead
128-
printf '%s\n' "${all_tests}" | grep -ivP 'Github|Gitlab|Bitbucket|Concurrency'
129-
;;
130123
*)
131124
echo "Invalid target: ${target}"
132125
echo "supported targets: github, github_second_controller, gitlab_bitbucket, gitea_1, gitea_2, gitea_3, concurrency"
@@ -160,9 +153,9 @@ output_logs() {
160153
}
161154

162155
collect_logs() {
163-
# Read from environment variables
164-
local test_gitea_smee_url="${TEST_GITEA_SMEEURL}"
165-
local github_ghe_smee_url="${TEST_GITHUB_SECOND_SMEE_URL}"
156+
# Read from environment variables (use default empty value for optional vars)
157+
local test_gitea_smee_url="${TEST_GITEA_SMEEURL:-}"
158+
local github_ghe_smee_url="${TEST_GITHUB_SECOND_SMEE_URL:-}"
166159

167160
mkdir -p /tmp/logs
168161
# Output logs to stdout so we can see via the web interface directly
@@ -365,7 +358,7 @@ help() {
365358
366359
collect_logs
367360
Collect logs from the cluster
368-
Required env vars: TEST_GITEA_SMEEURL, TEST_GITHUB_SECOND_SMEE_URL
361+
Optional env vars: TEST_GITEA_SMEEURL, TEST_GITHUB_SECOND_SMEE_URL (for scrubbing URLs from logs)
369362
370363
output_logs
371364
Will output logs using snazzy formatting when available or otherwise through a simple

0 commit comments

Comments
 (0)