docker.io/deluan/navidrome:latest #6434
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: contains(github.event.issue.labels.*.name, 'sync image') | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Check Issue | |
id: get-image | |
env: | |
IMAGE: "${{ github.event.issue.title }}" | |
run: | | |
ORIGIN_IMAGE="${IMAGE}" | |
if [[ "${ORIGIN_IMAGE}" == *"//"* ]] || [[ "${ORIGIN_IMAGE}" == *" "* ]]; then | |
gh issue comment ${{ github.event.issue.number }} -b "镜像 '${ORIGIN_IMAGE}' 不是一个镜像" | |
exit 1 | |
fi | |
if [[ "${ORIGIN_IMAGE%%/*}" != *"."* ]] || [[ "${ORIGIN_IMAGE}" != *"/"* ]]; then | |
if [[ "${ORIGIN_IMAGE}" != *":"* ]]; then | |
gh issue comment ${{ github.event.issue.number }} -b "镜像 '${ORIGIN_IMAGE}' 不存在呢, 请指定 域名 和 tag, 如: docker.io/${ORIGIN_IMAGE}:latest" | |
else | |
gh issue comment ${{ github.event.issue.number }} -b "镜像 '${ORIGIN_IMAGE}' 不存在呢, 请指定域名, 如: docker.io/${ORIGIN_IMAGE}" | |
fi | |
exit 1 | |
fi | |
if [[ "${ORIGIN_IMAGE}" != *":"* ]]; then | |
gh issue comment ${{ github.event.issue.number }} -b "镜像 '${ORIGIN_IMAGE}' 不存在呢, 请指定 tag, 如: ${ORIGIN_IMAGE}:latest" | |
exit 1 | |
fi | |
echo "image=${ORIGIN_IMAGE}" >> $GITHUB_OUTPUT | |
- 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 | |
run: | | |
ORIGIN_IMAGE="${{ steps.get-image.outputs.image }}" | |
gh issue comment ${{ github.event.issue.number }} -b "镜像 ${ORIGIN_IMAGE} 同步中...<br>[详情请查看](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})" | |
- 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 | |
run: | | |
ORIGIN_IMAGE="${{ steps.get-image.outputs.image }}" | |
./hack/diff-image.sh "${ORIGIN_IMAGE}" "m.daocloud.io/${ORIGIN_IMAGE}" | |
gh issue comment ${{ github.event.issue.number }} -b "镜像 ${ORIGIN_IMAGE} 同步完成<br>请使用 m.daocloud.io/${ORIGIN_IMAGE} 替代源镜像" | |
gh issue edit ${{ github.event.issue.number }} --add-label "sync image succeeded" -b "IMAGE SYNC" | |
gh issue close ${{ github.event.issue.number }} --reason "completed" | |
- name: Fail Sync | |
if: failure() | |
run: | | |
ORIGIN_IMAGE="${{ steps.get-image.outputs.image }}" | |
gh issue comment ${{ github.event.issue.number }} -b "镜像 ${ORIGIN_IMAGE} 同步失败[详情请查看](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})<br>请检查 image 是否存在, [查看成功例子](https://github.com/DaoCloud/public-image-mirror/issues?q=is%3Aissue+is%3Aclosed+label%3A%22sync+image+succeeded%22)<br>如有疑问请回复 /auto-cc 召唤帮助" | |
gh issue edit ${{ github.event.issue.number }} --add-label "sync image failure" -b "IMAGE SYNC" | |
gh issue close ${{ github.event.issue.number }} --reason "not planned" |