diff --git a/.github/workflows/generate-runners-status.yml b/.github/workflows/generate-runners-status.yml new file mode 100644 index 0000000..817c95c --- /dev/null +++ b/.github/workflows/generate-runners-status.yml @@ -0,0 +1,73 @@ +name: "Generate runners status" + +on: + push: + schedule: + - cron: '0 * * * *' # Run every hour + workflow_dispatch: # Manually triggered via GitHub Actions UI + +concurrency: + group: redirector + cancel-in-progress: false + +jobs: + + Check: + + name: "Check permissions" + runs-on: "ubuntu-24.04" + steps: + + - name: "Check permissions" + uses: armbian/actions/team-check@main + with: + ORG_MEMBERS: ${{ secrets.ORG_MEMBERS }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TEAM: "Release manager" + + build: + name: "Get self hosted runners status" + runs-on: ubuntu-24.04 + needs: Check + steps: + + - name: "Install dependencies: jq" + uses: awalsh128/cache-apt-pkgs-action@latest + with: + packages: jq + version: 1.0 + + - name: "Get runners from ORG" + env: + GH_TOKEN: ${{ secrets.RUNNERS }} + run: | + + # get list of self hosted runners + for i in `seq 0 1 10`; do + curl -s -L \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${{ secrets.RUNNERS }}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/orgs/armbian/actions/runners?page=${i} >> runners.json + done + + + echo "
Name | CPU cores | Memory GB | Storage GB | Runners |
%s | %3d | %d | %d | %d |
" >> $GITHUB_STEP_SUMMARY + for runner in $(seq -f "%02g" 1 $RUNNERS | sed -e "s/.*/$NAME-&/"); do + INFO=$(cat runners.json | jq -r '.runners[] | select(.name | startswith("'$runner'"))' | jq -r '.name,.status,.busy' | xargs -n3 -d'\n' | sort | uniq) + [[ -n $INFO ]] && echo ":+1:" >> $GITHUB_STEP_SUMMARY || echo ":exclamation: ($runner)" >> $GITHUB_STEP_SUMMARY + done + echo -e " |