name: Target Sync Image on: issues: types: - opened # https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token permissions: issues: write jobs: sync: runs-on: ubuntu-latest if: startsWith(github.event.issue.title, 'SYNC ') env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Check Issue env: MESSAGE: "${{ github.event.issue.body }}" run: | ORIGIN_IMAGE=$(echo "${MESSAGE}" | grep SYNC | awk '{print $2}' | head -n 1 | sed "s/\r//g") if [[ -z "${ORIGIN_IMAGE}" ]]; then gh issue comment ${{ github.event.issue.number }} -b "找不到镜像呢" gh issue edit ${{ github.event.issue.number }} --title "FAILED SYNC IMAGE" gh issue close ${{ github.event.issue.number }} --reason "not planned" exit 1 fi if [[ "${ORIGIN_IMAGE}" != *":"* ]]; then gh issue comment ${{ github.event.issue.number }} -b "镜像 ${ORIGIN_IMAGE} 不存在呢, 请指定 tag" gh issue edit ${{ github.event.issue.number }} --title "FAILED SYNC IMAGE" gh issue close ${{ github.event.issue.number }} --reason "not planned" exit 1 fi if [[ "${ORIGIN_IMAGE%%/*}" != *"."* ]]; then gh issue comment ${{ github.event.issue.number }} -b "镜像 ${ORIGIN_IMAGE} 不存在呢, 请指定域名, 如: docker.io/${ORIGIN_IMAGE}" gh issue edit ${{ github.event.issue.number }} --title "FAILED SYNC IMAGE" gh issue close ${{ github.event.issue.number }} --reason "not planned" exit 1 fi - name: Set up skopeo run: | wget https://github.com/lework/skopeo-binary/releases/download/v1.13.3/skopeo-linux-amd64 -O /usr/local/bin/skopeo && chmod +x /usr/local/bin/skopeo skopeo --version - name: Check Image env: MESSAGE: "${{ github.event.issue.body }}" run: | ORIGIN_IMAGE=$(echo "${MESSAGE}" | grep SYNC | awk '{print $2}' | head -n 1 | sed "s/\r//g") if ! skopeo inspect "docker://${ORIGIN_IMAGE}"; then gh issue comment ${{ github.event.issue.number }} -b "镜像 ${ORIGIN_IMAGE} 不存在呢" gh issue edit ${{ github.event.issue.number }} --title "FAILED SYNC IMAGE" gh issue close ${{ github.event.issue.number }} --reason "not planned" exit 1 fi gh issue comment ${{ github.event.issue.number }} -b "镜像 ${ORIGIN_IMAGE} 同步中...
[详情请查看](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})" gh issue edit ${{ github.event.issue.number }} --title "SYNC IMAGE ${ORIGIN_IMAGE}" - name: Start Proxy env: only_proxy: "m.daocloud.io" run: | wget https://github.com/wzshiming/bridge/releases/download/v0.9.0/bridge_linux_amd64 -O /usr/local/bin/bridge && chmod +x /usr/local/bin/bridge nohup /usr/local/bin/bridge -b :8080 -p - ${{ secrets.PROTOCOL }} 2>/dev/null & - name: Check Proxy run: | curl -v http://127.0.0.1:8080 || exit 1 curl -f --proxy 127.0.0.1:8080 -v http://m.daocloud.io/v2/ || exit 1 - name: Sync Images env: INCREMENTAL: "true" SYNC: "true" PARALLET: "1" http_proxy: socks5://127.0.0.1:8080 https_proxy: socks5://127.0.0.1:8080 MESSAGE: "${{ github.event.issue.body }}" run: | ORIGIN_IMAGE=$(echo "${MESSAGE}" | grep SYNC | awk '{print $2}' | head -n 1 | sed "s/\r//g") ./hack/diff-image.sh "${ORIGIN_IMAGE}" "m.daocloud.io/${ORIGIN_IMAGE}" gh issue comment ${{ github.event.issue.number }} -b "镜像 ${ORIGIN_IMAGE} 同步完成
请使用 m.daocloud.io/${ORIGIN_IMAGE} 替代源镜像" gh issue close ${{ github.event.issue.number }} --reason "completed" - name: Fail Sync if: failure() env: MESSAGE: "${{ github.event.issue.body }}" run: | ORIGIN_IMAGE=$(echo "${MESSAGE}" | grep SYNC | awk '{print $2}' | head -n 1 | sed "s/\r//g") gh issue comment ${{ github.event.issue.number }} -b "镜像 ${ORIGIN_IMAGE} 同步失败
[详情请查看](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})" gh issue edit ${{ github.event.issue.number }} --title "FAILED SYNC IMAGE ${ORIGIN_IMAGE}"