Rumah > Artikel > hujung hadapan web > Mengemas kini kandungan tapak web mengikut jadual melalui Tindakan GitHub
Saya ingin berkongsi perjalanan saya membina sistem pengurusan kandungan lestari sendiri yang tidak memerlukan pangkalan data kandungan dalam erti kata tradisional.
Kandungan (catatan blog dan penanda halaman) tapak web ini disimpan dalam pangkalan data Notion:
Masalah yang saya cuba selesaikan ialah tidak perlu menggunakan tapak web secara manual selepas setiap penanda halaman yang saya tambahkan di sana. Dan selain itu – pastikan pengehosan semurah mungkin, kerana bagi saya ia tidak begitu penting betapa pantas penanda halaman yang saya tambahkan pada pangkalan data Notion saya berakhir dalam talian.
Jadi, selepas beberapa penyelidikan saya menghasilkan persediaan berikut:
Sistem ini terdiri daripada beberapa komponen:
Mari kita lihat setiap satu daripada mereka dari dalam ke luar secara terperinci.
Tidak banyak yang boleh dikatakan di sini, persediaan yang agak standard, – apabila terdapat tolakan ke cawangan utama, aliran kerja ini membina apl dan menggunakan ia ke Cloudflare Pages menggunakan Wrangler CLI:
name: Push to Main on: push: branches: [main] workflow_dispatch: {} jobs: deploy-cloudflare-pages: runs-on: ubuntu-latest timeout-minutes: 5 steps: - name: Checkout uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version-file: .node-version cache: pnpm - name: Install node modules run: | pnpm --version pnpm install --frozen-lockfile - name: Build the App run: | pnpm build - name: Publish Cloudflare Pages env: CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} run: | pnpm wrangler pages deploy ./out --project-name ${{ secrets.CLOUDFLARE_PROJECT_NAME }}
Aliran Kerja ini hanya boleh dicetuskan "secara manual"... tetapi juga secara automatik kerana anda boleh mencetuskannya menggunakan Token Akses Peribadi GitHub, a.k.a. PAT. Saya pada mulanya menulisnya kerana saya mahu menggunakan perubahan daripada telefon saya. Ia memuat turun siaran dan penanda halaman menggunakan API Notion dan kemudian – jika terdapat sebarang perubahan pada pangkalan kod – membuat komitmen dan menolaknya. Untuk berfungsi dengan betul, aliran kerja ini mesti disediakan dengan PAT yang mempunyai "akses Baca dan Tulis kepada kod" repositori:
name: Update Content on: workflow_dispatch: {} jobs: download-content: runs-on: ubuntu-latest timeout-minutes: 5 steps: - name: Checkout uses: actions/checkout@v4 with: # A Github Personal Access Token with access to the repository # that has the follwing permissions: # ✅ Read and Write access to code token: ${{ secrets.GITHUB_PAT_CONTENT }} - name: Setup pnpm uses: pnpm/action-setup@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version-file: .node-version cache: pnpm - name: Install node modules run: | pnpm --version pnpm install --frozen-lockfile - name: Download articles content from Notion env: NOTION_KEY: "${{ secrets.NOTION_KEY }}" NOTION_ARTICLES_DATABASE_ID: "${{ secrets.NOTION_ARTICLES_DATABASE_ID }}" run: | pnpm download-articles - name: Download bookmarks content from Notion env: NOTION_KEY: ${{ secrets.NOTION_KEY }} NOTION_BOOKMARKS_DATABASE_ID: ${{ secrets.NOTION_BOOKMARKS_DATABASE_ID }} run: | pnpm download-bookmarks - name: Configure Git run: | git config --global user.email "${{ secrets.GIT_USER_EMAIL }}" git config --global user.name "${{ secrets.GIT_USER_NAME }}" - name: Check if anything changed id: check-changes run: | if [ -n "$(git status --porcelain)" ]; then echo "There are changes" echo "HAS_CHANGED=true" >> $GITHUB_OUTPUT else echo "There are no changes" echo "HAS_CHANGED=false" >> $GITHUB_OUTPUT fi - name: Commit changes if: steps.check-changes.outputs.HAS_CHANGED == 'true' run: | git add ./src/content git add ./public git commit -m "Automatic content update commit" git push
Yang ini agak mudah: ia hanya berjalan sekali-sekala dan mencetuskan aliran kerja di atas. Untuk berfungsi dengan betul, aliran kerja ini mesti disediakan dengan PAT GitHub yang mempunyai "akses Baca dan Tulis kepada tindakan" repositori. Dalam kes saya ia adalah PAT yang berbeza:
name: Update Content on Schedule on: schedule: - cron: "13 0,12 * * *" workflow_dispatch: {} jobs: trigger-update-content: runs-on: ubuntu-latest timeout-minutes: 5 steps: - name: Checkout uses: actions/checkout@v4 - name: Dispatch the Update Content workflow env: # A Github Personal Access Token with access to the repository # that has the follwing permissions: # ✅ Read and Write access to actions GH_TOKEN: ${{ secrets.GITHUB_PAT_ACTIONS }} run: | gh workflow run "Update Content" --ref main
Bagi saya persediaan ini telah terbukti sangat bagus dan fleksibel. Oleh kerana struktur modular, tindakan "Kemas Kini Kandungan" boleh dicetuskan secara manual - mis. dari telefon saya semasa dalam perjalanan. Bagi saya ini adalah satu lagi pengalaman berharga peningkatan progresif aliran kerja.
Semoga anda mendapati ini membantu ?
Atas ialah kandungan terperinci Mengemas kini kandungan tapak web mengikut jadual melalui Tindakan GitHub. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!