Add sync & build workflow

This commit is contained in:
qiqi 2024-12-06 14:36:54 +08:00
parent 54080c0563
commit d826b37856

77
.github/workflows/timqi.yml vendored Normal file
View File

@ -0,0 +1,77 @@
name: Upstream Sync & Build Docker Image
permissions:
contents: write
on:
schedule:
- cron: "0 0 * * *" # every day
workflow_dispatch:
jobs:
sync_and_build:
name: Sync latest commits from upstream repo & Build docker image
runs-on: ubuntu-latest
if: ${{ github.event.repository.fork }}
steps:
- name: Checkout target repo
uses: actions/checkout@v3
- name: Sync upstream changes
id: sync
uses: aormsby/Fork-Sync-With-Upstream-action@v3.4
with:
upstream_sync_repo: ChatGPTNextWeb/ChatGPT-Next-Web
upstream_sync_branch: main
target_sync_branch: main
target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set
test_mode: false
- name: Sync check
if: failure()
run: |
echo "[Error] 由于上游仓库的 workflow 文件变更,导致 GitHub 自动暂停了本次自动更新,你需要手动 Sync Fork 一次详细教程请查看https://github.com/Yidadaa/ChatGPT-Next-Web/blob/main/README_CN.md#%E6%89%93%E5%BC%80%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0"
echo "[Error] Due to a change in the workflow file of the upstream repository, GitHub has automatically suspended the scheduled automatic update. You need to manually sync your fork. Please refer to the detailed tutorial for instructions: https://github.com/Yidadaa/ChatGPT-Next-Web#enable-automatic-updates"
exit 1
- name: Log in to Docker Hub
uses: docker/login-action@v2
if: steps.sync.outputs.has_new_commits == 'true'
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v4
if: steps.sync.outputs.has_new_commits == 'true'
with:
images: timqi/chatgpt-next-web
tags: |
type=raw,value=latest
type=ref,event=tag
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
if: steps.sync.outputs.has_new_commits == 'true'
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
if: steps.sync.outputs.has_new_commits == 'true'
- name: Build and push Docker image
uses: docker/build-push-action@v4
if: steps.sync.outputs.has_new_commits == 'true'
with:
context: .
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max