গিটল্যাব ব্যক্তিগত সংগ্রহস্থল থেকে এনপিএম মডিউল ইনস্টল করুন


100

আমরা আমাদের বেসরকারী প্রকল্পের জন্য গিটল্যাব ব্যবহার করছি । গিথুব থেকে কয়েকটি কাঁটাযুক্ত লাইব্রেরি রয়েছে, আমরা এনপিএম মডিউল হিসাবে ইনস্টল করতে চাই। সরাসরি এনপিএম থেকে এই মডিউলটি ইনস্টল করা ঠিক আছে এবং উদাহরণস্বরূপ:

npm install git://github.com/FredyC/grunt-stylus-sprite.git

... সঠিকভাবে কাজ করে, কিন্তু গিটল্যাবের জন্যও একই কাজ, কেবলমাত্র ডোমেন পরিবর্তন করা আমাকে এই ত্রুটি করে gets

npm WARN `git config --get remote.origin.url` returned wrong result (git://git.domain.com/library/grunt-stylus-sprite.git)
npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git Cloning into bare repository 'D:\users\Fredy\AppData\Roaming\npm-cache\_git-remotes\git-git-domain-com-library-grunt-stylus-sprite-git-6f33bc59'...
npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git fatal:unable to connect to git.domain.com:
npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git git.domain.com[0: 77.93.195.214]: errno=No error
npm ERR! Error: Command failed: Cloning into bare repository 'D:\users\Fredy\App
Data\Roaming\npm-cache\_git-remotes\git-git-domain-com-library-grunt-stylus-spr
ite-git-6f33bc59'...
npm ERR! fatal: unable to connect to git.domain.com:
npm ERR! git.domain.com[0: xx.xx.xx.xx]: errno=No error

গিটল্যাবের ওয়েব ইন্টারফেস থেকে আমার এই ইউআরএল রয়েছে git@git.domain.com:library/grunt-stylus-sprite.gitnpm installএটির বিরুদ্ধে চালানো gitএনপিএম রেজিস্ট্রি থেকে মডিউল ইনস্টল করার চেষ্টা করে ।

তবে ইউআরএল ব্যবহার: git+ssh@git.domain.com:library/grunt-stylus-sprite.gitহঠাৎ আমাকে পাসওয়ার্ড জিজ্ঞাসা করছে। আমার এসএসএইচ কীতে পাসফ্রেজ অন্তর্ভুক্ত নেই, তাই আমি ধরে নিই যে এটি কীটি লোড করতে সক্ষম হয় নি। এর জন্য কিছু কনফিগারেশন আছে যে আমি মিস করেছি? কীটি নাম সহ আমার হোম ডিরেক্টরিতে মান স্থানে অবস্থিত "id_rsa"

আমি উইন্ডোজ 7 এক্স 64 এ আছি।

হালনাগাদ

এনপিএম ভি 3 যেহেতু গিটল্যাব এবং অন্যান্য উত্সগুলির জন্য অন্তর্নির্মিত সমর্থন রয়েছে (বিটবকেট, গিস্ট), যেখানে আপনি প্যাকেজ ইনস্টল করতে পারবেন। দুর্ভাগ্যক্রমে এটি কেবল জনসাধারণের জন্য কাজ করে তাই এটির সাথে এটি ঠিক সম্পর্কিত নয় তবে কিছুকে এটি কার্যকর হতে পারে।

npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]

ডকুমেন্টেশন দেখুন: https://docs.npmjs.com/cli/install


4
তাহলে আমি ব্যবহার করা আসল গিটল্যাব url কী? আমি কেবল দেখতে পাচ্ছি যে <placeholders>আমি বিভিন্ন প্রকারের চেষ্টা করেছি এবং এটি এখনও বলে যে প্রকল্পটি পাওয়া যায় নি।
chovy

4
$ npm i -S git+ssh://git@gitlab.com/org/repo.gitকাজ করে না
chovy

উত্তর:


162

একটি ব্যক্তিগত গিটল্যাব সংগ্রহস্থলের সাথে সংযোগ স্থাপনের জন্য আপনার নিম্নলিখিত পদ্ধতি রয়েছে

এসএসএইচ সহ

git+ssh://git@git.mydomain.com:Username/Repository#{branch|tag}
git+ssh://git@git.mydomain.com/Username/Repository#{branch|tag}

এইচটিটিপিএস সহ

git+https://git@git.mydomain.com/Username/Repository#{branch|tag}

এইচটিটিপিএস এবং টোকেন মোতায়েন করুন

git+https://<token-name>:<token>@gitlab.com/Username/Repository#{branch|tag}

