Barcode Otomasi Release menjawab kebutuhan membaca status release secara visual dan otomatis. Dengan Libre Barcode sebagai font numerik/open-source, Anda bisa menyematkan badge unik setiap kali pipeline selesai memvalidasi checklist linting dan pengujian, lalu mengekspor grafik tersebut sebagai artefak atau bagian dashboard otomasi.

Menyiapkan Libre Barcode untuk Barcode Otomasi Release

Libre Barcode menyediakan font monospace yang cocok untuk menampilkan angka atau kode unik tanpa mengubah data aslinya. Untuk pipeline, cukup pasang font LibreBarcode128Text-Regular.ttf dan gunakan pustaka seperti Pillow di Python untuk merender teks menjadi PNG.

File font dapat diunduh dari repositori resmi. Simpan di folder ci/fonts, lalu sertakan langkah instalasi di pipeline dengan menyalin file ke container build.

Contoh skrip Python generate_barcode.py

from pathlib import Path
from PIL import Image, ImageDraw, ImageFont

release_id = Path('RELEASE_ID.txt').read_text().strip()
status = Path('CHECKLIST_STATUS.txt').read_text().strip()
text = f"{release_id}-{status}"

font = ImageFont.truetype('fonts/LibreBarcode128Text-Regular.ttf', size=64)
img = Image.new('RGB', (len(text) * 60, 120), 'white')
draw = ImageDraw.Draw(img)
draw.text((10, 10), text, font=font, fill='black')
img.save('artifacts/barcode.png')

Script membaca file release ID dan status checklist, menghasilkan barcode dengan font Libre Barcode. Pastikan folder artifacts dibuat sebelumnya dan terdaftar sebagai output artifact.

Menyiapkan Langkah CI/CD

Susun pipeline agar menghasilkan nilai release ID, menjalankan lint dan uji, kemudian mencatat status masing-masing. Berikut alur umum:

  • Mengambil commit SHA dan menambah tag versi (misal RELEASE_ID=$(git rev-parse --short HEAD)).
  • Menjalankan linting dan unit test, mencatat hasilnya dalam file checklist.
  • Menjalankan python generate_barcode.py usai status siap.
  • Menyimpan barcode.png ke artefak yang dapat diunduh atau ditampilkan di dashboard status.

Contoh langkah GitHub Actions:

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.x'
      - name: Copy Libre Barcode font
        run: mkdir -p fonts && cp ci/fonts/LibreBarcode128Text-Regular.ttf fonts/
      - name: Run lint
        run: npm run lint && echo "lint=ok" > CHECKLIST_STATUS.txt
      - name: Run tests
        run: npm test && echo "tests=ok" >> CHECKLIST_STATUS.txt
      - name: Generate release metadata
        run: |
          echo "$(git rev-parse --short HEAD)" > RELEASE_ID.txt
          python generate_barcode.py
      - name: Upload barcode artifact
        uses: actions/upload-artifact@v4
        with:
          name: release-barcode
          path: artifacts/barcode.png

Langkah lint dan tests harus menulis status agar dapat ditampilkan di barcode. Jika salah satu gagal, script bisa menuliskan status seperti lint=failed, lalu pipeline otomatis menolak rilis.

Mengekspor dan Memverifikasi Barcode

Simpan barcode.png sebagai artefak atau unggah ke dashboard CI/CD Anda, misalnya dalam build overview atau notifikasi release. Selain berguna secara visual, barcode juga bisa dibaca kembali menggunakan tool seperti zbarimg atau pyzbar untuk verifikasi otomatis status release.

Contoh skrip verifikasi sederhana:

from pyzbar.pyzbar import decode
from PIL import Image

data = decode(Image.open('artifacts/barcode.png'))
if not data:
    raise SystemExit('Barcode tidak terbaca')
print(data[0].data.decode())

Skrip ini bisa dijalankan di stage monitoring untuk memastikan artefak yang tersimpan sesuai dengan metadata release. Jika nilai tidak cocok, pipeline dapat mengirim alert atau membatalkan deploy.

Tips Operasional dan Trade-off

  • Ukuran dan format: Barcode berbasis font tidak menyediakan checksum otomatis, jadi tetap pertahankan metadata tambahan (misalnya file JSON) untuk validasi.
  • Debugging: Jika hasil render kosong, periksa path font dan ukuran canvas. Gunakan ImageFont.getsize untuk menyesuaikan lebar.
  • Lint/test coverage: Jangan hanya menandai status selesai jika pipeline memaksa lulus. Sertakan log lint/test yang jelas di artefak tambahan agar barcode dapat dipercaya.
  • Integrasi dashboard: Banyak dashboards CI/CD memungkinkan menampilkan artefak sebagai preview; unggah barcode.png dengan nama konsisten agar otomatis muncul di release view.

Dengan pendekatan ini, tim dapat membaca status release dalam sekali pandang: barcode menjelaskan versi dan status lint/test, sementara artefak dan skrip verifikasi memastikan keakuratan otomasinya.