Skip to content

Commit 476170f

Browse files
committed
chore: migrate GitHub Action workflows to use env
Replace command-line arguments with environment variables in the GitHub Actions workflow and supporting scripts. This change improves maintainability by: - Removing complex argument passing in the gh-workflow-ci.sh script - Using environment variables for configuration in GitHub Actions - Simplifying function calls in the CI workflow - Improving readability of the workflow files Document it to the README.md Signed-off-by: Chmouel Boudjnah <[email protected]>
1 parent 3206a27 commit 476170f

File tree

3 files changed

+206
-109
lines changed

3 files changed

+206
-109
lines changed

.github/workflows/kind-e2e-tests.yaml

Lines changed: 62 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,27 @@ jobs:
3131
CONTROLLER_DOMAIN_URL: controller.paac-127-0-0-1.nip.io
3232
TEST_GITHUB_REPO_OWNER_GITHUBAPP: openshift-pipelines/pipelines-as-code-e2e-tests
3333
KUBECONFIG: /home/runner/.kube/config.kind
34+
# Configure test environment variables
35+
TEST_BITBUCKET_CLOUD_API_URL: https://api.bitbucket.org/2.0
36+
TEST_BITBUCKET_CLOUD_E2E_REPOSITORY: cboudjna/pac-e2e-tests
37+
TEST_BITBUCKET_CLOUD_USER: cboudjna
38+
TEST_EL_URL: http://controller.paac-127-0-0-1.nip.io
39+
TEST_GITEA_API_URL: http://localhost:3000
40+
TEST_GITEA_USERNAME: pac
41+
TEST_GITEA_PASSWORD: pac
42+
TEST_GITEA_REPO_OWNER: pac/pac
43+
TEST_GITHUB_API_URL: api.github.com
44+
TEST_GITHUB_REPO_OWNER_WEBHOOK: openshift-pipelines/pipelines-as-code-e2e-tests-webhook
45+
TEST_GITHUB_PRIVATE_TASK_URL: https://github.com/openshift-pipelines/pipelines-as-code-e2e-tests-private/blob/main/remote_task.yaml
46+
TEST_GITHUB_PRIVATE_TASK_NAME: task-remote
47+
TEST_GITHUB_SECOND_API_URL: ghe.pipelinesascode.com
48+
TEST_GITHUB_SECOND_EL_URL: http://ghe.paac-127-0-0-1.nip.io
49+
TEST_GITHUB_SECOND_REPO_OWNER_GITHUBAPP: pipelines-as-code/e2e
50+
TEST_GITHUB_SECOND_REPO_INSTALLATION_ID: 1
51+
TEST_GITLAB_API_URL: https://gitlab.com
52+
TEST_GITLAB_PROJECT_ID: 34405323
53+
TEST_BITBUCKET_SERVER_USER: pipelines
54+
TEST_BITBUCKET_SERVER_E2E_REPOSITORY: PAC/pac-e2e-tests
3455