হ্যাঁ, আমি যা আবিষ্কার করেছি তা অনেকটাই। এমনকি আপনি শাখা বা ট্যাগ পছন্দ করতে পারেন Repository#1.2.3। আমি উত্তর টিক পরিবর্তন করব যেহেতু এটি আরও সঠিক।
ফ্রেডিসি

4
@ জামেসিধু আমি নিশ্চিত নই তবে এটি আমাকে এসএসএইচ দিয়ে পাসওয়ার্ড জিজ্ঞাসা করছে। পাসওয়ার্ড দেওয়ার পরে এটি আমাকে ত্রুটি দিচ্ছে। এটি সমাধান করার জন্য কোন ধারণা?
কোডসনোকার

@ কোডসনোকার আপনি কি গিটলাবে একটি এসএসএইচ কী সেটআপ করেছেন ? যদি আপনার মেশিন এবং রিমোটের মধ্যে কীগুলি অনুমোদিত না হয় তবে এটি সার্ভারে অ্যাক্সেসের মতো পাসওয়ার্ডে ডিফল্ট হবে।
সিধুকো

5
এটি কেবলমাত্র সত্যিকারের ইউআরএল সিন্ট্যাক্স সহ আমার জন্য কাজ করে, যেমন git+ssh://git@git.mydomain.com/Username/Repository(/ পৃথককারী হোস্ট এবং ব্যবহারকারীর নামটি নোট করুন) এটি সুতোর নির্দিষ্ট জিনিস হতে পারে, সম্ভবত প্রস্তাবিত উদাহরণ এনপিএম নিয়ে কাজ করে
Ivo van der Wijk

4
টোকেন বিস্তৃত দুর্দান্ত কাজ। <token-name>উদাহরণটিতে দেখে মনে হচ্ছে gitlab+deploy-token-17034এটি টোকেনে আপনি নির্ধারিত স্বেচ্ছাসেবী নাম নয়।
Mr5o1

26

পরিবর্তে git://, ব্যবহার git+ssh://এবং এনপিএম সঠিক কাজ করা উচিত।


5
এনপিএম স্রষ্টার নিজে থেকেই উত্তর 👆
ডিমা পারজিৎস্কি

আমি পেয়েছিundefined ls-remote <url>
chovy

git + ssh: git@git.mydomain.com/Username/Repositor, সরান // এটি আমার পক্ষে কাজ করে। Thx
AliasCocoa

24

হালনাগাদ

@ ফেলিক্স যেমন মন্তব্যগুলিতে উল্লিখিত হয়েছে (ধন্যবাদ @ ফেলিক্স) এতে deploy tokenএকটি ব্যক্তিগত রেজিস্ট্রি পড়ার জন্য অনেক বেশি প্রাসঙ্গিকgitlab । এই উপায়টি হ'ল টোকেন আপোসযুক্ত, আক্রমণকারী কেবল that ভান্ডারটি পড়তে পারে এবং পরিবর্তন করতে পারে না।

একটি ডিপ্লয় টোকেন তৈরি করা হচ্ছে

  1. আপনার লগ ইন করুন GitLab অ্যাকাউন্টে ।
  2. আপনি যে প্রকল্পের জন্য ডিপ্লয় টোকেন তৈরি করতে চান তাতে যান।
  3. সেটিংস> সংগ্রহস্থলীতে যান।
  4. ক্লিক করুন Expandডিপ্লয় টোকেন বিভাগে ।
  5. টোকেনের জন্য একটি নাম এবং বিকল্পভাবে একটি মেয়াদ শেষ করুন।
  6. পছন্দসই স্কোপগুলি বেছে নিন। <= নির্বাচন করুনread_repository
  7. টেকন ডিপ্লয় ডিফল্ট ক্লিক করুন।
  8. নিরাপদে কোথাও মোতায়েন টোকেন সংরক্ষণ করুন। আপনি পৃষ্ঠাটি ছেড়ে গেলে বা রিফ্রেশ হয়ে গেলে আপনি এটি আর অ্যাক্সেস করতে পারবেন না।

পুরানো উত্তর

যান User Settings > Access Tokensএবং অনুমতি access tokenনিয়ে একটি নতুন তৈরি করুন read_registry

এখানে চিত্র বর্ণনা লিখুন

অনুলিপি তৈরি হয়েছে token, আমাদের এটি আমাদের package.jsonফাইলের জন্য প্রয়োজন ।

এখানে চিত্র বর্ণনা লিখুন

এখন নীচের হিসাবে package.jsonযোগ করুন dependency:

"my-module": "git+https://Xaqron:token@gitlab.com/Xaqron/my-module"

Xaqronআপনার ব্যবহারকারীর নাম এবং tokenউত্পন্ন টোকেন দিয়ে প্রতিস্থাপন করুন । আপনি নির্দিষ্ট করতে পারেন branchএবং tagদ্বারা url এর শেষে#{branch|tag}

