Add workflows

This commit is contained in:
Shiming Zhang 2021-09-10 11:49:28 +08:00
parent 0750a83afa
commit 8effa5a0fa
2 changed files with 66 additions and 0 deletions

27
.github/workflows/sync-workflows.yml vendored Normal file
View File

@ -0,0 +1,27 @@
name: "Sync Workflows"
on:
workflow_dispatch:
push:
branches:
- main
paths:
- "mirror.txt"
jobs:
sync-workflows:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Generate
run: |
git rm -f .github/workflows/mirror-*.yml || true
./hack/generate-workflow.sh
- name: Sync
env:
GH_TOKEN: "${{ secrets.GH_TOKEN }}" # Permission to operate Workflows is required
run: |
git add .github/workflows/mirror-*.yml && git commit -m "Generate Workflow YAML" && {
git config --global user.name "bot"
SOURCE=$(git remote get-url origin | sed -E 's#git@(.+):(.+)#https://\1/\2#g' | sed "s#https://github.com#https://bot:${GH_TOKEN}@github.com#g")
git remote add upstream "${SOURCE}"
git push upstream main
}

39
hack/generate-workflow.sh Executable file
View File

@ -0,0 +1,39 @@
#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
cat ./mirror.txt | while read line; do
line="${line// /}"
if [[ "${line}" == "#"* ]] || [[ "${line}" == "" ]]; then
continue
fi
host="${line%%/*}"
image="${line#*/}"
workflow=".github/workflows/mirror-${host//./-}-${image//\//-}.yml"
cat <<EOF >"${workflow}"
name: "Sync ${host}/${image}"
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
jobs:
sync-image:
runs-on: ubuntu-latest
steps:
- name: Sync
env:
CREDS: "\${{ secrets.CREDS }}"
MIRROR: "\${{ secrets.MIRROR }}"
run: |
docker run --rm -it ananace/skopeo \\
sync --src docker --dest docker --dest-tls-verify=false --dest-creds "\${CREDS}" -f oci \\
"${host}/${image}" "\${MIRROR}/${image}"
EOF
done