-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ci: ensure we store the versions as gh variables #1405
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,39 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name: Store GitHub Environment Variable | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
on: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
workflow_call: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
inputs: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
variable_name: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required: true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type: string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
description: "Name of the variable to store" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
variable_value: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required: true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type: string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
description: "Value to store in the variable" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
environment: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required: true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type: string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
description: "GitHub environment to store the variable in" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
secrets: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GH_TOKEN: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required: true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
description: "GitHub token with permission to set variables" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
jobs: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
store-variable: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name: Store GitHub Environment Variable | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
runs-on: ubuntu-latest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
environment: ${{ inputs.environment }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
steps: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- name: Checkout | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
uses: actions/checkout@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- name: Set GitHub variable | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
env: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GH_TOKEN: ${{ secrets.GH_TOKEN }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
run: | | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gh variable set ${{ inputs.variable_name }} \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
--body "${{ inputs.variable_value }}" \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
--env ${{ inputs.environment }} \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
--repo ${{ github.repository }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+32
to
+39
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Add error handling and validation. The current implementation could benefit from these improvements:
Consider this enhanced implementation: - name: Set GitHub variable
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
run: |
+ if ! command -v gh &> /dev/null; then
+ echo "Error: GitHub CLI not found"
+ exit 1
+ fi
+
gh variable set ${{ inputs.variable_name }} \
--body "${{ inputs.variable_value }}" \
--env ${{ inputs.environment }} \
--repo ${{ github.repository }}
+
+ # Verify the variable was set
+ if ! gh variable list --env ${{ inputs.environment }} | grep -q "^${{ inputs.variable_name }} "
+ then
+ echo "Error: Failed to verify variable was set"
+ exit 1
+ fi 📝 Committable suggestion
Suggested change
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Workflow improvements needed for better reliability
The reusable workflow lacks timeout configuration and explicit error handling. While environment protection is in place for staging (with branch policies), the workflow could be more robust.
timeout-minutes
to thestore-variable
job in.github/workflows/workflow-store-github-env-variable.yml
Example fix for the reusable workflow:
🔗 Analysis chain
LGTM with suggestions for enhanced reliability.
The transition to a reusable workflow for storing GitHub variables is a good improvement for maintainability.
Consider these enhancements:
timeout-minutes: 5
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
Length of output: 195
Script:
Length of output: 629
Script:
Length of output: 1137
Script:
Length of output: 57