Mengemas kini kandungan tapak web mengikut jadual melalui Tindakan GitHub

PHPz
Lepaskan: 2024-08-17 15:20:01
asal
521 orang telah melayarinya

Saya ingin berkongsi perjalanan saya membina sistem pengurusan kandungan lestari sendiri yang tidak memerlukan pangkalan data kandungan dalam erti kata tradisional.

Masalahnya

Kandungan (catatan blog dan penanda halaman) laman web ini disimpan dalam pangkalan data Notion:

Updating website content on schedule via GitHub Actions

Pangkalan data dengan penanda halaman -  UI 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 seberapa pantas penanda halaman yang saya tambahkan pada pangkalan data Notion saya berakhir dalam talian.

Jadi, selepas beberapa kajian saya menghasilkan persediaan berikut:

Updating website content on schedule via GitHub Actions

Tinjauan tahap tinggi tentang mekanisme penyampaian kandungan

Sistem ini terdiri daripada beberapa komponen:

  • Tindakan "Tekan ke Utama" yang menggunakan perubahan
  • Tindakan "Kemas Kini Kandungan" yang memuat turun kandungan daripada Notion API dan melakukan perubahan
  • Tindakan "Kemas Kini Kandungan pada Jadual" berjalan sekali-sekala dan mencetuskan tindakan "Kemas Kini Kandungan"

Mari kita lihat setiap satunya dari dalam ke luar secara terperinci.

Aliran Kerja "Tekan ke Utama".

Tidak banyak yang boleh diperkatakan di sini, persediaan yang cukup standard, – apabila terdapat dorongan ke cawangan utama, aliran kerja ini membina apl dan menggunakannya 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 }}
Salin selepas log masuk

Aliran Kerja "Kemas Kini Kandungan".

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
Salin selepas log masuk

Aliran Kerja "Kemas Kini Kandungan pada Jadual".

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 kepadaactions" 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
Salin selepas log masuk

Kesimpulan

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!