Jalankan pekerja armada
Jalankan cc_worker pada mesin lapang untuk menambah kapasiti pelaksanaan kepada
armada anda. Ia ialah binari Dart tulen — tanpa enjin Flutter — yang berganding
dengan cc_server, mengisytiharkan keupayaan hosnya, menghantar denyutan, menarik
tugas pajakan, melaksanakannya dan menstrim acara proses kembali. Ia tidak
memegang sebarang keadaan berkekalan: penyelia memulakannya semula dan ia
mendaftar semula.
Anda perlu cc_server yang sedang berjalan dahulu — lihat Jalankan pelayan tanpa kepala.
Pekerja yang berganding akan mendaftar, menghantar denyutan dan menunggu tugas
pajakan. Hantar kerja dengan fleet.submitJob. Penghantaran ejen pada pelayan ini
tidak melalui armada; isyarat kejayaan untuk panduan ini ialah pekerja muncul
dalam panel armada dengan denyutan yang baharu. Pekerja dalam proses yang
didaftarkan semasa but mempunyai peta pelaksana yang kosong, jadi tugas yang
diletakkan padanya akan memulangkan No local runner for job kind ….
Prasyarat
Bahagian bertajuk “Prasyarat”- Dart SDK. Repo ini meminkan SDK-nya dengan fvm, jadi awalkan perintah dengan
fvm. - Repositori ini telah di-checkout pada mesin pekerja.
cc_serveryang boleh dicapai (loopback untuk pembangunan, LAN atau jauh untuk pengeluaran).gitpadaPATH— pekerja mematerialkan repo dan menjalankan siasatangit.
Langkah 1: Bina binari
Bahagian bertajuk “Langkah 1: Bina binari”cd apps/cc_workerfvm dart build cliIni menghasilkan bundel serba lengkap di ./build/cli/<os_arch>/bundle/bin/cc_worker.
Langkah 2: Tempa kelayakan pekerja
Bahagian bertajuk “Langkah 2: Tempa kelayakan pekerja”cc_server hanya menerima pekerja yang membentangkan id peranti berpasangan dan
kunci pra-kongsi — termasuk pelayan loopback. Tempakannya pada mesin pelayan
(pair boleh dijalankan semasa pelayan hidup; peranti baharu dikesan tanpa
permulaan semula):
cc_server pair --data-dir <dir> --device my-worker --label "Build box"Ia mencetak Device id dan Pairing key — itulah yang diterima oleh
--device-id dan --psk / --psk-file / CC_WORKER_PSK.
Langkah 3: Mulakan pekerja
Bahagian bertajuk “Langkah 3: Mulakan pekerja”Dengan pelayan yang berganding:
./build/cli/<os_arch>/bundle/bin/cc_worker \ --server wss://host:9030 --device-id my-worker --psk-file /path/to/worker.pskDengan pelayan loopback (masih berganding — cc_server sentiasa menjalankan
jabat tangan PSK):
fvm dart run cc_worker --server ws://localhost:9030 \ --device-id my-worker --psk-file /path/to/worker.psk| Bendera | Keterangan | Lalai |
|---|---|---|
--server <url> |
URL cc_server (ws:///wss://; http(s) dan laluan /rpc yang hilang akan dipaksakan). Wajib. |
— |
--name <name> |
Nama pekerja yang dipaparkan kepada pengendali. | nama hos |
--device-id <id> |
Id peranti berpasangan yang stabil, turut digunakan sebagai id pekerja. | cc-worker |
--psk-file <path> |
Fail yang baris pertama tidak kosongnya ialah kunci penggandingan. Diutamakan berbanding --psk. |
— |
--psk <key> |
Kunci penggandingan pada baris perintah. Kelihatan dalam ps dan sejarah shell — binari memberi amaran. |
— |
--max-jobs <n> |
Had maksimum mutlak bagi tugas yang dilaksanakan serentak oleh proses ini (integer positif). | 4 |
Susunan penyelesaian untuk kunci ialah --psk-file → CC_WORKER_PSK → --psk.
Meninggalkan semua sumber akan melangkau jabat tangan pengesahan pekerja;
cc_server sebenar kemudian menolak sesi itu (auth_denied) daripada menerima
pekerja tanpa pengesahan. Bendera yang tidak dikenali ialah ralat penggunaan
(exit 64) — tidak seperti cc_server, binari ini menggunakan package:args
dan tidak mengabaikan salah taip.
CC_WORKER_CACHE mengatasi direktori cache materialisasi worktree
(lalai: direktori cc_worker_cache di bawah direktori temp sistem).
Pekerja mendaftar dengan fleet.registerWorker, kemudian menghantar denyutan
setiap 20s dan mengundi pajakan setiap 2s. Ia berjalan sehingga
SIGINT/SIGTERM; letakkannya di bawah systemd atau launchd supaya ia dimulakan
semula dan mendaftar semula selepas ranap atau but semula.
Langkah 4: Sahkannya dalam panel armada
Bahagian bertajuk “Langkah 4: Sahkannya dalam panel armada”Buka Kebolehcerapan dalam apl desktop atau web, tukar ke tab Langsung dan tatal ke bawah. Pekerja menyenaraikan setiap pekerja yang berdaftar dengan platform, teras, kunci keupayaan dan denyutan terakhirnya; Tugas menyenaraikan tugas yang diagihkan antara mereka.
Pekerja anda muncul di situ dengan denyutan yang terkini ialah pengesahan bahawa penggandingan dan pendaftaran berjaya.
Dari jubin pekerja anda boleh salirkannya (habiskan tugas semasa, tidak mengambil pajakan baharu), sambung semula pekerja yang menyalir, tarik balik kelayakannya, atau buang baris itu.
Baris pekerja dan tugas terletak dalam global.db pelayan — pekerja itu sendiri
tidak menulis apa-apa ke cakera selain cache materialisasi.
Apa yang dihebahkan oleh pekerja
Bahagian bertajuk “Apa yang dihebahkan oleh pekerja”Semasa pendaftaran, pekerja mengesan keupayaannya secara automatik dan penjadual memadankan tugas dengannya. Anda tidak mengkonfigurasi perkara ini secara manual:
- OS dan seni bina (
macos/linux/windows,arm64/x64) — siasatan tepat, dengan sandaran kepadauname -m/PROCESSOR_ARCHITECTURE - Teras dan RAM — bilangan teras tepat; RAM menurun kepada
0apabila tidak dapat disiasat flutter— ditetapkan apabila SDK Flutter dapat dicapai (flutterkosong, kemudianfvm flutter); tugas render golden memerlukannyasandbox—native-macospada macOS,native-linuxpada Linux. Ini ialah petunjuk penempatan, bukan janji: pekerja menghebahkan bahagian belakang yang ada pada platformnya, tetapi ia tidak membalut tugas yang dilaksanakannya di dalamnya. Tidak seperticc_server,cc_workermelahirkan tugas pajakan secara langsungalways-ondanparallel—cc_workerkhusus sentiasa menghebahkan kedua-duanya, jadi ia layak untuk kumpulan eval dan kapasiti selari sekali guna yang lain
Pengesanan dilakukan sebaik mungkin: apa sahaja yang tidak dapat disiasat akan menurun kepada lalai yang selamat dan bukannya menggagalkan permulaan.
Apa yang akan dilaksanakan oleh pekerja
Bahagian bertajuk “Apa yang akan dilaksanakan oleh pekerja”Protokol pajakan membawa enam jenis tugas:
| Jenis | Apakah ia |
|---|---|
agentRun |
Satu larian ejen tunggal (penghantaran) |
pipelineStep |
Pelaksanaan langkah pipeline |
codeIndex |
Pembinaan indeks kod repo |
goldenRender |
Render golden visual UI (memerlukan flutter) |
benchmark |
Larian benchmark prestasi |
evalBatch |
Kumpulan eval (mengutamakan kapasiti parallel) |
Pelaksanaan ialah pelaksanaan penstriman subproses sebenar, bukan masa jalan ejen
terbenam yang penuh. Apabila pajakan membawa repoRemote, pekerja melakukan
git clone --depth 1 ke direktori cache yang dikunci mengikut remote dan SHA,
kemudian git fetch dan git checkout. Untuk agentRun, ia menjalankan perintah
dalam CC_JOB_COMMAND env pajakan di direktori kerja, menstrim stdout dan stderr
kembali sebagai acara; tanpa CC_JOB_COMMAND ia menggema gesaan supaya
pengangkutan itu tetap diuji dari hujung ke hujung. Jenis lain menjalankan
perintah sebenar yang kecil (git rev-parse HEAD, git --version) sebagai
siasatan yang jujur. Kelayakan berskop tugas dalam env pajakan disuntik ke dalam
setiap subproses dan tidak pernah ditulis ke log.
Acara dikumpulkan dan dikosongkan setiap 250ms atau setiap 32 acara; setiap tugas berakhir dengan acara selesai dan laporan penyiapan. Modelnya ialah denyutan serta pajakan TTL pendek: jika pekerja hilang hubungan, pajakannya tamat tempoh dan pelayan menuai tugas itu untuk cubaan semula. Tiada keadaan berkekalan pada pekerja dan tiada konsensus atau kecurian kerja antara pekerja.