জেনকিনস: বিল্ড পরিবেশ হিসাবে ডকারকে ব্যবহারের অনুমতি ইস্যু


11

আমি জেনকিন্স একটি উবুন্টু 16.04 মেশিনে ইনস্টল করেছি। জেনকিনস নিজেই একটি পাত্রে চালিত হয় না। আমি যা করতে চাই তা হল কেবল yarn installনোড চিত্র ব্যবহার করে কল করা। সুতরাং এখানে আমার জেনকিনসফাইল:

pipeline {
    agent any
    stages {
        stage('install node modules...') {
            agent { docker 'node' }
            steps {
                sh 'cd /path/to/package.json; yarn install'
            }
        }
    }
}

বেশ সোজা, ঠিক?

জেনকিন্স ব্যবহারকারী / গোষ্ঠী 112:116এবং নোড ধারকটির uid হয় 1000, সুতরাং সুতা প্রক্রিয়া (যা নোড ব্যবহারকারী 1000 হিসাবে চালিত হয়) এর মতো কাজগুলি করতে পারে না mkdir /.config

আমি যুক্তিতে নোড পাত্রে পাস -u 1000করার চেষ্টা করেছি, টেকসই ডিরেক্টরিগুলি তৈরি করার চেষ্টা করার সময় এটি অনুমতি সংক্রান্ত সমস্যার মধ্যে ঝাঁপিয়ে পড়ে।

এটি এক বা অন্য ধরণের ইস্যুর মতো দেখায়, আমি কীভাবে এটি ঘিরে কাজ করতে পারি?

জেনকিনস লগ:

নীচে যেখানে বিল্ডটি শুরু হয় এবং ব্যর্থ হয়।

[Pipeline] sh
[Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2] Running shell script
+ docker inspect -f . node
.
[Pipeline] withDockerContainer
Jenkins does not seem to be running inside a container
$ docker run -t -d -u 112:116 -w /var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2 -v /var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2:/var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2:rw,z -v /var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2@tmp:/var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat node
[Pipeline] {
[Pipeline] sh
[Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2] Running shell script
+ cd /path/to/package.json
+ yarn install
yarn install v0.24.6
error An unexpected error occurred: "EACCES: permission denied, mkdir '/.config'".
info If you think this is a bug, please open a bug report with the information provided in "/var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2/<path>/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
[Pipeline] }
$ docker stop --time=1 c1147934ea689f71a449e486282db03338b12182368def31bdf8e8cf179ab46a
$ docker rm -f c1147934ea689f71a449e486282db03338b12182368def31bdf8e8cf179ab46a
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE

দয়া করে লগগুলি যুক্ত করুন
030

লগগুলি সংযুক্ত করেছেন। আমি জেনকিন্সকে তার অফিসিয়াল ডকার ইমেজটি ব্যবহার করে চালানোর চেষ্টা করেছি, যা সূক্ষ্মভাবে কাজ করে, কারণ সেই ডকার চিত্রের জেনকিন্স ব্যবহারকারী 1000, যা নোড চিত্রের নোড ব্যবহারকারী হিসাবে একই ইউআইডি।
মাইকেল 11

সেলিনাক্স কি সক্ষম এবং কার্যকর করা হচ্ছে?
জেমস শেইভ

পছন্দ করেছেন আমি কেবল একটি উবুন্টু এএমআই ই সি 2 উদাহরণটি বিস্তৃত করি।
মাইকেল 23

আমি বিশ্বাস করি তারা এটিকে অক্ষম করে, তবে "সিস্টেস্টাস" দিয়ে পরীক্ষা করুন। এটি চালু থাকলে এটি বন্ধ করার চেষ্টা করুন।
জেমস শেই

উত্তর:


8

নোড নিয়ে আমারও একই সমস্যা ছিল। জিনিসটি ধারকটিতে থাকা ফাইলগুলি "রুট: রুট" এর মালিকানাধীন। ডকার আরগ যুক্ত করার চেষ্টা করুন -u root:root:

docker { 
    image 'node:8'
    args '-u root:root'
}

সমাধান আমার জন্যও কাজ করেছিল। কেন এটি জেনকিন্স ডকুমেন্টেশনে নেই? (আমার ইস্যুটি একটি সাধারণ pip installকমান্ডের সাথে হয়েছিল যার ফলস্বরূপ Could not install packages due to an EnvironmentError: [Errno 13] Permission deniedলোকেরা এটির অনুসন্ধানে সহায়তা করার জন্য এটি এখানে উল্লেখ করা হয়েছে Even এমনকি আমার পক্ষে সমস্যাটি ব্যবহার virtualenvবা সমাধান করা pip install --userহয়নি)
রাব্রেস্কি

3

আমার ঠিক আজ একইরকম সমস্যা ছিল, যদিও অন্য একটি চিত্রের সাথে।

docker {
 image 'node:8'
 args '--tmpfs /.config'
}

তথ্যসূত্র: https://docs.docker.com / স্টোরেজ /tmpfs/ এইভাবে জেনকিনসের অভ্যন্তরে ধারকটি ধ্বংস হওয়ার পরে উপস্থিত কোনও সুরক্ষা ফাঁস বা ফাইলগুলি নিয়ে আপনাকে উদ্বিগ্ন হওয়া উচিত নয়।


3

buildEnv.inside("-u 0") {}আমার সমস্যা সমাধান তবে তারপরে ওয়ার্কস্পেসে ডিরেক্টরি এবং মূলের মালিকানাধীন ফাইল থাকবে যা কর্মক্ষেত্রটি পরিষ্কার করার পরে ব্যবহারকারীর জেনকিন্স দ্বারা পরবর্তী সময়ে মুছে ফেলা যাবে না, তাই আমি sh "sudo chown jenkins: -R \$PWD/" পাইপলাইনের শুরুতে যুক্ত করেছি ।


আমি অনুরূপ পন্থা ব্যবহার করেছি, তবে শুরুতে পাইপলাইনের পরিবর্তে পাইপলাইনের "ক্লিনআপ" পদক্ষেপ হিসাবে শেষে 'sh "chmod -R a + w \ $ PWD"' চালিয়েছি। জেনকিন্স ব্যবহারকারী আমার ধারক মধ্যে সংজ্ঞায়িত করা হয় নি, এবং sudo উপলব্ধ ছিল না। আমি ফাইলগুলিও মুছতে পারতাম, তবে ভেবেছিলাম কিছু ভুল হয়ে গেলে তদন্তের জন্য রাখাই ভাল be
অলিভিয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.