দ্রষ্টব্য: যেহেতু package.jsonএই প্রকল্পে অ্যাক্সেস রয়েছে এমন যে কোনওটিতে অ্যাক্সেস টোকেনটি অবস্থিত এটি সংগ্রহস্থলটি পড়তে পারে, তাই আমি ধরে নিই যে আপনার প্রকল্পটি ব্যক্তিগত।


5
অন্য উপায়টি হল সেই নির্দিষ্ট সংগ্রহস্থলের জন্য ডিপ্লয় টোকেন তৈরি করা। তারপরে এটি আপনার সমস্ত रिपোর জন্য পঠিত অ্যাক্সেসের অনুমতি দেয় না। "private-module": "git+https://gitlab+deploy-token-username:deploy-token@gitlab.com/you/project",
ক্রিস স্যাটিঙ্গার

npm ERR! enoent undefined ls-remote -h -t https://puump:pass@gitlab.com/puump/puump-content.git
chovy

4
@ শেভি: ইনস্টল git দেখুন
জ্যাক্রন

4
আমি আরও উল্লেখ করতে চাই যে আপনার প্রকল্পটি যদি একটি গোষ্ঠীর অভ্যন্তরে থাকে তবে আপনার "private-module": "git+https://gitlab+deploy-token-username:deploy-token@gitlab.com/group_name/project"your usernamegroup_name
এটির

8

যদিও প্রশ্নটি গীতলাব সম্পর্কে, এই প্রশ্নটি গুগল অনুসন্ধানে বেশ ভালভাবে স্থান পেয়েছে, সুতরাং গিথুবের সাথে আমি যে অনুরূপ ইস্যুটি পেয়েছি তা কীভাবে ঠিক করতে হয় সে সম্পর্কে আরও কিছু তথ্য এখানে।

আমার জন্য, কেবল url পরিবর্তন করা কার্যকর হয়নি। এটি ঠিক করার জন্য আমাকে যে পদক্ষেপগুলি নিতে হয়েছিল তা এখানে:

  • git+ssh://git@github.com:owner/repo.git#master
  • একটি ডিপ্লয় কী তৈরি করুন এবং এটিকে রেপোতে যুক্ত করুন
  • গিট কনফিগারেশন সম্পাদনা করুন (~/.ssh/configডিফল্ট ssh কী-এর পরিবর্তে DeployKey ব্যবহারকে বাধ্য করতে ফাইলটি উপস্থিত না থাকলে তৈরি করুন)

এরপরে এনপিএম ইনস্টলটি সহজভাবে কাজ করে। অন্যান্য সমস্ত বিকল্প এবং সমাধানের ফলে এনপিএম ইনস্টল হয়ে যায়


এটি একটি টাইপো হতে হবে। :owner?
chovy

4
আমি কি করব ~/.ssh/config? আমি এখনও এনপিএম / গীতলাব দিয়ে যাচ্ছি না
chovy

6

