আমি আমাদের কোডে নতুন পুল অনুরোধ পরীক্ষা করতে একসাথে একটি নতুন জেনকিনস পাইপলাইন পাওয়ার চেষ্টা করছি। আমি ubuntu:14.04
আমাদের উত্পাদন পরিবেশ অনুকরণ করতে ইমেজ সহ ডকার ব্যবহার করছি ।
এখানে একটি ন্যূনতম কাজের উদাহরণ:
#jenkinsfile
stage('Checkout and provision'){
docker.image('ubuntu:14.04').withRun('-u root'){
checkout scm
sh 'chmod -R 770 ./'
sh './init-script.sh'
}
}
এবং
#init-script.sh
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update -y
sudo apt-get dist-upgrade -y
sudo apt-get install \
apache2 \
php \
php-mysql \
php-xml \
libapache2-mod-auth-mysql \
libapache2-mod-php \
php5-curl \
zip \
htop \
supervisor \
mailutils \
git \
build-essential -y
sudo apt-get autoremove -y
এবং /etc/sudoers
ধারকটির জন্য ফাইলটি নিম্নরূপ:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults:jenkins !requiretty
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
jenkins ALL=(ALL:ALL) NOPASSWD:ALL
আমার যে সমস্যাটি হচ্ছে তা হ'ল ডকার মূল হিসাবে চালাচ্ছে না এবং তার পরিবর্তে হোস্ট মেশিন থেকে জেনকিন্স ব্যবহারকারীর আইডি ধরে রাখছি। এটি sudo করা কঠিন করে তোলে।
আমি জেনকিন্স ব্যবহারকারীকে পাত্রে /etc/passwd
ফাইলে যুক্ত করার চেষ্টা করেছি এবং chmod
সেই ফাইলটির বিপরীতে দৌড়াচ্ছি কিন্তু এর থেকে কোনওটিরও অনুমতি নেই jenkinsfile
।
এই কনফিগারেশনটি দিয়ে আমার মূল ব্যবহারকারী হওয়া উচিত। যাইহোক, আমি হয় দেখি Error: must run as root
আমি ব্যবহার না করি sudo
বা sudo: no tty present and no askpass program specified
যদি আমি তা করি।
এই পরিস্থিতি মোকাবেলার জন্য কি কোনও সঠিক উপায় আছে? আদর্শভাবে jenkinsfile
; আমি Dockerfile
যদি সম্ভব হয় তবে অতিরিক্ত তৈরি করা এড়াতে চাই কারণ এটি টেস্টিং এবং উত্পাদনের মধ্যে আরও পার্থক্যকারী হবে।