এক্সকোড এবং সুইট প্যাকেজগুলির সমাধানের জন্য গিটের মধ্যে পার্থক্য


9

ব্যাকগ্রাউন্ডটি হ'ল: আমার কাছে একটি এক্সকোড প্রকল্প রয়েছে যা গিথুবের একটি ব্যক্তিগত সংগ্রহস্থলে থাকা একটি সুইফ্ট প্যাকেজের উপর নির্ভর করে। অবশ্যই এর অ্যাক্সেসের জন্য একটি কী প্রয়োজন requires এখনও অবধি, আমি সিআইকে এমনভাবে কনফিগার করতে পেরেছি যে আমি git cloneসুইফ প্যাকেজের জন্য প্রয়োজনীয় সংগ্রহস্থলটি সেশ করতে পারি । দুর্ভাগ্যক্রমে যখন এটি xcbuildসিআই এর মতো চালানো হয় তখন এটি কাজ করে না এবং আমি এই বার্তাটি পাই:

static:ios distiller$ xcodebuild -showBuildSettings -workspace ./Project.xcworkspace \
    -scheme App\ Prod
Resolve Package Graph
Fetching git@github.com:company-uk/ProjectDependency.git
xcodebuild: error: Could not resolve package dependencies:
  Authentication failed because the credentials were rejected

বিপরীতে, git cloneএখানে দেখা হিসাবে আনন্দের সাথে এই রেপো আনতে হবে:

static:ios distiller$ git clone git@github.com:company-uk/ProjectDependency.git
Cloning into 'ProjectDependency'...
Warning: Permanently added the RSA host key for IP address '11.22.33.44' to the list of known hosts.
remote: Enumerating objects: 263, done.
remote: Counting objects: 100% (263/263), done.
remote: Compressing objects: 100% (171/171), done.
remote: Total 1335 (delta 165), reused 174 (delta 86), pack-reused 1072
Receiving objects: 100% (1335/1335), 1.11 MiB | 5.67 MiB/s, done.
Resolving deltas: 100% (681/681), done.

আরও কিছু প্রসঙ্গে, এটি গিটারহাবের উপর একটি ডিপ্লোয় কী সহ সেট করা সার্কেলসিআই-তে চলছে, যা চাকরিতে সিআই-তে যুক্ত হয়েছে।

এক্সকোড যেভাবে নির্ভরতা আনার চেষ্টা করে এবং ভ্যানিলা গিট যেভাবে এটি করে তা দুর্দান্ত হবে সে সম্পর্কে কোনও প্রস্তাবনা। ধন্যবাদ।


আমি বর্তমানে আমার সি আই যেমন GitHub পদক্ষেপ সঙ্গে একই সমস্যা হচ্ছে না
bscothern

কোনও উত্তর নয়, তবে কখনও কখনও অতীতে (বিশেষত এক্সকোড 10), গিট প্রমাণীকরণের বিশদগুলির কোনও কারণ ছাড়াই অদৃশ্য হওয়ার প্রবণতা ছিল (শুরুতে ঠিক আছে, তারপরে পুফ)। এক্সকোড 11 এটি সমাধান করে।
অ্যালেক্স

উত্তর:


5

এটি এসএসএইচ সহ এক্সকোড 11-এ একটি বাগ বলে মনে হচ্ছে। সুইফ্ট প্যাকেজগুলি সমাধান করার জন্য এইচটিটিপিএসে স্যুইচ করা সমস্যার সমাধান করে:

সুতরাং এটি থেকে:

E29801192303068A00018344 /* XCRemoteSwiftPackageReference "ProjectDependency" */ = {
        isa = XCRemoteSwiftPackageReference;
        repositoryURL = "git@github.com:company-uk/ProjectDependency.git";
        requirement = {
                branch = "debug";
                kind = branch;
        };
};

প্রতি:

E29801192303068A00018344 /* XCRemoteSwiftPackageReference "ProjectDependency" */ = {
        isa = XCRemoteSwiftPackageReference;
        repositoryURL = "https://github.com/company-uk/ProjectDependency.git";
        requirement = {
                branch = "debug";
                kind = branch;
        };
};

