From 1fae427da16e548f34f8eb4f67eaa53f9a6cc033 Mon Sep 17 00:00:00 2001 From: Lachee Date: Wed, 7 May 2025 15:35:45 +1000 Subject: [PATCH] silly readme test --- .gitea/workflows/update-readme.yaml | 125 ++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 .gitea/workflows/update-readme.yaml diff --git a/.gitea/workflows/update-readme.yaml b/.gitea/workflows/update-readme.yaml new file mode 100644 index 0000000..350bf9f --- /dev/null +++ b/.gitea/workflows/update-readme.yaml @@ -0,0 +1,125 @@ +name: Update README with Docker Images + +on: + schedule: + - cron: '0 0 * * *' # Run daily at midnight + workflow_dispatch: # Allow manual triggering + +jobs: + update-readme: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install docker + + - name: Log in to Docker Registry + uses: docker/login-action@v2 + with: + registry: docker.lakes.house + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Generate Docker Images Table + run: | + python -c ' +import docker +import re +import os +from collections import defaultdict + +# Connect to Docker registry +client = docker.from_env() +client.login( + username=os.environ["DOCKER_USERNAME"], + password=os.environ["DOCKER_PASSWORD"], + registry="docker.lakes.house" +) + +# Define the base repository +base_repo = "docker.lakes.house/unityci/editor" + +# Get all images +images = [] +try: + # For a real registry we would use the client.images.search, but for private registry + # we need to list tags for the repository + # This might require API calls specific to your registry + # For this example, we assume we can get a list of tags + response = client.api.get_registry_data(base_repo) + for tag in response.get("tags", []): + images.append(f"{base_repo}:{tag}") +except Exception as e: + print(f"Error listing images: {e}") + # Fallback approach or error handling + +# Process images to extract Unity versions and platforms +unity_platforms = defaultdict(set) +image_map = defaultdict(dict) + +pattern = re.compile(r"ubuntu-(\d+\.\d+\.\d+\w*)-(\w+)-runner") + +for image in images: + match = pattern.search(image) + if match: + unity_version = match.group(1) + platform = match.group(2) + unity_platforms[unity_version].add(platform) + image_map[unity_version][platform] = image + +# Get all unique platforms +all_platforms = set() +for platforms in unity_platforms.values(): + all_platforms.update(platforms) +all_platforms = sorted(list(all_platforms)) + +# Generate markdown table +markdown = "# Unity Docker Images\n\n" +markdown += "A table of available Docker images for Unity CI/CD:\n\n" +markdown += "| Unity Version |" + +# Add platform headers +for platform in all_platforms: + markdown += f" {platform} |" +markdown += "\n|" + +# Add separator row +for _ in range(len(all_platforms) + 1): + markdown += " --- |" +markdown += "\n" + +# Add rows for each Unity version +for unity_version in sorted(unity_platforms.keys()): + markdown += f"| {unity_version} |" + + for platform in all_platforms: + if platform in image_map[unity_version]: + image_name = image_map[unity_version][platform].split("/")[-1] + markdown += f" `{image_name}` |" + else: + markdown += " - |" + + markdown += "\n" + +# Write to README.md +with open("README.md", "w") as f: + f.write(markdown) + +print("README updated successfully!") + ' + + - name: Commit changes if README was updated + run: | + git config --local user.email "github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git add README.md + git diff --quiet && git diff --staged --quiet || (git commit -m "Update Docker images table in README" && git push) \ No newline at end of file