3556
steps:
3657
- uses: actions/checkout@v4
@@ -66,58 +87,63 @@ jobs:
6687
bash -x ./hack/dev/kind/install.sh
6788
6889
- name: Create PAC github-app-secret
90+
env:
91+
PAC_GITHUB_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
92+
PAC_GITHUB_APPLICATION_ID: ${{ secrets.APPLICATION_ID }}
93+
PAC_WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }}
6994
run: |
70-
./hack/gh-workflow-ci.sh create_pac_github_app_secret \
71-
"${{ secrets.APP_PRIVATE_KEY }}" \
72-
"${{ secrets.APPLICATION_ID }}" \
73-
"${{secrets.WEBHOOK_SECRET }}"
95+
./hack/gh-workflow-ci.sh create_pac_github_app_secret
7496
7597
- name: Create second Github APP Controller on GHE
98+
env:
99+
TEST_GITHUB_SECOND_SMEE_URL: ${{ secrets.TEST_GITHUB_SECOND_SMEE_URL }}
100+
TEST_GITHUB_SECOND_PRIVATE_KEY: ${{ secrets.TEST_GITHUB_SECOND_PRIVATE_KEY }}
101+
TEST_GITHUB_SECOND_WEBHOOK_SECRET: ${{ secrets.TEST_GITHUB_SECOND_WEBHOOK_SECRET }}
76102
run: |
77-
./hack/gh-workflow-ci.sh create_second_github_app_controller_on_ghe \
78-
"${{ secrets.TEST_GITHUB_SECOND_SMEE_URL }}" \
79-
"${{ secrets.TEST_GITHUB_SECOND_PRIVATE_KEY }}" \
80-
"${{ secrets.TEST_GITHUB_SECOND_WEBHOOK_SECRET }}"
103+
./hack/gh-workflow-ci.sh create_second_github_app_controller_on_ghe
81104
82105
- name: Run E2E Tests on pull_request
83106
if: ${{ github.event_name != 'schedule' }}
107+
env:
108+
TEST_PROVIDER: ${{ matrix.provider }}
109+
TEST_BITBUCKET_CLOUD_TOKEN: ${{ secrets.BITBUCKET_CLOUD_TOKEN }}
110+
TEST_EL_WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }}
111+
TEST_GITEA_SMEEURL: ${{ secrets.TEST_GITEA_SMEEURL }}
112+
TEST_GITHUB_REPO_INSTALLATION_ID: ${{ secrets.INSTALLATION_ID }}
113+
TEST_GITHUB_TOKEN: ${{ secrets.GH_APPS_TOKEN }}
114+
TEST_GITHUB_SECOND_TOKEN: ${{ secrets.TEST_GITHUB_SECOND_TOKEN }}
115+
TEST_GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }}
116+
TEST_BITBUCKET_SERVER_TOKEN: ${{ secrets.BITBUCKET_SERVER_TOKEN }}
117+
TEST_BITBUCKET_SERVER_API_URL: ${{ secrets.BITBUCKET_SERVER_API_URL }}
118+
TEST_BITBUCKET_SERVER_WEBHOOK_SECRET: ${{ secrets.BITBUCKET_SERVER_WEBHOOK_SECRET }}
84119
run: |
85-
./hack/gh-workflow-ci.sh run_e2e_tests \
86-
${{ matrix.provider }} \
87-
"${{ secrets.BITBUCKET_CLOUD_TOKEN }}" \
88-
"${{ secrets.WEBHOOK_SECRET }}" \
89-
"${{ secrets.TEST_GITEA_SMEEURL }}" \
90-
"${{ secrets.INSTALLATION_ID }}" \
91-
"${{ secrets.GH_APPS_TOKEN }}" \
92-
"${{ secrets.TEST_GITHUB_SECOND_TOKEN }}" \
93-
"${{ secrets.GITLAB_TOKEN }}" \
94-
"${{ secrets.BITBUCKET_SERVER_TOKEN }}" \
95-
"${{ secrets.BITBUCKET_SERVER_API_URL }}" \
96-
"${{ secrets.BITBUCKET_SERVER_WEBHOOK_SECRET }}"
120+
./hack/gh-workflow-ci.sh run_e2e_tests
97121
98122
- name: Run E2E Tests on nightly
99123
if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
124+
env:
125+
NIGHTLY_E2E_TEST: "true"
126+
TEST_PROVIDER: ${{ matrix.provider }}
127+
TEST_BITBUCKET_CLOUD_TOKEN: ${{ secrets.BITBUCKET_CLOUD_TOKEN }}
128+
TEST_EL_WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }}
129+
TEST_GITEA_SMEEURL: ${{ secrets.TEST_GITEA_SMEEURL }}
130+
TEST_GITHUB_REPO_INSTALLATION_ID: ${{ secrets.INSTALLATION_ID }}
131+
TEST_GITHUB_TOKEN: ${{ secrets.GH_APPS_TOKEN }}
132+
TEST_GITHUB_SECOND_TOKEN: ${{ secrets.TEST_GITHUB_SECOND_TOKEN }}
133+
TEST_GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }}
134+
TEST_BITBUCKET_SERVER_TOKEN: ${{ secrets.BITBUCKET_SERVER_TOKEN }}
135+
TEST_BITBUCKET_SERVER_API_URL: ${{ secrets.BITBUCKET_SERVER_API_URL }}
136+
TEST_BITBUCKET_SERVER_WEBHOOK_SECRET: ${{ secrets.BITBUCKET_SERVER_WEBHOOK_SECRET }}
100137
run: |
101-
export NIGHTLY_E2E_TEST="true"
102-
./hack/gh-workflow-ci.sh run_e2e_tests \
103-
${{ matrix.provider }} \
104-
"${{ secrets.BITBUCKET_CLOUD_TOKEN }}" \
105-
"${{ secrets.WEBHOOK_SECRET }}" \
106-
"${{ secrets.TEST_GITEA_SMEEURL }}" \
107-
"${{ secrets.INSTALLATION_ID }}" \
108-
"${{ secrets.GH_APPS_TOKEN }}" \
109-
"${{ secrets.TEST_GITHUB_SECOND_TOKEN }}" \
110-
"${{ secrets.GITLAB_TOKEN }}" \
111-
"${{ secrets.BITBUCKET_SERVER_TOKEN }}" \
112-
"${{ secrets.BITBUCKET_SERVER_API_URL }}" \
113-
"${{ secrets.BITBUCKET_SERVER_WEBHOOK_SECRET }}"
138+
./hack/gh-workflow-ci.sh run_e2e_tests
114139
115140
- name: Collect logs
116141
if: ${{ always() }}
142+
env:
143+
TEST_GITEA_SMEEURL: ${{ secrets.TEST_GITEA_SMEEURL }}
144+
TEST_GITHUB_SECOND_SMEE_URL: ${{ secrets.TEST_GITHUB_SECOND_SMEE_URL }}
117145
run: |
118-
./hack/gh-workflow-ci.sh collect_logs \
119-
"${{ secrets.TEST_GITEA_SMEEURL }}" \
120-
"${{ secrets.TEST_GITHUB_SECOND_SMEE_URL }}"
146+
./hack/gh-workflow-ci.sh collect_logs
121147
122148
- name: Upload artifacts
123149
if: ${{ always() }}

