Skip to content

Commit

Permalink
Auto update docker hub description via GH workflow
Browse files Browse the repository at this point in the history
Update README.md
  • Loading branch information
dormant-user committed Sep 12, 2024
1 parent 2fd57c2 commit f2e636f
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 3 deletions.
91 changes: 91 additions & 0 deletions .github/workflows/description.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Update Docker Hub Description

on:
push:
branches:
- main
paths:
- README.md
- .github/workflows/description.yml

env:
DOCKER_REGISTRY: "https://hub.docker.com/v2"
DOCKER_REPOSITORY: "${{ github.event.repository.name }}"
DESCRIPTION_LIMIT: 100

jobs:
update-docker-hub:
runs-on: thevickypedia-lite
steps:
- uses: actions/checkout@v4

- name: Fetch API Token
run: |
payload=$(jq -n \
--arg username "${{ secrets.DOCKER_USERNAME }}" \
--arg password "${{ secrets.DOCKER_PASSWORD }}" \
'{username: $username, password: $password}')
token=$(curl -s -X POST "${{ env.DOCKER_REGISTRY }}/users/login/" \
-H "Content-Type: application/json" \
-d "$payload" | jq -r '.token')
if [[ -n "${token}" ]]; then
echo "::debug title=Token Retriever::Retrieved token successfully"
echo "API_TOKEN=${token}" >> $GITHUB_ENV
else
echo "::error title=Token Retriever::Failed to get auth token"
exit 1
fi
shell: bash

- name: Get Description
run: |
warn="Description exceeds DockerHub's limit and has been truncated to ${{ env.DESCRIPTION_LIMIT }} characters."
description="${{ github.event.repository.description }}"
description_length=${#description}
if [[ "$description_length" -gt "${{ env.DESCRIPTION_LIMIT }}" ]]; then
echo "::warning title=Description Too Long::${warn}"
shortened_description="${description:0:97}..."
else
shortened_description="$description"
fi
echo "SHORT_DESCRIPTION=${shortened_description}" >> $GITHUB_ENV
shell: bash

- name: Update description
run: |
full_description="$(cat README.md)"
payload=$(jq -n \
--arg description "${{ env.SHORT_DESCRIPTION }}" \
--arg full_description "$full_description" \
'{description: $description, full_description: $full_description}')
response=$(curl -s -o /tmp/desc -w "%{http_code}" -X PATCH \
"${{ env.DOCKER_REGISTRY }}/repositories/${{ secrets.DOCKER_USERNAME }}/${{ env.DOCKER_REPOSITORY }}/" \
-H "Authorization: Bearer ${{ env.API_TOKEN }}" \
-H "Content-Type: application/json" \
-d "$payload")
status_code="${response: -3}"
if [[ "${status_code}" -eq 200 ]]; then
echo "::notice title=Updater::Updated description successfully"
exit 0
elif [[ -f "/tmp/desc" ]]; then
echo "::error title=Updater::Failed to update description"
response_payload="$(cat /tmp/desc)"
reason=$(echo "${response_payload}" | jq '.message')
info=$(echo "${response_payload}" | jq '.errinfo')
if [[ "$reason" != "null" ]]; then
echo "::error title=Updater::[${status_code}]: $reason"
else
echo "::error title=Updater::[${status_code}]: $(cat /tmp/desc)"
fi
if [[ "$info" != "null" ]]; then
echo "::error title=Updater::${info}"
fi
else
echo "::error title=Updater::Failed to update description - ${status_code}"
fi
exit 1
shell: bash
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# GitHub Runner Linux

[![Test Runner][badges-test]][links-test]
<br>
[![Build and Publish][badges-build]][links-build]

Spin up an on-demand self-hosted GitHub action runner with multi-arch supported Ubuntu image.
Expand Down Expand Up @@ -31,6 +32,7 @@ docker compose up -d
- **REUSE_EXISTING** - Re-use existing configuration. Defaults to `false`

> [!NOTE]
>
> `REUSE_EXISTING` flag can be useful when a container restarts due to an issue or
> when a container is reused after being terminated without shutting down gracefully.
> <details>
Expand All @@ -55,9 +57,10 @@ docker compose up -d
> ```
> </details>
> [!WARNING]
Using this image **without** the env var `GIT_REPOSITORY` will create an organization level runner.
Using self-hosted runners in public repositories pose some considerable security threats.
> [!WARNING]
>
> Using this image **without** the env var `GIT_REPOSITORY` will create an organization level runner.<br>
> Using self-hosted runners in public repositories pose some considerable security threats.
> - [#self-hosted-runner-security]
> - [#restricting-the-use-of-self-hosted-runners]
> - [#configuring-required-approval-for-workflows-from-public-forks]
Expand Down

0 comments on commit f2e636f

Please sign in to comment.