এটি স্থানীয় বিল্ডগুলির জন্য কাজ করে তবে সিআই মেশিনগুলির জন্য নয় যেখানে আপনি কোনও কিছুতে এক্সকোড সাইন করতে পারবেন না। এটি সর্বদা Xcode থেকে এই ত্রুটির ফলস্বরূপ: xcodebuild: ত্রুটি: প্যাকেজ নির্ভরতা সমাধান করতে পারেনি: প্রমাণীকরণ ব্যর্থ হয়েছে কারণ কোনও শংসাপত্র সরবরাহ করা হয়নি। আমার অভিজ্ঞতা হয়েছে যে আপনার এসএসএইচ key / .ssh এবং গিটহাবের মধ্যে সঠিকভাবে কনফিগার করা থাকলে এসএসএইচ সংস্করণ কাজ করে works যতক্ষণ না আপনি এক্সকোডের গিটহাবে সাইন ইন হন।
বিস্কোর্নন

এটি সিআইয়ের জন্য আমার পক্ষে কাজ করছে; আমি সোমবার পর্যন্ত অফিসে নেই তাই কীভাবে তদন্ত করতে পারি না তবে এটি অবশ্যই কাজটি করছে।
রতবুম

3

সিআই পাইপলাইনগুলির জন্য যেখানে আপনি গিটহাব বা অন্যান্য সংগ্রহস্থল হোস্টগুলিতে সাইন ইন করতে পারবেন না এটিই আমি সলিউশনটি পেয়েছি যে ব্যক্তিগত সুইফট প্যাকেজগুলির চারপাশে এক্সকোডের সীমাবদ্ধতা / বাগগুলিকে ছাড়িয়ে যায়।

ব্যক্তিগত নির্ভরতার জন্য https ইউআরএলগুলি ব্যবহার করুন কারণ ডকুমেন্টেশন অন্যথায় বলছে যদিও ssh কনফিগারেশনটি বর্তমানে xcodebuild দ্বারা উপেক্ষা করা হয়েছে।

একবার আপনি https- র সাহায্যে স্থানীয়ভাবে তৈরি করতে পারলে আপনার সংগ্রহস্থল হোস্টে যান এবং ব্যক্তিগত অ্যাক্সেস টোকেন (পিএটি) তৈরি করুন। GitHub নির্দেশাবলী পাওয়া যায় এখানে

আপনার সিআই সিস্টেমের সাহায্যে এই পিএটিটিকে একটি গোপন পরিবেশের পরিবর্তনশীল হিসাবে যুক্ত করুন। নীচের লিপিটিতে এটি হিসাবে উল্লেখ করা হয়েছে GITHUB_PAT

তারপরে আপনি চালানোর আগে আপনার সিআই পাইপলাইনে xcodebuildনিশ্চিত হয়ে নিন যে আপনি এই ব্যাশ স্ক্রিপ্টের যথাযথ পরিবর্তিত সংস্করণটি চালাচ্ছেন:

for FILE in $(grep -Ril "https://github.com/[org_name]" .); do
    sed -i '' "s/https:\/\/github.com\/[org_name]/https:\/\/${GITHUB_PAT}@github.com\/[org_name]/g" ${FILE}
done

এই স্ক্রিপ্টটি সমস্ত https রেফারেন্সগুলি খুঁজে পাবে এবং এতে PAT ইনজেকশন দেবে যাতে এটি পাসওয়ার্ড ছাড়াই ব্যবহার করা যায়।

ভুলে যাবেন না:

  • [org_name]আপনার প্রতিষ্ঠানের নাম দিয়ে প্রতিস্থাপন করুন ।
  • ${GITHUB_PAT}আপনার সিআই সিক্রেটের নামটি যদি আপনি আলাদাভাবে নাম দিয়ে থাকেন তবে প্রতিস্থাপন করুন ।
  • grepআপনি স্ক্রিপ্টের মাধ্যমে সংশোধন করতে চান না এমন কোনও পথে অগ্রাহ্য করতে কমান্ডটি কনফিগার করুন ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.