Skip to content

Commit 58e6946

Browse files
refactor: harden inputs and secret usage
Moves input and secret references to environment variables for improved readability and maintainability. Updates all usages in steps to reference the new env variables, reducing repetition and simplifying future changes.
1 parent bc6d9c2 commit 58e6946

1 file changed

Lines changed: 30 additions & 22 deletions

File tree

.github/workflows/copr-ci.yml

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,34 +39,43 @@ on:
3939
description: 'Copr CLI configuration file. See https://copr.fedorainfracloud.org/api'
4040
required: true
4141

42+
env:
43+
INPUTS_AUTO_UPDATE_PACKAGE: ${{ inputs.auto_update_package }}
44+
INPUTS_COPR_PR_WEBHOOK_TOKEN: ${{ inputs.copr_pr_webhook_token }}
45+
INPUTS_COPR_OWNERNAME: ${{ inputs.copr_ownername }}
46+
INPUTS_GITHUB_ORG_OWNER: ${{ inputs.github_org_owner }}
47+
INPUTS_JOB_TIMEOUT: ${{ inputs.job_timeout }}
48+
SECRETS_COPR_BETA_WEBHOOK_TOKEN: ${{ secrets.COPR_BETA_WEBHOOK_TOKEN }}
49+
SECRETS_COPR_STABLE_WEBHOOK_TOKEN: ${{ secrets.COPR_STABLE_WEBHOOK_TOKEN }}
50+
SECRETS_COPR_CLI_CONFIG: ${{ secrets.COPR_CLI_CONFIG }}
51+
4252
jobs:
4353
package-init:
4454
name: Create/update copr package
4555
runs-on: ubuntu-latest
4656
container: fedora:latest
4757
env:
4858
BASE_URL: https://copr.fedorainfracloud.org/api_3
49-
OWNERNAME: ${{ inputs.copr_ownername }}
5059
PACKAGE_NAME: ${{ github.event.repository.name }}
5160
SOURCE_TYPE_TEXT: "custom"
5261
steps:
5362
- name: Debug inputs
5463
run: |
5564
echo "inputs:"
56-
echo "copr_pr_webhook_token: ${{ inputs.copr_pr_webhook_token }}"
57-
echo "github_org_owner: ${{ inputs.github_org_owner }}"
58-
echo "copr_ownername: ${{ inputs.copr_ownername }}"
59-
echo "auto_update_package: ${{ inputs.auto_update_package }}"
60-
echo "job_timeout: ${{ inputs.job_timeout }}"
65+
echo "copr_pr_webhook_token: ${INPUTS_COPR_PR_WEBHOOK_TOKEN}"
66+
echo "github_org_owner: ${INPUTS_GITHUB_ORG_OWNER}"
67+
echo "copr_ownername: ${INPUTS_COPR_OWNERNAME}"
68+
echo "auto_update_package: ${INPUTS_AUTO_UPDATE_PACKAGE}"
69+
echo "job_timeout: ${INPUTS_JOB_TIMEOUT}"
6170
6271
- name: Test secrets
6372
id: test_secrets
6473
if: >
65-
github.repository_owner == inputs.github_org_owner &&
66-
inputs.auto_update_package == true
74+
github.repository_owner == env.INPUTS_GITHUB_ORG_OWNER &&
75+
env.INPUTS_AUTO_UPDATE_PACKAGE == 'true'
6776
run: |
6877
# return if secrets.COPR_CLI_CONFIG is empty
69-
if [ -z "${{ secrets.COPR_CLI_CONFIG }}" ]; then
78+
if [ -z "${SECRETS_COPR_CLI_CONFIG}" ]; then
7079
echo "Copr CLI configuration file is empty. Exiting..."
7180
7281
# if a pull request exit with 0
@@ -77,7 +86,7 @@ jobs:
7786
fi
7887
else
7988
mkdir -p ~/.config
80-
echo "${{ secrets.COPR_CLI_CONFIG }}" > ~/.config/copr
89+
echo "${SECRETS_COPR_CLI_CONFIG}" > ~/.config/copr
8190
fi
8291
8392
- name: Install dependencies
@@ -118,7 +127,8 @@ jobs:
118127
119128
for project in "${projects[@]}"; do
120129
# check if 404 on get package (package does not exist)
121-
url="${BASE_URL}/package?ownername=${OWNERNAME}&projectname=${project}&packagename=${PACKAGE_NAME}"
130+
url_query="ownername=${INPUTS_COPR_OWNERNAME}&projectname=${project}&packagename=${PACKAGE_NAME}"
131+
url="${BASE_URL}/package?${url_query}"
122132
status_code=$(curl --write-out '%{http_code}' --silent --output /dev/null "${url}")
123133
124134
if [[ "$status_code" == 404 ]]; then
@@ -136,18 +146,18 @@ jobs:
136146
--script-resultdir "${resultdir}" \
137147
--script-chroot "${chroot}" \
138148
--name "${PACKAGE_NAME}" \
139-
--timeout $((60 * ${{ inputs.job_timeout }})) \
149+
--timeout $((60 * ${INPUTS_JOB_TIMEOUT})) \
140150
"${project}"
141151
142152
done
143153
144154
build:
145155
name: Copr build
146156
needs: package-init
147-
if: github.repository_owner == inputs.github_org_owner
157+
if: github.repository_owner == env.INPUTS_GITHUB_ORG_OWNER
148158
runs-on: ubuntu-latest
149159
container: fedora:latest
150-
timeout-minutes: ${{ inputs.job_timeout }}
160+
timeout-minutes: ${{ env.INPUTS_JOB_TIMEOUT }}
151161
outputs:
152162
BUILD_ID: ${{ steps.build.outputs.BUILD_ID }}
153163
BUILD_CANCEL: ${{ steps.build.outcome == 'cancelled' }}
@@ -192,25 +202,23 @@ jobs:
192202
fi
193203
194204
- name: Get properties
195-
env:
196-
COPR_PR_WH_TOKEN: ${{ inputs.copr_pr_webhook_token }}
197205
run: |
198206
# package name = repository name
199207
package=${{ github.event.repository.name }}
200-
copr_base="https://copr.fedorainfracloud.org/webhooks/custom-dir/${{ inputs.copr_ownername }}"
208+
copr_base="https://copr.fedorainfracloud.org/webhooks/custom-dir/${INPUTS_COPR_OWNERNAME}"
201209
202210
# release and released type
203211
if [ "${{ github.event_name }}" = "release" ]; then
204212
if [ "${{ github.event.action }}" = "prereleased" ]; then
205213
BUILD_CHANNEL="beta"
206-
COPR_PUSH_WEBHOOK="${copr_base}/${BUILD_CHANNEL}/${{ secrets.COPR_BETA_WEBHOOK_TOKEN }}/${package}/"
214+
COPR_PUSH_WEBHOOK="${copr_base}/${BUILD_CHANNEL}/${SECRETS_COPR_BETA_WEBHOOK_TOKEN}/${package}/"
207215
elif [ "${{ github.event.action }}" = "released" ]; then
208216
BUILD_CHANNEL="stable"
209-
COPR_PUSH_WEBHOOK="${copr_base}/${BUILD_CHANNEL}/${{ secrets.COPR_STABLE_WEBHOOK_TOKEN }}/${package}/"
217+
COPR_PUSH_WEBHOOK="${copr_base}/${BUILD_CHANNEL}/${SECRETS_COPR_STABLE_WEBHOOK_TOKEN}/${package}/"
210218
fi
211219
elif [ "${{ github.event_name }}" = "pull_request" ]; then
212220
BUILD_CHANNEL="pulls:pr:${{ github.event.number }}"
213-
COPR_PR_WEBHOOK="${copr_base}/${BUILD_CHANNEL}/${{ env.COPR_PR_WH_TOKEN }}/${package}/"
221+
COPR_PR_WEBHOOK="${copr_base}/${BUILD_CHANNEL}/${INPUTS_COPR_PR_WEBHOOK_TOKEN}/${package}/"
214222
fi
215223
216224
{
@@ -243,7 +251,7 @@ jobs:
243251
github.secret_source
244252
run: |
245253
mkdir -p ~/.config
246-
echo "${{ secrets.COPR_CLI_CONFIG }}" > ~/.config/copr
254+
echo "${SECRETS_COPR_CLI_CONFIG}" > ~/.config/copr
247255
248256
copr-cli \
249257
cancel \
@@ -255,7 +263,7 @@ jobs:
255263
steps.build.outcome != 'skipped'
256264
run: |
257265
package=${{ github.event.repository.name }}
258-
base_url="https://download.copr.fedorainfracloud.org/results/${{ inputs.copr_ownername }}/${BUILD_CHANNEL}"
266+
base_url="https://download.copr.fedorainfracloud.org/results/${INPUTS_COPR_OWNERNAME}/${BUILD_CHANNEL}"
259267
260268
# get chroots and prefixed build_id
261269
build_url="https://copr.fedorainfracloud.org/api_3/build/${{ steps.build.outputs.BUILD_ID }}"

0 commit comments

Comments
 (0)