ፈጣን እና ቀላል የ CI / CD ቧንቧዎች ለሁሉም ቋንቋዎች ወይም መሣሪያዎች የሴምኒካዊ ስሪት ለማግኘት. አንድ መሣሪያ አዲስ ስሪት ለመውሰድ ከባድ መሆን አለበት. ምንም ጓደኝነት, ምንም ማከማቻዎች, ምንም ጓደኝነት አይደለም. እርስዎ ቀጥተኛ, ቀጥተኛ, አስተማማኝ, እና ከዚያም ዝርዝር - ከዚያም ተጨማሪ ያንብቡ. ነገር ግን, አንድ ሶፍትዌር ደንበኞች እንደ ቡድን DevOps መፍትሔዎችን መተግበሪያ ይረዳል, እኔ ብዙውን ጊዜ ይህን አይሆንም. እኔ ምንድን ጥራት በከፍተኛ ጥራት ላይ የተለያዩ ያገኛሉ, ስለዚህ እኔ ምን ይወዳሉ ነገር ያውቃሉ helyett, የእኔ የፓይፕሊንቶች እንዴት ለመፍጠር ለማግኘት ፈጣን እና በቀላሉ አዲስ ማረፊያዎች ለመጫን ይመልከቱ. የእኔ ልምድ ለማወቅ, የእኔ ጥያቄዎች በይነገጽ ላይ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ በይነገጽ ለምሳሌ, Rust library X ለ የፈጠራ ሂደት በ Rust library Y ጋር ተመሳሳይ ነው, እና Node server foo በ Node server bar ጋር ተመሳሳይ ነው. ለሁሉም ዓመታት, እኔ ይህን ለማግኘት የ Open-Source ቁሳቁሶች ለመጫወት ተሞክሮ ነበር, ነገር ግን እኔም በእርግጥ ትክክለኛ ጥቅል ማግኘት አይችልም. እኔ መጨረሻው የእኔ መፍትሔዎችን ለመፍጠር ነበር, እና እኔ መጨረሻው ከእናንተ ጋር ያቀርባል. በመጀመሪያ... እኔ ስሪት እና ማውረድ በጣም አስደናቂ ጥያቄዎች አይደለም ያውቃሉ; ነገር ግን, ሁሉም ፕሮጀክቶች በ vibe-coded (እርስዎም በተለይም!). እርስዎ ፕሮጀክቱ በጣም ባለሙያ ይሆናል እና በዋናነት እና በተመሳሳይ መንገድ አዲስ ልማት ያውቃሉ እና መተግበሪያዎችን ያውቃሉ በፕሮጀክቶች ላይ ተጨማሪ አስተማማኝ ይሆናል. በመጀመሪያ ላይ... የሶፍትዌር ኢንጂነሪንግ ኮርፖሬሽን መጀመሪያ ላይ, መተግበሪያዎች በጣም አስደናቂ ነበር. እነሱም ከባድ ምርት ናቸው, አንድ ተከታታይ ስፕሪንቲስ በመጠቀም የተመሠረተ, በእያንዳንዱን ችሎታ ለማግኘት, አንድ ተከታታይ የፕላኔት ስብሰባዎች ውስጥ, በባድ መተግበሪያዎች በመጠቀም, እና የሚፈልጉትን ሥራዎችን ይምረጡ. የእኛን ፍላጎት የፕላኔ ስኬት መጻፍ እና የ Fibonacci ቁጥር ወይም የ T-Shirt መጠን, ወይም በክብደት ውስጥ, ቀናት አንድ ቁጥር ይጠቀማል. ይህ መተግበሪያ መተግበሪያ መተግበሪያ መተግበሪያ መተግበሪያ መተግበሪያ መተግበሪያ መተግበሪያ መተግበሪያ መተግበሪያ መተግበሪያ ነው. አስደናቂ ነው? ምናልባት? እርስዎ መውሰድ የሚፈልጉትን አንዳንድ ሰው በእርስዎ መኪናዎችን ለመጫወት በመርዳት የእርስዎን ክብደት አግኝቷል. በተጨማሪም አንድ ስሪት ቁጥር ለመምረጥ ዝርዝር እና አስደሳች ነው. ይህ ትልቅ ስሪት ነው? ሙሉ በሙሉ አዲስ ስሪት? አንዳንድ ጊዜ የሽያጭ ስሪት... 2.0! በዚህ ጊዜ የእኔ ካርሜራ ውስጥ, ይህ ስሪት ቁጥር ንጥረ ነገሮች ላይ በዋናነት የእኔን ግምገማ አይደለም, እና ተመልከት, እያንዳንዱ ሰው ሊሆን ይችላል (የእኔ ምንድን ይመልከቱ በኋላ). እኔ የመጀመሪያው ጊዜ ለስላሳዎች ተስማሚ ነኝ ... ነገር ግን ... ይህ ለብዙ ጊዜ አይሆንም. በ Open Source በአጠቃላይ, በ npm ሞዴሎች ውስጥ, እንደ እኔ በአሁኑ ጊዜ Node ውስጥ በጣም ተስማሚ ነበር. የእኔ ጓደኛን የግል ጓደኛን ለመርዳት ይሆናል. እርስዎ የ NYC NodeJS Meetup ወይም የ NYC NodeJS Meetup ክፍሎች በመጠቀም በ Matt Walters እና እኔ ጋር እንዴት እንደሚሰራ እንደሚወረዱ እርስዎ እንዴት ሊሆን ይችላል. Semantic Release በይነገጽ ላይ የተመሠረተ ደንበኞችን ለመፍጠር, አንድ የድር መተግበሪያ አምራች እንደ እኔ የተመሠረተ ነው. semantic-release የ Semantic-release መጠቀም ይጀምራል በፊት, እኔ ጋር ተመጣጣኝ አንዳንድ ጥንካሬዎች አሉ ... እና እኔ አንድ ደቂቃ ውስጥ እነዚህን ያገኛሉ. የመጀመሪያው, ከፍተኛ ደረጃ ላይ, semantic-release የተመሠረተ የተመሠረተ ትዕዛዞች አንድ የተወሰነ ቅርጸት ይከተሉ ነበር, እና ቀዳሚዎች ላይ የተመሠረተ, ስሪት ሊከፈል ይችላል. ይህ ስሪት ቁጥር ለመቀየር ምናልባት ምናልባት ምናልባት ምናልባት ምናልባት ምናልባት ምናልባት ምናልባት ምናልባት ምናልባት ምናልባት ምናልባት ምናልባት ነው. ለምሳሌ, አንድ አዲስ ዋና ስሪት ስሪት - v2 ወደ v3 ነበር, ይህም አንድ አስቸጋሪ ስሪት ነበር. ይህ ምልክት በይነገጽዎ ላይ ያውቃል, እርስዎ ያግኙ በኮምፒውተር ውስጥ. BREAKING CHANGE: feat: revamp user auth flow BREAKING CHANGE: Per Chad's "game-changer" vision in the 3am Slack rant, we've ditched the old auth system for a blockchain-based solution because "passwords are so 2024." Update your clients or enjoy the 500 errors! እንደ v2.0.0 ወደ v2.1.0 እንደ አነስተኛ ስሪት ኳስ, አንድ አዲስ ባህሪያት ያካትታል. feat: add dark mode toggle Per the 47-comment thread in the "urgent" ticket, users can now save their retinas. Dark mode added, but brace for the inevitable "make it darker" feedback. የ Patch ስሪትዎች ማረጋገጫዎች, ወይም refactors, ወይም አብዛኛውን ጊዜ አንድ አዲስ ስሪት ለመፍጠር የሚፈልጉትን ነገር ሁሉ. fix: revert "fix" by AI that skipped the breaking tests to avoid the failure እና መጨረሻም, አንዳንድ ትዕዛዞች በእርግጥ ለመፍጠር አይችልም. "እነርሱ" እኔን ይሰጣሉ. No-ops, እኔ እነሱን ይደውሉ. chore: update release pipeline version from v3.1.0 to v3.1.1 ይህ ልዩ ቅርጸት የ commit messages እንደ ይታወቃል አንተ ሙሉ spec ለማግኘት የእነርሱ ገጽ ማመልከቻ ይችላሉ, ነገር ግን እኔ ከእነርሱ ጥንካሬ ይሰጣል. የኮምፒዩተሮች በተጨማሪም, በዚህ መረጃ በ commits ውስጥ ያካትታሉ እንደ አንድ Changes Log - ለምሳሌ, አንድ ብየዳ ብየዳ ያካትታሉ. ለምሳሌ: What's new in v2.0.0 * feat: remove deprecated API BREAKING CHANGE: the FooBar API that was deprecated. To upgrade, you can use the new BazBar API. ስለዚህ, አንድ ጊዜ, Semantic-release እኔን ጥሩ ነበር. ለ Node ፕሮጀክቶች, ይህ ደግሞ ነው ... ነገር ግን ... ወደ DevOps እኔ በአብዛኛው ጊዜ የኮምፒውተር መተግበሪያ ስርዓቶች እንዴት ለመፍጠር የሚፈልጉት ስሜት ነኝ, ስለዚህ እኔ የሙያ ውስጥ አንዳንድ ጊዜ የሚፈልጉትን ነገር ነኝ. የኮምፒውተር መተግበሪያ መተግበሪያ መጨረሻ ላይ እንዴት እንደሚቻል ያውቃል, ነገር ግን አዲስ ችግር ነበር: ሁሉም ክፍሎች እንዴት መተግበሪያ ነው. እነዚህ NPM ሞዱሎች አይደለም; እነዚህ መተግበሪያዎች, አገልግሎቶች, ውሂብ ቤቶች, እና መስኮች ናቸው! የ Semantic-release ቀላልነት እኔ ይወዳል, ነገር ግን ይህ Node.js ፕሮጀክቶች ላይ ብቻ ጥሩ ነበር. በእርግጥ, እርስዎ ሊሆን ይችላል, እና እኔ አንዳንድ ጊዜ ነበር, አንድ የፕሮጀክቶች ለ non-node ፕሮጀክቶች, ነገር ግን ይህ ለስላሳ እና hackky ነበር. package.json በዚህ ጊዜ, በ Jenkins ጊዜ ውስጥ, በ DevOps ውስጥ አስደናቂ ተገናኝቷል, Docker በሽታ ማግኘት ይጀምራል. እኔ Jenkins ጋር ቧንቧዎች መጻፍ እና ሁሉም ነገር በ Docker Swarm ጋር መተግበሪያ ያውቃል! የእኔ የመጀመሪያ DevOps ጉብኝት እና መተግበሪያ ለማግኘት Docker መውሰድ. እኔ ደግሞ በኩባንያ ላይ የተመሠረተ ልማት አግኝቷል, እና ለመምረጥ ተስማሚ ነበር. የእኔ የቅርብ ጊዜ እና በአሁኑ ጊዜ ትክክለኛ እና ትክክለኛ መመሪያ በኩባንያ ላይ የተመሠረተ ልማት ጽሑፍ በኩባንያ ላይ የተመሠረተ ልማት ጽሑፍ እርስዎ የሚፈልጉ ከሆነ ለምን እና እንዴት ነው. እኔ ደግሞ በኩባንያ ላይ የተመሠረተ ልማት አግኝቷል, እና ለመምረጥ ተስማሚ ነበር. የእኔ የቅርብ ጊዜ እና በአሁኑ ጊዜ ትክክለኛ እና ትክክለኛ መመሪያ በኩባንያ ላይ የተመሠረተ ልማት ጽሑፍ በኩባንያ ላይ የተመሠረተ ልማት ጽሑፍ እርስዎ የሚፈልጉ ከሆነ ለምን እና እንዴት ነው. እኔ ሁልጊዜ እነዚያ ፕሮጀክቶች እነርሱ ጋር ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተስማሚ ተ ይህ የእኔ ዝርዝር ላይ በጣም አስፈላጊ ነገር አይደለም, ስለዚህ በአጠቃላይ ይህ በጣም ጥሩ ነበር እና ጥቅሞች ጋር ተሞክሮ ነበር. ከሁሉም ጊዜ, እንደ DevOps ደንበኞች, ብዙ ቋንቋዎች እና frameworks ውስጥ የተለያዩ ፕሮጀክቶች ጋር ተመሠረተ እና ተመሠረተ ነበር, እና እያንዳንዱ እያንዳንዱ ስሪት, ስሪትዎች, እና changelogs ያስፈልጋል. ከ Jenkins ጊዜ ጀምሮ, እኔ ይህን ያገኛል, እኔ ደግሞ ቧንቧዎች መጻፍ እንደዚህ ነው. እኔ አንድ ትኩረት ወደ ዋና ጋር በመጀመር, አንድ ትልቅ ተከታታይ ደረጃዎች ውስጥ ሙሉ አቅርቦት ፍጥነት ለማግኘት ተሞክሮ ነበር. አንተ ዋና ወደ ትኩረት ከሆነ, የተለያዩ ጥራት መቆጣጠሪያዎች ይጀምራል, እና አዲስ ስሪት ለመፍጠር, የተለጠፈው, መለያ, እና የተለጠፈው ይሆናል. ይህ በእርግጥ አስደናቂ አይደለም እና በአብዛኛው ሁኔታዎች ውስጥ "እናንተም" "እናንተም" ሊሆን ይችላል; ነገር ግን, እንደ DevOps ደንበኞች, እኔ ብዙ ጊዜ ይህን ማድረግ አለብዎት. ቀጥተኛ, ተጨማሪ ሞዱላር ክፍሎች ውስጥ ነገሮች ለመፍጠር እነዚህ ክፍሎች ተጨማሪ ፕሮጀክቶች ለማግኘት ይቻላል. እኔ የመጀመሪያው ጊዜ የታወቀ James Halliday, AKA Substack, እንደ ይህ ይሰጣል የ UNIX Philosophy መተግበሪያዎችን ያግኙን. አግኝተዋል: The coverage of ideas ለምሳሌ, አንድ Node Quality Pipeline በእያንዳንዱ Node ፕሮጀክቱ ውስጥ ተመሳሳይ ሊሆን ይችላል, እርስዎ መደበኛ npm script conventions መተግበሪያዎችን ያካትታል, እና ስለዚህ linting, building, እና unit testing ለመጫወት አንድ መደበኛ Pipeline በ Node.js ፕሮጀክቶች አብዛኞቹ, ነገር ግን ምንም ሁሉ ላይ ተስማሚ ሊሆን ይችላል. እና ወዘተ, እና የኮምፒውተር ክፍሎች የፋይል ምን ይሆናል, ይህም ጊዜ ትዕዛዞች ይጀምራል. npm run lint --if-present package.json lint ለጥፍ እና ማውረድ ከፍተኛ ደረጃ ቧንቧዎች በከፍተኛ ደረጃ, እያንዳንዱ ፕሮጀክቱ በመጀመሪያ የተመሠረተ አንድ አዲስ ስሪት ቁጥር ይሰጣል. ከዚያም, አንድ ስሪት መፍጠር ይችላሉ, ይህም ስሪት ቁጥር ጋር የተገናኙ ነው, እና ቅርንጫማዎች ተስማሚ ቧንቧዎች ክፍል እንደ ምርት ይሆናል. እኔ የ GitHub Actions አብዛኛውን ጊዜ ይጠቀማል, ምክንያቱም የ Pipelines ምርት ናቸው, እና ይህ ቀላል ነው. እኔ ብዙዎች ይጠቀማል, ነገር ግን እነዚህ ሁሉ በዋናነት ተመሳሳይ ናቸው - አንድ ተከታታይ ደረጃዎችን በባህር አጠቃቀም ጋር ይጠቀማል. ይህ ተስማሚ አጠቃቀም አብዛኛውን ጊዜ የፈጠራ ኮድ ያካትታል. ስሪት ማመልከቻ በግልጽ ስሪት ማመልከቻ በይነገጽ ስሪት ማመልከቻ በይነገጽ ስሪት ማመልከቻ በይነገጽ ስሪት ማመልከቻ በይነገጽ ስሪት ማመልከቻ በይነገጽ ስሪት ማመልከቻ በይነገጽ ስሪት ማመልከቻ በይነገጽ ስሪት ማመልከቻ በይነገጽ ስሪት ማመልከቻ ነው ለረጅም ጊዜ, እኔ ስሪትዎች ወደ ስሪትዎችን ያካትታሉ, እነርሱም ተመሳሳይ ነገር መካከል ክፍሎች ናቸው, ነገር ግን በአሁኑ ጊዜ, እነርሱ ሁለት ተመሳሳይ ቁሳቁሶች ናቸው. እነዚህን ክፍሎች ለመፍጠር የፓይፕሊን ስሪት ክፍሎች የእርስዎን የ modular ክፍሎች ነበር, ይህም ከዚያም ይህ ስሪት እና ቀጣይ ስሪት ለመፍጠር ተደርጓል. እያንዳንዱ ፕሮጀክቱ ለ GitHub Actions, እኔ ሁለት ፓይፕሊን አላቸው: On commit to the trunk branch, version, and tag When a commit occurs in the trunk branch (usually or ), trigger a pipeline that runs quality checks, and, if they pass, calculates a new version number. It then creates and pushes a tag with that new version number. We can also use this opportunity to update that version number in the code base if necessary, and generate a change log from the commit data that was used to calculate the new version number. main master When a tag is created, build new versions and release them. This step is simplified by the previous step of doing the version bump. Everything’s already been bumped to the new version. We can just run build and release using the tag as the base. ከ GitHub Actions Marketplace ከ Open-Source ክፍሎች መተግበሪያዎችን ብዙ ጊዜ በመተግበሪያ በኋላ, እኔም መጨረሻው ተስማሚ ነኝ እና የእኔ የግል መሣሪያ በመተግበሪያ ደረጃ አንድ ያተኮሩ. መውሰድ ቀጣይ ቀጣይ vnext አንድ ፈጣን Rust CLI መሣሪያ ነው, ይህም መደበኛ ትዕዛዞችን ይጠቀማል የእርስዎን ቀጣይነት ስሪት ለማምረት, ከፍተኛ, አነስተኛ, ወይም patch bumps ለስላሳ ቅናሽ ለማግኘት. እዚህ እንዴት ይጠቀማል. NEXT_VERSION=v`vnext` vnext --changelog > CHANGELOG.md ይህ በጣም ቀላል ነው! የእርስዎን ግምገማ ያውቃሉ. ይህ ሙሉ በሙሉ ፕሮጀክቱ git ታሪክ ላይ የተመሠረተ ነው. እርስዎ ማንኛውን ቋንቋ ወይም መሣሪያ ማውረድ የሚፈልጉት ነገር አይደለም; የ versioning ሂደት በእርግጥ ተመሳሳይ ነው. አንድ አዲስ ስሪት ያግኙ, አንዳንድ ፋይሎች ውስጥ ያግኙ, አንድ changelog, tag, እና push ያግኙ. ብቻ ልዩነት የኮምፒውተር ፋይሎች ለማሻሻል ያስፈልጋቸዋል ነው - ይህ አንድ ደቂቃ ውስጥ ይሸፍናል workflow ውስጥ ያካትታል. ፈጣን እና ቀላል ወደ መጫን አግኙን አንድ ጊዜ መፍጠር, አንተ መጀመር ይችላሉ: vnext ubi የ “Universal Binary Installer” አጠቃቀም ubi --project unbounded-tech/vnext በተጨማሪም እርስዎ የሚፈልጉትን የ GitHub Actions workflow ይሰራል, ይህም ሁሉንም መረጃዎችን ያከናወታል. እዚህ የክፍያ workflow እንዴት ይጠቀማል: name: On Push Main, Version and Tag on: push: branches: - main - master permissions: packages: write contents: write jobs: version-and-tag: uses: unbounded-tech/workflow-vnext-tag/.github/workflows/workflow.yaml@v1 with: useDeployKey: true changelog: true አብዛኞቹ ፕሮጀክቶች በተጨማሪም እንዴት እና ምን ፋይሎች አዲስ ስሪት ቁጥር ጋር ለማሻሻል ይፈልጋሉ. አሁን ላይ, ከሁለት መሣሪያዎች ( እና ) እና አንዳንድ ቋንቋ ልዩ አማራጮች. vnext yqPatches regexPatches የሙዚቃ መሣሪያዎች በጣም ቀላል ነው, ለምሳሌ ፎቶ አጠቃቀም የፕሮጀክት ፋይሎችን ለማሻሻል. with.node true npm መሣሪያዎችን ይጠቀሙ አንድ YAML ፋይሎች ውስጥ የተወሰነ ገጾች ለመቀነስ. እኔ በ Helm ግራፊዎች ውስጥ ስሪት ቁጥር ለማሻሻል በአጠቃላይ ይህን ይጠቀማል: yqPatches yq version-and-tag: uses: unbounded-tech/workflow-vnext-tag/.github/workflows/workflow.yaml@v1.13.0 secrets: GH_PAT: ${{ secrets.YOUR_ORG_SECRET_PAT }} with: usePAT: true changelog: true yqPatches: | patches: - filePath: helm/values.yaml selector: .image.tag valuePrefix: "v" - filePath: helm/Chart.yaml selector: .version valuePrefix: "v" እኔ ደግሞ አንድ የግል መዳረሻ ቶኬን ለመጠቀም እንዴት እንዴት እንደሚጠቀሙ የሚፈልጉት. እኔ ደግሞ አንድ የግል መዳረሻ ቶኬን ለመጠቀም እንዴት እንዴት እንደሚጠቀሙ የሚፈልጉት. አጠቃቀም አንድ ስሪት ማግኘት እና ወደ አዲስ ስሪት ቁጥር ያካትታል. ለምሳሌ: regexPatches sed regexPatches: | patches: - filePath: package/composition.yaml regex: /ghcr.io/org-name/package-name:(.*)/g valuePrefix: ghcr.io/org-name/package-name:v - filePath: README.md regex: /Current version: v[0-9]+\.[0-9]+\.[0-9]+/g valuePrefix: Current version: v እርስዎም የተለያዩ አማራጮችን መጠቀም ይችላሉ. ስለ GitHub እንቅስቃሴዎች አንድ ጥንካሬ በ GitHub Actions ላይ አንድ ተግባር መጀመር ጊዜ, በአጠቃላይ የተወሰነ የ GitHub ማረጋገጫ ቶኪን ይምረጡ. ይህ ቶኪን በአጠቃላይ የተወሰኑ ጥቂት ዋና ተግባር መጀመር ይችላሉ; ነገር ግን ሌሎች ቧንቧዎች መጀመር አይችልም. ነገር ግን አንድ አዲስ ስሪት መለያው በኋላ የእኛን ቀጣይ ደረጃ ይህ መለያ ጋር ሌላ የፓይፕሊን ለመፍጠር ነበር! ይህ በ GitHub የተመሠረተ ነው - ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ነው. በዚያ ላይ ከባድ ሊሆን ይችላል አንዳንድ መንገድ ናቸው - እኔ ከሁለት አንድ ምሳሌ አላቸው: በ GitHub Actions Secret እና በ GitHub Actions Secret ይጠቀሙ. የ GitHub Actions Secret እንደ Personal Access Token ይጠቀሙ አንድ GitHub መተግበሪያ ለመፍጠር (የቴክኒክ — እኔ ይህን አማራጮች አያስፈልግም ነበር) Using a Personal Access Token is convenient if you are a paying customer in the GitHub ecosystem, as organization-wide secrets are available. በነጻ ደረጃ ላይ, ይህ አማራጭ አይደለም, ስለዚህ እርስዎ አንድ መተግበሪያ ቁልፍ እንዴት ለመፍጠር እንደሚቻል ይመልከቱ. በእርግጥ, እኔ ይህ ለመፍጠር በጣም ቀላል ነበር CLI. ይህ በጣም ጥሩ አማራጭ ነው, እንደ በዚህ መንገድ የተመሠረተ ጊዜ, ማንኛውም ሰው ይህን ማወቅ አይፈልግም, እና ይህ በቀላሉ ተመሳሳይ ትዕዛዞን ይመዝገቡ ይቻላል. vnext እርስዎ ለመፍጠር የሚፈልጉት እያንዳንዱ መሣሪያ አንድ መተግበሪያ ቁልፍ ጋር ለመፍጠር, በፕሮጀክት መዳረሻ ውስጥ ... vnext በመጀመሪያ, የ Auth Token ያግኙ የኩባንያ መለያዎችን ለመቆጣጠር: gh gh auth refresh -h github.com -s admin:public_key -s admin:ssh_signing_key export GITHUB_TOKEN=$(gh auth token) ከዚያም ይጎብኙ: vnext generate-deploy-key በ Github Actions ውስጥ ይህን ደረጃ ለመፍጠር አንድ የግል መዳረሻ ቶኬን ለመፍጠር አይችልም, ምክንያቱም መደበኛ ቶኬን Secrets መተግበሪያ አይችልም. ይህ ነፃ ደረጃ ውስጥ በመጠቀም የ Deploy Key በመጠቀም የ pupose ይሸፍናል, እንደ እርስዎ እያንዳንዱ repo ውስጥ ለመፍጠር አለብዎት. ይህ በቀላሉ ለመፍጠር አንዳንድ ዓይነት የግል መዳረሻ አስተዳደር ያስፈልጋል, እና ስለዚህ አንድ መተግበሪያ ቶኬን በመጠቀም ይበልጥ ተግባር ያደርጋል. በ Github Actions ውስጥ ይህን ደረጃ ለመፍጠር አንድ የግል መዳረሻ ቶኬን ለመፍጠር አይችልም, ምክንያቱም መደበኛ ቶኬን Secrets መተግበሪያ አይችልም. ይህ ነፃ ደረጃ ውስጥ በመጠቀም የ Deploy Key በመጠቀም የ pupose ይሸፍናል, እንደ እርስዎ እያንዳንዱ repo ውስጥ ለመፍጠር አለብዎት. ይህ በቀላሉ ለመፍጠር አንዳንድ ዓይነት የግል መዳረሻ አስተዳደር ያስፈልጋል, እና ስለዚህ አንድ መተግበሪያ ቶኬን በመጠቀም ይበልጥ ተግባር ያደርጋል. የ Deploy Key, ወይም Personal Access Token (PAT) ጋር, እና ስሪት እና የክፍያ workflow ላይ ይጫወታል, ቀጣይ ደረጃ ለመፍጠር ነው! ይህ የፕሮጀክቶች ላይ የተለያየ ይሆናል, ነገር ግን ሁሉም እያንዳንዱ ስሪት ከሁለት ደረጃ የተለያየ ነው. እነዚህ ቧንቧዎች አብዛኛውን ጊዜ እንደዚህ ይሆናል: name: On Version Tag, Trigger GitHub Release on: push: tags: - 'v*.*.*' permissions: contents: write jobs: release: uses: unbounded-tech/workflow-simple-release/.github/workflows/workflow.yaml@v1 with: tag: ${{ github.ref_name }} name: ${{ github.ref_name }} ወይም, አንድ Rust ፕሮጀክት ከሆነ, እርስዎ እንደዚህ ነገር: name: On Version Tagged, Build and Publish Rust Binaries on: push: tags: - "v*.*.*" permissions: contents: write jobs: build-and-release: uses: unbounded-tech/workflows-rust/.github/workflows/release.yaml@v1 with: binary_name: ${{ github.event.repository.name }} build_args: "--release --features vendored" ወይም በ Dockerfile ጋር አንድ መተግበሪያ እና ለ Gitops መተግበሪያዎች ለ k8s አቅርቦት ዝርዝር ከሆነ, እርስዎ እንደዚህ ነገር ሊሆን ይችላል: name: promote on: push: tags: - v*.*.* permissions: contents: write packages: write issues: write pull-requests: write jobs: publish: uses: unbounded-tech/workflows-containers/.github/workflows/publish.yaml@v1.1.1 release: needs: publish uses: unbounded-tech/workflow-simple-release/.github/workflows/workflow.yaml@v1 with: tag: ${{ github.ref_name }} name: ${{ github.ref_name }} promote: needs: release uses: unbounded-tech/workflows-gitops/.github/workflows/helm-promote.yaml@v1 secrets: GH_PAT: ${{ secrets.GH_PAT }} with: environment_repository: your-org/staging-env path: .gitops/deploy project: staging ትዕዛዞች: አንድ መተግበሪያ ቁርጥራጮች ወደ ሌሎች repo መተግበሪያዎች መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተ ትዕዛዞች: አንድ መተግበሪያ ቁርጥራጮች ወደ ሌሎች repo መተግበሪያዎች መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተግበሪያዎችን መተ Generally, every release is a combination of some pieces of these similar modules, which do pretty much the same things but for their specific tools or languages. አብዛኛውን ጊዜ, ኩባንያዎች በአጠቃላይ መተግበሪያዎች እና አገልግሎቶች ውስጥ አብዛኞቹ ተመሳሳይ ሞዴሎች ይመልከቱ, ስለዚህ workflows ወደ ተስማሚ ሞዱላር ክፍሎች ይሰጣሉ, የ devs በጣም ብዙውን ጊዜ ይህን ዓይነት ሁሉም ፕሮጀክቶች ወደ እነዚህ ተስማሚ workflow calls አግኝተዋል እና አግኝተዋል. በ Changelogs ጋር ተስማሚ ቅናሾች እርስዎ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ የ Changelog እንዴት የፕሮጀክትዎን ከሌሎች መተግበሪያዎች ጋር የተሻሻለ ስሪት ሂደት አንድ አስፈላጊ ክፍሎች ነው. with.changelog ከባድ ስሪት ጋር, በተጨማሪም ይህ changelog ለመፍጠር የ kommit messages ይጠቀማል እና በ CHANGELOG.md ወደ ፋይሎች ውስጥ ያግኙ, ይህም በ version tag እና version bumps ጋር ጋር ይጠቀማል. vnext ይህ ፋይሎችን ከላይ አጠቃቀም የ GitHub Release workflows ውስጥ አግኝቷል. የእርስዎ ፕሮጀክቶች: vnext ይህ ስሪት የፕላስቲክ ስሪት ነበር, ምክንያቱም ይህ የክፍያ, የካፍያ ስሪት ቅርጸት, እና ሌሎች በርካታ ሥራዎች ቅርጸት ያካትታል. እነዚህ ስዕሎች ከዚያም ሌሎች መሣሪያዎች ውስጥ ይሰጣሉ, እንደ , አንድ መሣሪያ, PRs ያደርጋል, የእርስዎን መድሃኒቶች ለማከናወን. አረንጓዴ የ Pull Requests አጠቃቀም ጊዜ, GitHub የ Squash እና Merge ባህሪያት ይጠቀማል, እርስዎ በ Changelog ውስጥ ጥቅም ላይ ይጠቀማል አንድ ጥሩ መጨረሻ ትዕዛዝ ስም እና ክብደት መጻፍ ይችላሉ. ለምሳሌ : ለምሳሌ ውስጥ የሚታወቀው እንደ, ሙሉ በሙሉ Markdown እንደ ትክክለኛነት መፍጠር ይችላሉ. ይህ በ Release Notes ውስጥ ተስማሚ ይሆናል! መጨረሻው እኔ ስሪት እና ስሪት ምንድን ነገር አይደለም ያውቃል; ይህ በጣም አስደናቂ ነው - ወይም ይበልጥ, ይህ መሆን አለበት! However, this isn’t always the case. That’s why I created አንድ ቦርሳ አሁን, እኔ በጣም ፈጣን ብዙ ፕሮጀክቶች በቀላሉ መጫን ይችላሉ! vnext shared workflows ያግኙ, ይህ ደግሞ ለእናንተ ይረዳል! እባክህ እባክህ እባክህ እባክህ እኔ በ GitHub ላይ አንዳንድ ጫማዎች እና አንድ ክፍያ ይፈልጋሉ, እርስዎ እነዚህን ጥቅም ላይ ያገኛሉ! vnext