Bitbucket Pipelines कार्य निष्पादित करने के लिए डॉकर कंटेनर का उपयोग कर रहा है और डिफ़ॉल्ट रूप से डॉकर कंटेनर रूट के रूप में चलते हैं। यह एनपीएम की लाइफसाइक्ल स्क्रिप्ट के लिए एक समस्या है क्योंकि एनपीएम स्क्रिप्ट चलाने पर अपने विशेषाधिकारों को डाउनग्रेड करने का प्रयास करता है।क्या बिटबकेट पाइपलाइन डॉकर कंटेनर में गैर-रूट उपयोगकर्ता में बदलने का कोई आसान तरीका है?
postinstall
स्क्रिप्ट को निष्पादित करते समय, NPM throws an error कि यह cannot run in wd %s %s (wd=%s)
है। सबसे आसान समाधान --unsafe-perm
ध्वज के साथ एनपीएम इंस्टॉल को चलाने के लिए है, लेकिन मुझे यह दृष्टिकोण पसंद नहीं है।
डोकर के best practices Dockerfiles लिखने के लिए कहा गया है कि: एक सेवा विशेषाधिकारों के बिना चला सकते हैं
हैं, तो उपयोग USER किसी गैर-रूट उपयोगकर्ता के लिए बदलने के लिए।
एक विशिष्ट डॉकर कंटेनर को कॉन्फ़िगर करते समय मैं एक नया, गैर-रूट उपयोगकर्ता बनाउंगा और इस उपयोगकर्ता के रूप में अपनी एनपीएम स्क्रिप्ट चलाऊंगा।
Pipelines documentation पढ़ने के बाद मुझे डॉकर के उपयोगकर्ता कमांड के बराबर कोई नहीं मिला। मैं useradd
, chown
और su
(अभी तक परीक्षण नहीं किया गया) का उपयोग करने में सक्षम हो सकता हूं लेकिन क्या कोई आसान समाधान है?
दुर्भाग्य useradd
, chown
और su
bitbucket-pipelines.yml
स्क्रिप्ट खंड को जोड़ने repo:push
webhook में नाकाम रहने में पाइपलाइन और परिणाम टूट जाता है।
image: node:6.2
pipelines:
default:
- step:
script:
- useradd --user-group --create-home --shell /bin/false node
- chown -R node: /opt/atlassian/bitbucketci/agent/build
- su -s /bin/sh -c "npm install" node
- su -s /bin/sh -c "npm run test:coverage --silent" node
पाइपलाइन
{
"code": 500,
"message": "There was an error processing your request. It has been logged (ID <removed>)."
}
प्रश्न। मैं अन्य पाइपलाइन सवालों में इस '/ opt/atlassian/bitbucketci/agent/build' के संदर्भ देख रहा हूं। क्या किसी को पता है कि कंटेनर के लिए एजेंट जानकारी कहां मिल रही है ताकि मैं जेनरेट किए गए बिल्ड को पकड़ सकूं? –