# 当分支 main 有 push 事件,并且此次 push 包含了 demo 目录下的文件时触发,使用 GitHub Actions 执行 name: SYNC DEMO on: push: branches: - main paths: - 'demo/**' jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 # 1. clone 仓库 github.com/dufu1991/stdf - name: Clone stdf uses: actions/checkout@v3 with: repository: dufu1991/stdf token: ${{ secrets.STDF_GITHUB_TOKEN }} path: stdf # 2. 读取 packages/stdf/package.json 中的 version 字段,作为 stdf 的最新版本 - name: Get version id: version run: | echo version=$(cat packages/stdf/package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[[:space:]]') >> $GITHUB_OUTPUT # 3. cd 到 stdf/demo 文件内,初始化本地仓库 # 将 demo/src/App.svelte 文件内的 ../../packages/stdf/components 替换为 stdf # 将 demo/src/App.svelte 文件内的 ../../packages/stdf/lang 替换为 stdf/dist/lang # 将 demo/src/pages 目录下的所有子孙 .svelte 文件内的 ../../../../packages/stdf/components 替换为 stdf # 将 demo/package.json 内的第 10 行增加内容为 stdf,版本号为 ${{ steps.version.outputs.version }} # 将 demo 目录下的所有文件提交到本地仓库,提交信息为 Github Actions auto commit: update demo from stdf. - name: Init stdf demo run: | cd stdf/demo git init git config --global user.name 'GitHub Actions' git config --global user.email 'GitHub Actions' sed -i 's|../../packages/stdf/components|stdf|g' src/App.svelte sed -i 's|../../packages/stdf/lang|stdf/dist/lang|g' src/App.svelte sed -i 's|../../../../packages/stdf/components|stdf|g' src/pages/**/*.svelte sed -i '10a\ "stdf": "^${{ steps.version.outputs.version }}",' package.json git add . git commit -am "Github Actions auto commit: update demo from stdf." # 4. 将修改内容推送到 git@github.com:dufu1991/demo-stdf.git 的 main 分支 - name: Push to demo-stdf uses: ad-m/github-push-action@master with: github_token: ${{ secrets.STDF_GITHUB_TOKEN }} branch: main force: true directory: stdf/demo repository: dufu1991/demo-stdf