hack/gh-workflow-ci.sh

Lines changed: 29 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
#!/usr/bin/env bash
2-
# shellcheck disable=SC2038
2+
# shellcheck disable=SC2038,SC2153
33
# Helper script for GitHub Actions CI, used from e2e tests.
44
set -exufo pipefail
55

66
create_pac_github_app_secret() {
7-
local app_private_key="${1}"
8-
local application_id="${2}"
9-
local webhook_secret="${3}"
7+
# Read from environment variables instead of arguments
8+
local app_private_key="${PAC_GITHUB_PRIVATE_KEY}"
9+
local application_id="${PAC_GITHUB_APPLICATION_ID}"
10+
local webhook_secret="${PAC_WEBHOOK_SECRET}"
11+
1012
kubectl delete secret -n pipelines-as-code pipelines-as-code-secret || true
1113
kubectl -n pipelines-as-code create secret generic pipelines-as-code-secret \
1214
--from-literal github-private-key="${app_private_key}" \
@@ -32,9 +34,10 @@ create_pac_github_app_secret() {
3234
}
3335

3436
create_second_github_app_controller_on_ghe() {
35-
local test_github_second_smee_url="${1}"
36-
local test_github_second_private_key="${2}"
37-
local test_github_second_webhook_secret="${3}"
37+
# Read from environment variables instead of arguments
38+
local test_github_second_smee_url="${TEST_GITHUB_SECOND_SMEE_URL}"
39+
local test_github_second_private_key="${TEST_GITHUB_SECOND_PRIVATE_KEY}"
40+
local test_github_second_webhook_secret="${TEST_GITHUB_SECOND_WEBHOOK_SECRET}"
3841

3942
if [[ -n "$(type -p apt)" ]]; then
4043
sudo apt update &&
@@ -80,62 +83,7 @@ get_tests() {
8083

8184
run_e2e_tests() {
8285
set +x
83-
target="${1}"
84-
bitbucket_cloud_token="${2}"
85-
webhook_secret="${3}"
86-
test_gitea_smeeurl="${4}"
87-
installation_id="${5}"
88-
gh_apps_token="${6}"
89-
test_github_second_token="${7}"
90-
gitlab_token="${8}"
91-
bitbucket_server_token="${9}"
92-
bitbucket_server_api_url="${10}"
93-
bitbucket_server_webhook_secret="${11}"
94-
95-
# Nothing specific to webhook here it just that repo is private in that org and that's what we want to test
96-
export TEST_GITHUB_PRIVATE_TASK_URL="https://github.com/openshift-pipelines/pipelines-as-code-e2e-tests-private/blob/main/remote_task.yaml"
97-
export TEST_GITHUB_PRIVATE_TASK_NAME="task-remote"
98-
99-
export TEST_BITBUCKET_CLOUD_API_URL=https://api.bitbucket.org/2.0
100-
export TEST_BITBUCKET_CLOUD_E2E_REPOSITORY=cboudjna/pac-e2e-tests
101-
export TEST_BITBUCKET_CLOUD_TOKEN=${bitbucket_cloud_token}
102-
export TEST_BITBUCKET_CLOUD_USER=cboudjna
103-
104-
export TEST_EL_URL="http://${CONTROLLER_DOMAIN_URL}"
105-
export TEST_EL_WEBHOOK_SECRET="${webhook_secret}"
106-
107-
export TEST_GITEA_API_URL="http://localhost:3000"
108-
## This is the URL used to forward requests from the webhook to the paac controller
109-
## badly named!
110-
export TEST_GITEA_SMEEURL="${test_gitea_smeeurl}"
111-
export TEST_GITEA_USERNAME=pac
112-
export TEST_GITEA_PASSWORD=pac
113-
export TEST_GITEA_REPO_OWNER=pac/pac
114-
115-
export TEST_GITHUB_API_URL=api.github.com
116-
export TEST_GITHUB_REPO_INSTALLATION_ID="${installation_id}"
117-
export TEST_GITHUB_REPO_OWNER_GITHUBAPP=openshift-pipelines/pipelines-as-code-e2e-tests
118-
export TEST_GITHUB_REPO_OWNER_WEBHOOK=openshift-pipelines/pipelines-as-code-e2e-tests-webhook
119-
export TEST_GITHUB_TOKEN="${gh_apps_token}"
120-
121-
export TEST_GITHUB_SECOND_API_URL=ghe.pipelinesascode.com
122-
export TEST_GITHUB_SECOND_EL_URL=http://ghe.paac-127-0-0-1.nip.io
123-
export TEST_GITHUB_SECOND_REPO_OWNER_GITHUBAPP=pipelines-as-code/e2e
124-
# TODO: webhook repo for second github
125-
# export TEST_GITHUB_SECOND_REPO_OWNER_WEBHOOK=openshift-pipelines/pipelines-as-code-e2e-tests-webhook
126-
export TEST_GITHUB_SECOND_REPO_INSTALLATION_ID=1
127-
export TEST_GITHUB_SECOND_TOKEN="${test_github_second_token}"
128-
129-
export TEST_GITLAB_API_URL="https://gitlab.com"
130-
export TEST_GITLAB_PROJECT_ID="34405323"
131-
export TEST_GITLAB_TOKEN=${gitlab_token}
132-
# https://gitlab.com/gitlab-com/alliances/ibm-red-hat/sandbox/openshift-pipelines/pac-e2e-tests
133-
134-
export TEST_BITBUCKET_SERVER_TOKEN="${bitbucket_server_token}"
135-
export TEST_BITBUCKET_SERVER_API_URL="${bitbucket_server_api_url}"
136-
export TEST_BITBUCKET_SERVER_WEBHOOK_SECRET="${bitbucket_server_webhook_secret}"
137-
export TEST_BITBUCKET_SERVER_USER="pipelines"
138-
export TEST_BITBUCKET_SERVER_E2E_REPOSITORY="PAC/pac-e2e-tests"
86+
target="${TEST_PROVIDER}"
13987

14088
mapfile -t tests < <(get_tests "${target}")
14189
echo "About to run ${#tests[@]} tests: ${tests[*]}"
@@ -144,8 +92,10 @@ run_e2e_tests() {
14492
}
14593

14694
collect_logs() {
147-
test_gitea_smee_url="${1}"
148-
github_ghe_smee_url="${2}"
95+
# Read from environment variables
96+
local test_gitea_smee_url="${TEST_GITEA_SMEEURL}"
97+
local github_ghe_smee_url="${TEST_GITHUB_SECOND_SMEE_URL}"
98+
14999
mkdir -p /tmp/logs
150100
kind export logs /tmp/logs
151101
[[ -d /tmp/gosmee-replay ]] && cp -a /tmp/gosmee-replay /tmp/logs/
@@ -186,36 +136,42 @@ detect_panic() {
186136

187137
help() {
188138
cat <<EOF
189-
Usage: $0 <command> [args]
139+
Usage: $0 <command>
190140
191141
Shell script to run e2e tests from GitHub Actions CI
192142
193-
create_pac_github_app_secret <application_id> <app_private_key> <webhook_secret>
143+
Required environment variables depend on the command being executed.
144+
145+
create_pac_github_app_secret
194146
Create the secret for the github app
147+
Required env vars: PAC_GITHUB_PRIVATE_KEY, PAC_GITHUB_APPLICATION_ID, PAC_WEBHOOK_SECRET
195148
196-
create_second_github_app_controller_on_ghe <test_github_second_smee_url> <test_github_second_private_key> <test_github_second_webhook_secret>
149+
create_second_github_app_controller_on_ghe
197150
Create the second controller on GHE
151+
Required env vars: TEST_GITHUB_SECOND_SMEE_URL, TEST_GITHUB_SECOND_PRIVATE_KEY, TEST_GITHUB_SECOND_WEBHOOK_SECRET
198152
199-
run_e2e_tests <target> <bitbucket_cloud_token> <webhook_secret> <test_gitea_smeeurl> <installation_id> <gh_apps_token> <test_github_second_token> <gitlab_token> <bitbucket_datacenter_token> <bitbucket_datacenter_api_url> <bitbucket_datacenter_webhook_secret>
153+
run_e2e_tests
200154
Run the e2e tests
155+
Required env vars: TEST_PROVIDER plus many test-specific environment variables
201156
202157
collect_logs
203158
Collect logs from the cluster
159+
Required env vars: TEST_GITEA_SMEEURL, TEST_GITHUB_SECOND_SMEE_URL
204160
EOF
205161
}
206162

207163
case ${1-""} in
208164
create_pac_github_app_secret)
209-
create_pac_github_app_secret "${2}" "${3}" "${4}"
165+
create_pac_github_app_secret
210166
;;
211167
create_second_github_app_controller_on_ghe)
212-
create_second_github_app_controller_on_ghe "${2}" "${3}" "${4}"
168+
create_second_github_app_controller_on_ghe
213169
;;
214170
run_e2e_tests)
215-
run_e2e_tests "${2}" "${3}" "${4}" "${5}" "${6}" "${7}" "${8}" "${9}" "${10}" "${11}" "${12}"
171+
run_e2e_tests
216172
;;
217173
collect_logs)
218-
collect_logs "${2}" "${3}"
174+
collect_logs
219175
;;
220176
help)
221177
help

0 commit comments

Comments
 (0)