অন্য যে কেউ এটিকে হোঁচট খায়, আমি এটিকে এইচটিটিপিএসের মাধ্যমে মোটেও কাজ করতে পারি নি - মনে হয় এটি রেপো (যেমন https://git.domain.com/user/somerepo.git) এর সরাসরি লিঙ্ককে সমর্থন করে না .tar, .tar.bzবা এটি সমর্থন করে না , বা.zip সংরক্ষণাগার সংস্করণ।

এটি কেবলমাত্র সাথে কাজ করে বলে মনে হচ্ছে .tar.gz সংরক্ষণাগারটির ।

সম্পূর্ণ উদাহরণ (ট্যাগযুক্ত সংস্করণ সহ):

https://git.domain.com/user/somerepo/repository/archive.tar.gz?ref=v1.2.3


6

অন্য কোনও উত্তর আমার পক্ষে বেসরকারী gitlab.com রেপোতে কাজ করে নি ...

এটি তবে কাজ করে:

npm i -S git+ssh://git@gitlab.com:<org>/<project>.git

প্রকল্পের পৃষ্ঠার "ক্লোন" ইনপুট ক্ষেত্র থেকে এটির গিট এসএস ক্লোন ইউআরএলটি এর git+ssh://সামনের অংশে যুক্ত হয়েছে।


4
আপনার ssh পাবলিক কী ইতিমধ্যে গিটল্যাব অ্যাকাউন্টে সেট আপ করা হয়েছে তা এই কাজ করে।
lasec0203

3

যতদূর আমি বলতে পারি আপনি কোথায় ভুল করছেন তা হ'ল git://প্রোটোকল। গিটল্যাব শুধুমাত্র ক্লোনগুলির জন্য HTTP (গুলি) এবং এসএসএইচ সমর্থন করে। সুতরাং আপনাকে গিট প্রোটোকলের পরিবর্তে সেই পদ্ধতিগুলির মধ্যে একটি ব্যবহার করতে হবে।


3

আমার জন্য নীচের কাজ হিসাবে প্যাকেজ.জসন সেট করুন।

"dependencies": {
    "<module-name>": "git+http://<username>:<token>@url.git",
}

টোকনটি আপনার "প্রোফাইল সেটিংস - অ্যাক্সেস টোকন" থেকে পাওয়া যাবে।


এটি আমার পক্ষেও কাজ করেছিল। আমি স্বাক্ষরিত শংসাপত্র সহ একটি প্রক্সি পিছনে কাজ করছি।
স্টেফানো মোজার্ট

এটি আসলে আমার পক্ষে কাজ করেছে তবে আমি অবাক হয়েছি যে প্যাকেজে টোকেনটি রেখে দেওয়া ভাল ধারণা কিনা? অন্য যেহেতু এটি লেখার জন্য ব্যবহার করতে পারে? গিটল্যাব (অন্ততপক্ষে আমার ক্ষেত্রে) আমাকে কেবল পঠনযোগ্য অ্যাক্সেস টোকন তৈরি করতে দিচ্ছে না তবে কেবল একটি সম্পূর্ণ অ্যাক্সেস রয়েছে। আপনি কি মনে করেন?
ক্যান্সারবেরো

দ্রষ্টব্য: গিটল্যাব 10.7 (এপ্রিল 2018 প্রকাশিত হয়েছে) প্রকল্প স্তরের "টোকেন ডিপ্লোয় করুন" যুক্ত করেছে। এগুলি ব্যবহারকারীর স্তরের "অ্যাক্সেস টোকেন" এর পরিবর্তে ব্যবহার করা উচিত। ডক্স লিঙ্ক

1

গিটল্যাবের এখন একটি প্যাকেজ রেজিস্ট্রি রয়েছে যেখানে এনপিএম প্যাকেজ নির্মাণ, স্থাপন ও হোস্ট করা সম্ভব। ব্যক্তিগত সংগ্রহস্থলগুলির সাহায্যে সংগ্রহস্থল সামগ্রী এবং প্যাকেজগুলির উপর সূক্ষ্ম শস্য অ্যাক্সেস নিয়ন্ত্রণ সরবরাহ করা সম্ভব।

এনপিএম প্যাকেজগুলি .npmrcপাশাপাশি একটি ফাইল যুক্ত করে ব্যক্তিগত গিটল্যাব সংগ্রহস্থলগুলি থেকে ইনস্টল করা যেতে পারে package.json। আরও তথ্য এখানে । যদিও একই কোডবেসে বিভিন্ন সংগ্রহস্থলের জন্য একাধিক স্থাপনা টোকেন ব্যবহার করার সময় এটি জটিল হয়ে ওঠে।

গিটল্যাবের সাহায্যে প্যাকেজ .tgzফাইলটি সরাসরি এইচটিটিপিএসের মাধ্যমে অ্যাক্সেস করা এবং টোকেন স্থাপন করা সম্ভব । এইভাবে প্রকল্পের নির্ভরতা যুক্ত করুন:

"@foo/bar": "https://<username>:<token>@gitlab.com/api/v4/projects/<project-id>/packages/npm/@foo/bar/-/@foo/bar-1.0.0.tgz"

@ foo / বার ইউআরএলে দু'বার উপস্থিত রয়েছে। @ foo হল প্রকল্পের সুযোগ এবং বারটি মডিউলটির নাম এবং 1.0.0 মডিউলটির নাম। প্রজেক্ট-আইডি (8-সংখ্যার সংখ্যাসূচক) হ'ল গিটল্যাব প্রকল্প আইডি, যা প্রকল্পের পৃষ্ঠা থেকে নাম অনুসারে দেখা যাবে। এমনকি মডিউলটির নামটি (তবে লিঙ্কটি নয়) থেকে @foo বাদ দেওয়াও সম্ভব।

একই স্কোপ এবং বিভিন্ন স্থাপনার টোকেন সহ একাধিক মডিউল ব্যবহার করা ব্যক্তিগত সংগ্রহস্থলগুলি পরিচালনা করা সুরক্ষিত করে। এছাড়াও ডিপ্লয় টোকেনগুলির কেবলমাত্র package registryযার অ্যাক্সেস থাকতে পারে , শেষ-ব্যবহারকারী সংগ্রহস্থলগুলি থেকে সম্পূর্ণ উত্স কোড অ্যাক্সেস করতে সক্ষম হবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.