svg

Tahun Baru Wajah Baru: Monorepo, SSG Engine Baru, Theme Baru

other

Mengawali tahun baru 2023, aku putuskan untuk mencoba hal baru:

  • Mengganti SSG situs ini dari Hugo ke Zola, tidak ada alasan khusus, iseng saja.
  • Mengganti Tema situs ini.
  • Memindahkan situs ini dari Netlify ke Cloudflare Pages.
  • Mencoba monorepo untuk situs ini, alasannya karena biasa coba-coba SSG (Jekyll, Hugo, Zola, dll). Awalnya setiap SSG aku buatkan branch baru, lama-lama terasa ribet. Untuk menyederhanakan maka aku ubah jadi monorepo. Setiap SSG punya folder sendiri dalam satu branch yang sama. Benefitnya, lebih mudah maintain, reuse static assets jadi mudah.

Ngomong-ngomong Cloudflare Pages ini cukup straight forward ketika combine dengan github action. Cukup bikin project di cloudflare page, setup custom domain di cloudflare page, generate token profile cloudflare, bikin github action di github repo dan selesai.

Berikut ini contoh github action untuk deploy ssg zola ke cloudflare pages

cat .github/workflows/zola.yml
name: "Zola: build the website and publish to cloudflare page"

on:
  # detect push event in branch monorepo and change directory zola
  push:
    branches: 
      - monorepo
    paths:
      - "zola/**"
  # detect push event in branch monorepo and change directory zola
  pull_request:
    branches:
      - monorepo
    paths:
      - "zola/**"

  # allow to trigger manually via dashboard
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-22.04

    concurrency:
      group: ${{ github.workflow }}-${{ github.ref }}

    steps:
      - name: Git checkout and update theme
        uses: actions/checkout@v3
        with:
          submodules: true
          fetch-depth: 0

      - name: Install and run zola build
        run: |
          sudo snap install --edge zola
          cd zola
          zola build --base-url https://www.sumarsono.com
      
      - name: Publish to cloudflare pages
        uses: cloudflare/wrangler-action@2.0.0
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          command: pages publish zola/public --project-name=zola --commit-dirty=true --branch=main

Happy new year 2023!