From d182d489ee87097a04314ae76907a943289dce17 Mon Sep 17 00:00:00 2001 From: Kay Yan Date: Fri, 10 Sep 2021 10:54:28 +0800 Subject: [PATCH 1/3] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 752d675..dc2a212 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ k8s.gcr.io/coredns/coredns => k8s-gcr.m.daocloud.io/coredns/coredns ## 支持的仓库 -incloud mirror.txt +[mirror.txt]( mirror.txt) ## 增加新的仓库 @@ -50,4 +50,4 @@ TODO ## 最佳实践 * 通过 加速 安装 kubeadm -* 通过 加速 运行 artifacthub 上的镜像 \ No newline at end of file +* 通过 加速 运行 artifacthub 上的镜像 From 0750a83afa6a5ebddc23213f20db245eb3c5bf5a Mon Sep 17 00:00:00 2001 From: Kay Yan Date: Fri, 10 Sep 2021 11:09:21 +0800 Subject: [PATCH 2/3] Create blank.yml --- .github/workflows/blank.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/blank.yml diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml new file mode 100644 index 0000000..30a4bc1 --- /dev/null +++ b/.github/workflows/blank.yml @@ -0,0 +1,36 @@ +# This is a basic workflow to help you get started with Actions + +name: CI + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the main branch + push: + branches: [ main ] + pull_request: + branches: [ main ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + + # Runs a single command using the runners shell + - name: Run a one-line script + run: echo Hello, world! + + # Runs a set of commands using the runners shell + - name: Run a multi-line script + run: | + echo Add other actions to build, + echo test, and deploy your project. From 8effa5a0fa5c85238102892c8d89682f492cbe31 Mon Sep 17 00:00:00 2001 From: Shiming Zhang Date: Fri, 10 Sep 2021 11:49:28 +0800 Subject: [PATCH 3/3] Add workflows --- .github/workflows/sync-workflows.yml | 27 +++++++++++++++++++ hack/generate-workflow.sh | 39 ++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 .github/workflows/sync-workflows.yml create mode 100755 hack/generate-workflow.sh diff --git a/.github/workflows/sync-workflows.yml b/.github/workflows/sync-workflows.yml new file mode 100644 index 0000000..9632d06 --- /dev/null +++ b/.github/workflows/sync-workflows.yml @@ -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 + } diff --git a/hack/generate-workflow.sh b/hack/generate-workflow.sh new file mode 100755 index 0000000..58bdbc7 --- /dev/null +++ b/hack/generate-workflow.sh @@ -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 <"${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