Apa alasan untuk tidak menggunakan Bitbucket-server untuk menyimpan artefak?

10

Saya bekerja dengan perusahaan yang membuat proyek baru, dan kita berbicara tentang alat apa yang digunakan untuk apa. Saya berbicara tentang Artifactory atau Nexus untuk menyimpan artefak yang dibuat (APK dalam kasus ini), dan mereka bertanya mengapa mereka tidak bisa menggunakan Bitbucket seperti yang akan mereka gunakan untuk perangkat lunak, untuk mengurangi jumlah alat yang perlu mereka instal dan pelihara.

Respons awal saya adalah "Sumber masuk dalam repo sumber dan artefak masuk dalam repo artefak", tetapi itu sebenarnya bukan jawaban mengapa atau mengapa tidak. Bahkan Googling di sekitar tidak menawarkan alasan apa pun.

MENAMBAHKAN INI: Produk ini untuk industri yang diatur. Itu berarti kita membutuhkan catatan lengkap artefak yang dibuat berversi dan versi yang dapat diaudit. Ini adalah salah satu alasan kami melihat ini. Juga, seperti yang saya katakan di beberapa komentar tetapi akan ditambahkan di sini, kami akan menginstal Bitbucket di GCP pribadi yang tidak dapat diakses oleh publik, sehingga tidak ada kekhawatiran tentang orang lain yang mengaksesnya.

Adakah masukan ke dalam ini? Adakah yang akan menggigit kita nanti jika kita menyimpannya di Bitbucket?

dj_segfault
sumber

Jawaban:

11

Alasan tidak menyimpan binari besar di gitrepositori:

  • Semua orang yang mengkloning repositori Anda akan mengunduh semua binari itu, secara default. Binari, jika dibangun secara teratur, cenderung mengkonsumsi sejumlah besar penyimpanan, dibandingkan dengan kode sumber - gittidak dapat memampatkannya, atau menghitung delta, untuk mengurangi ukurannya.
  • gitberusaha keras untuk memastikan riwayat tidak hilang, itu tidak akan pernah menghapus apa pun yang merupakan bagian dari sejarah apa pun ref(cabang atau tag). Itu juga berarti bahwa jika nanti Anda memutuskan untuk menghapus binari lama yang tidak berguna karena kehabisan ruang, Anda akan menemukan bahwa, walaupun bukan tidak mungkin, memang sangat sulit.
  • Salah satu poin dari toko artefak yang tepat adalah mereka membantu menghapus bagian yang sudah usang atau rusak. gittidak dapat benar-benar melakukan itu untuk Anda - Anda harus menulis alat Anda sendiri untuk itu - dan Anda tidak akan pernah menyingkirkan versi lama dalam sejarah.
  • Konsep "komit" tidak benar-benar berlaku untuk binari. Anda memerlukan operasi seperti "unggah" dan "unduh", karena mereka secara teratur terlibat dalam proses pembuatan perangkat lunak Anda (yaitu, bundlerdi dunia ruby, atau mavendi Jawa). Para pembangun itu tahu cara mengambil perpustakaan pihak ke-3 dari repositori artefak dengan mudah, dan cara mengunggah versi baru. Mereka mungkin diyakinkan untuk bekerja dengan gitrepositori untuk unduhan, tetapi karena gittidak memiliki informasi versi, Anda perlu lagi memiliki alat sendiri, tentukan komit untuk menemukan biner itu secara manual, atau memeriksa semua biner yang pernah digunakan memeriksa secara lokal. Dan mengunggah ke gitrepositori, sekali lagi, akan menggunakan alat Anda sendiri (juga membuat komit palsu).

Secara total, menggunakan gituntuk itu hanyalah alat yang salah. Jika kolega Anda takut menambahkan alat rumit lain seperti Nexus, maka setidaknya meyakinkan mereka untuk menggunakan alat sederhana alih-alih git- seperti beberapa arbitrer (s)ftp/ scprepositori di VM di suatu tempat, dengan httpsakses melalui server web sederhana.

Jika Anda harus menggunakan git, maka setidaknya pastikan binari build tidak dikomit bersama dengan kode sumber, tetapi di bagian sejarah mereka sendiri. Lihatlah jawaban yang lebih tua ini untuk melihat cara membuat cabang yatim . Setidaknya itu bisa dihapus nanti, dan binari sendiri dihapus oleh pengumpulan sampah; dan tidak setiap klien dipaksa untuk mengunduh semuanya sepanjang waktu.

