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.pyusai status siap. - Menyimpan
barcode.pngke 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.getsizeuntuk 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.pngdengan 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.
Komentar
0 komentar
Masuk ke akun kamu untuk ikut berkomentar.
Belum ada komentar
Jadilah yang pertama ikut berdiskusi!