update hydra queries

This commit is contained in:
zack 2024-10-19 21:00:24 -04:00
parent eccb046bea
commit 78322e67b0
No known key found for this signature in database
GPG key ID: 5F873416BCF59F35

View file

@ -9,7 +9,7 @@ env:
BRANCH_NAME: auto-update-flake-${{ github.run_number }} BRANCH_NAME: auto-update-flake-${{ github.run_number }}
HYDRA_INSTANCE: https://hydra.zoeys.computer HYDRA_INSTANCE: https://hydra.zoeys.computer
HYDRA_PROJECT: config HYDRA_PROJECT: config
HYDRA_JOBSET: pr-${{ github.run_number }} # Changed to use a PR-specific jobset HYDRA_JOBSET: pr-${{ github.run_number }}
jobs: jobs:
check-existing-pr: check-existing-pr:
@ -74,37 +74,38 @@ jobs:
-u "${{ secrets.HYDRA_USERNAME }}:${{ secrets.HYDRA_PASSWORD }}" \ -u "${{ secrets.HYDRA_USERNAME }}:${{ secrets.HYDRA_PASSWORD }}" \
-d '{ -d '{
"enabled": 1, "enabled": 1,
"hidden": false, "visible": true,
"keepnr": 3,
"schedulingshares": 100,
"checkinterval": 60,
"description": "PR #${{ steps.create-pr.outputs.pull-request-number }} - Auto-update flake dependencies", "description": "PR #${{ steps.create-pr.outputs.pull-request-number }} - Auto-update flake dependencies",
"flake": "github:${{ github.repository }}/${{ env.BRANCH_NAME }}", "flake": "github:${{ github.repository }}/${{ env.BRANCH_NAME }}",
"checkinterval": 60, "type": 1
"schedulingshares": 100,
"enableemail": false,
"emailoverride": "",
"keepnr": 3
}' \ }' \
"${{ env.HYDRA_INSTANCE }}/jobset/${{ env.HYDRA_PROJECT }}/${{ env.HYDRA_JOBSET }}" "${{ env.HYDRA_INSTANCE }}/jobset/${{ env.HYDRA_PROJECT }}/${{ env.HYDRA_JOBSET }}"
- name: Trigger Hydra build - name: Trigger Hydra build
if: steps.git-check.outputs.CHANGED == 'true' if: steps.git-check.outputs.CHANGED == 'true'
run: | run: |
curl -X POST -u "${{ secrets.HYDRA_USERNAME }}:${{ secrets.HYDRA_PASSWORD }}" \ curl -X POST -H "Content-Type: application/json" \
"${{ env.HYDRA_INSTANCE }}/api/trigger-build?project=${{ env.HYDRA_PROJECT }}&jobset=${{ env.HYDRA_JOBSET }}" -u "${{ secrets.HYDRA_USERNAME }}:${{ secrets.HYDRA_PASSWORD }}" \
-d '{"jobsets": ["${{ env.HYDRA_PROJECT }}:${{ env.HYDRA_JOBSET }}"]}' \
"${{ env.HYDRA_INSTANCE }}/api/push"
- name: Wait for Hydra build - name: Wait for Hydra build
if: steps.git-check.outputs.CHANGED == 'true' if: steps.git-check.outputs.CHANGED == 'true'
id: wait-for-build id: wait-for-build
run: | run: |
# Poll Hydra build status
max_attempts=60 # 30 minutes (30 * 2 minutes) max_attempts=60 # 30 minutes (30 * 2 minutes)
attempt=0 attempt=0
while [ $attempt -lt $max_attempts ]; do while [ $attempt -lt $max_attempts ]; do
status=$(curl -s -u "${{ secrets.HYDRA_USERNAME }}:${{ secrets.HYDRA_PASSWORD }}" \ response=$(curl -s -u "${{ secrets.HYDRA_USERNAME }}:${{ secrets.HYDRA_PASSWORD }}" \
"${{ env.HYDRA_INSTANCE }}/api/job/${{ env.HYDRA_PROJECT }}/${{ env.HYDRA_JOBSET }}/latest" | jq -r '.buildstatus') "${{ env.HYDRA_INSTANCE }}/api/jobsets?project=${{ env.HYDRA_PROJECT }}")
status=$(echo "$response" | jq -r '.[] | select(.name == "${{ env.HYDRA_JOBSET }}") | .nrfailed')
if [ "$status" = "0" ]; then if [ "$status" = "0" ]; then
echo "BUILD_SUCCESS=true" >> $GITHUB_OUTPUT echo "BUILD_SUCCESS=true" >> $GITHUB_OUTPUT
exit 0 exit 0
elif [ "$status" = "1" ] || [ "$status" = "2" ] || [ "$status" = "3" ]; then elif [ "$status" != "null" ] && [ "$status" != "0" ]; then
echo "BUILD_SUCCESS=false" >> $GITHUB_OUTPUT echo "BUILD_SUCCESS=false" >> $GITHUB_OUTPUT
exit 0 exit 0
fi fi
@ -168,22 +169,24 @@ jobs:
- name: Trigger Hydra build - name: Trigger Hydra build
run: | run: |
curl -X POST -u "${{ secrets.HYDRA_USERNAME }}:${{ secrets.HYDRA_PASSWORD }}" \ curl -X POST -H "Content-Type: application/json" \
"${{ env.HYDRA_INSTANCE }}/api/trigger-build?project=${{ env.HYDRA_PROJECT }}&jobset=${{ env.HYDRA_JOBSET }}" -u "${{ secrets.HYDRA_USERNAME }}:${{ secrets.HYDRA_PASSWORD }}" \
-d '{"jobsets": ["${{ env.HYDRA_PROJECT }}:${{ env.HYDRA_JOBSET }}"]}' \
"${{ env.HYDRA_INSTANCE }}/api/push"
- name: Wait for Hydra build - name: Wait for Hydra build
id: wait-for-build id: wait-for-build
run: | run: |
# Poll Hydra build status (same as in update-flake job)
max_attempts=60 # 30 minutes (30 * 2 minutes) max_attempts=60 # 30 minutes (30 * 2 minutes)
attempt=0 attempt=0
while [ $attempt -lt $max_attempts ]; do while [ $attempt -lt $max_attempts ]; do
status=$(curl -s -u "${{ secrets.HYDRA_USERNAME }}:${{ secrets.HYDRA_PASSWORD }}" \ response=$(curl -s -u "${{ secrets.HYDRA_USERNAME }}:${{ secrets.HYDRA_PASSWORD }}" \
"${{ env.HYDRA_INSTANCE }}/api/job/${{ env.HYDRA_PROJECT }}/${{ env.HYDRA_JOBSET }}/latest" | jq -r '.buildstatus') "${{ env.HYDRA_INSTANCE }}/api/jobsets?project=${{ env.HYDRA_PROJECT }}")
status=$(echo "$response" | jq -r '.[] | select(.name == "${{ env.HYDRA_JOBSET }}") | .nrfailed')
if [ "$status" = "0" ]; then if [ "$status" = "0" ]; then
echo "BUILD_SUCCESS=true" >> $GITHUB_OUTPUT echo "BUILD_SUCCESS=true" >> $GITHUB_OUTPUT
exit 0 exit 0
elif [ "$status" = "1" ] || [ "$status" = "2" ] || [ "$status" = "3" ]; then elif [ "$status" != "null" ] && [ "$status" != "0" ]; then
echo "BUILD_SUCCESS=false" >> $GITHUB_OUTPUT echo "BUILD_SUCCESS=false" >> $GITHUB_OUTPUT
exit 0 exit 0
fi fi