Sign inGet Started

Memeriksa template email di CI

bird email templates check memeriksa template email Anda dari sistem CI mana pun dan keluar dengan kegagalan jika suatu perubahan akan merusaknya, sehingga pull request menangkap masalah sebelum penerima menemukannya. Perintah ini hanya membaca: tidak ada yang dikirim dan tidak ada perubahan draf.

Sebelum Anda mulai

  • Instal bird CLI dengan versi yang dipatok, agar rilis baru tidak pernah mengubah pipeline Anda tanpa pemberitahuan.
  • Buat kunci API dengan akses baca ke email_management dan sediakan untuk job sebagai BIRD_API_KEY.

Memeriksa template

Contoh kode
bird email templates check welcome-email order-shipped
Perintah ini merender draf setiap template dalam setiap bahasa yang dimilikinya, karena terjemahan bisa rusak sendiri, dan melaporkan per template dan bahasa:
  • Dukungan klien email: temuan kompatibilitas yang sama seperti yang ditampilkan pratinjau template, misalnya CSS yang dihapus atau diabaikan oleh klien.
  • Ukuran: body HTML dibandingkan dengan titik pemotongan Gmail sekitar 102 KB. Gmail menyembunyikan semua yang melewati batas itu di balik tautan. Di atas 90 KB pemeriksaan memberi peringatan, karena nilai merge bisa mendorong pesan melewati batas.
  • Tautan dan gambar: setiap URL http dan https dalam tautan (<a> dan <area>), sumber gambar atau srcset, atribut background, atau CSS url() dalam atribut style atau blok <style>, diambil dari tempat perintah dijalankan. 404, 410, atau 5xx, atau host yang tidak ada, adalah masalah. 401, 403, atau 429, atau pencarian DNS yang kehabisan waktu, adalah peringatan, karena biasanya berarti runner ditolak atau tidak bisa menjangkau host. Tautan ke alamat privat atau loopback tidak pernah diambil. Gunakan --skip-links pada runner tanpa akses jaringan keluar.
Tautan yang dibangun dari variabel template, field kontak, atau tautan berhenti berlangganan tidak diambil, karena pratinjau tidak bisa mengisinya dengan nilai yang diterima penerima. Laporan mencantumkannya di bawah unverified_links, dengan bagian per-penerima ditampilkan sebagai {variable}, dan --annotations github mencetaknya sebagai pemberitahuan agar pull request menunjukkan apa yang tidak diperiksa.
Perintah ini mencetak laporan JSON ke stdout: valid untuk keseluruhan proses, lalu satu entri per template dan bahasa dengan findings-nya. Setiap temuan memiliki severity, area (compatibility, size, atau links), message, dan biasanya fix. problem menggagalkan pemeriksaan; warning dilaporkan dan tidak pernah menggagalkannya.

Memeriksa file yang dirender oleh build Anda

Jika build Anda merender template sendiri, misalnya dengan MJML atau React Email, periksa file yang dihasilkannya:
Contoh kode
bird email templates check --html dist/welcome.html --template welcome-email --annotations github
File dipratinjau sebagai konten yang belum disimpan terhadap template yang Anda tentukan, jadi tidak ada perubahan draf; template apa pun bisa digunakan. Dengan --annotations github, temuan kompatibilitas ditempatkan pada baris file yang dirujuknya, dan temuan ukuran serta tautan dianotasi pada file secara keseluruhan.

Kode keluar

Kode keluar adalah dasar percabangan job CI Anda:
Kode keluarArti
0Tidak ada masalah. Peringatan mungkin tetap dilaporkan.
7Pemeriksaan berjalan dan menemukan setidaknya satu masalah. Laporan menyebutkan masing-masing.
3Template yang Anda tentukan tidak ada di workspace ini.
4Kunci API tidak ada, tidak valid, atau tidak memiliki akses baca ke email_management.
6Terkena pembatasan laju permintaan atau kesalahan server sementara. Coba lagi setelah jeda retry_after.
Mencoba lagi pada 7 tanpa perubahan akan gagal dengan cara yang sama, jadi hanya 6 yang layak dicoba lagi.

Menjalankannya di GitHub Actions

Dengan --annotations github, perintah mencetak temuan sebagai anotasi GitHub Actions alih-alih laporan JSON, sehingga muncul di pemeriksaan pull request. Workflow ini memeriksa template yang dirender oleh build Anda pada setiap pull request yang mengubahnya:
Contoh kode
name: Email templates
on:
  pull_request:
    paths: ["emails/**"]
jobs:
  check:
    # Pull requests from forks get no repository secrets, so the check could only exit 4.
    if: ${{ !github.event.pull_request.head.repo.fork }}
    runs-on: ubuntu-latest
    env:
      BIRD_API_KEY: ${{ secrets.BIRD_API_KEY }}
    steps:
      - uses: actions/checkout@v4
      - name: Install the bird CLI
        run: curl -fsSL https://cli.bird.com/install.sh | sh -s -- --version "${{ vars.BIRD_CLI_VERSION }}"
      - name: Build the templates
        run: npm ci && npm run build:emails
      - name: Check the templates
        run: |
          status=0
          for file in dist/emails/*.html; do
            bird email templates check --html "$file" --template welcome-email --annotations github || status=$?
          done
          exit "$status"
Atur BIRD_CLI_VERSION sebagai variabel repositori ke rilis yang telah Anda uji, dan secret BIRD_API_KEY ke kunci dengan akses baca ke email_management. GitHub tidak memberikan secret repositori ke pull request dari fork, sehingga workflow melewatinya. Periksa perubahan dari fork sebelum menggabungkannya dengan mendorong perubahan yang sama ke cabang di repositori Anda. Di sistem CI lain, jalankan perintah yang sama dan gagalkan job pada kode keluar bukan nol.

Pemecahan masalah

  • Exit 3. Template tidak ada di workspace yang dimiliki kunci API. Daftar template workspace dengan bird email templates list.
  • Exit 4. Kunci tidak memiliki akses baca ke email_management, atau secret tidak sampai ke job.
  • Setiap tautan gagal dengan peringatan. Runner tidak memiliki akses jaringan keluar, atau firewall memblokirnya. Jalankan dengan --skip-links di sana, dan periksa tautan dari runner yang bisa menjangkau internet.

Langkah selanjutnya