AnoE
sumber
Silakan lihat apa yang saya tambahkan ke pertanyaan asli setelah membaca pertanyaan Anda. Kami membutuhkan catatan lengkap dari semua artefak yang dibangun. Saya ingin tahu tentang pernyataan Anda "Git tidak memiliki informasi versi". Itulah yang dilakukan git, dan membuat versi artefak buatan adalah apa yang kita butuhkan. Kami juga sedang membangun APK yang bukan perpustakaan untuk disertakan dalam bangunan lain. WRT memeriksa sumber dan binari bersama, ya saya akan berharap untuk menggunakan repo berbeda untuk binari. Terima kasih.
dj_segfault
2
Maksud saya "informasi versi" dalam arti semantik - repositori artefak tahu bahwa artefak tunggal (nama) dapat memiliki beberapa versi; memberi Anda yang "terbaru" dan seterusnya. Dari komentar Anda, fakta bahwa Anda menggunakan repositori yang berbeda adalah penting dan harus masuk ke pertanyaan juga; itu akan mengubah seluruh sudut pandang. Jawaban saya berasumsi bahwa kolega Anda ingin mengkomit binari build bersama dengan kode sumber.
AnoE
5

Anda dapat menggunakan repositori Git (apakah itu di-host di Bitbucket atau tidak) sebagai repositori artefak, tetapi Anda harus menyadari bahwa:

  • Git awalnya dibuat sebagai sistem kontrol versi untuk kode sumber , bukan untuk data biner (besar), dan ini masih menjadi perhatian utama. Ada ekstensi yang memungkinkan bekerja dengan file besar di Git secara efisien, misalnya Git LFS , tapi tetap saja: Itu tidak dibangun ke dalam inti Git.
  • Repositori artefak yang tepat memiliki fitur yang tidak mudah disediakan oleh layanan berbasis Git. Misalnya Anda mungkin ingin menghapus artefak snapshot yang lebih lama, operasi yang Git tidak dirancang untuknya, tetapi apa yang merupakan fitur inti dari repositori artefak. Beberapa fitur lain dijelaskan dalam jawaban atas pertanyaan. Apa itu repositori artefak? .

Jadi, sementara Anda dapat menggunakan Git / Bitbucket sebagai repositori artefak, itu seperti mengendarai sekrup dengan palu alih-alih obeng.

siegi
sumber
0

Jika Anda akan menyimpan file apk di dalam repo Bitbucket, Anda perlu menggunakan git atau menggulungnya untuk mengkloning. Dan jika repo pribadi Anda perlu memiliki akses ke sana, batasan ukuran dll.

Repositori Perangkat Lunak lebih nyaman untuk menyimpan file biner. Anda dapat membuat mirror sendiri dari maven, google repos.

Meiram Chuzhenbayev
sumber
Sudut yang menarik. Kebetulan aplikasi ini adalah aplikasi Android yang akan selalu dimuat, bukan dari app store. Repo yang bersifat pribadi merupakan nilai tambah bagi kami. Saya setuju semua ini akan lebih menjadi masalah jika kita berbicara tentang perpustakaan untuk dimasukkan dalam bangunan lain. Terima kasih atas masukan Anda.
dj_segfault
0

Anda dapat menggunakan pipa bitbucket untuk digunakan ke bagian unduhan dan menyimpan artefak Anda di sana. Ini adalah contoh dari dokumentasi mereka

manasouza
sumber
Saya menemukan itu dan berpikir itu adalah ide yang bagus, tetapi saya BERPIKIR (belum menemukan dokumen yang mengatakan secara pasti) unduhan hanya untuk versi cloud mereka. Kami memasang Bitbucket di lingkungan kami. Apakah itu masih berfungsi?
dj_segfault
@dj_segfault, Bitbucket Pipelines (dan mungkin juga bagian unduhan) adalah (saat ini?) "hanya cloud", lihat pertanyaan ini di forum dukungan Atlassians dan BSERV-9245 dalam pelacak bug mereka .
siegi
0

Seperti yang orang lain katakan, Anda tidak akan memeriksa binari menjadi git. Namun, Bitbucket menawarkan area "Unduhan" terpisah per-repo. Ini adalah area terpisah, bukan bagian dari git repo. Jika menggunakan Bitbucket Pipelines, Anda bahkan bisa mengotomatiskan penyebaran ke area unduhan , jika itu sesuai dengan alur kerja.

crazyscot
sumber