গিথুব অ্যাকশনগুলিতে ম্যানুয়াল ওয়ার্কফ্লো ট্রিগার করে


9

আমি একটি প্রকল্পের সংগ্রহস্থলের জন্য গিথুব অ্যাকশন সেট আপ করছি।

কর্মপ্রবাহটি নিম্নলিখিত পদক্ষেপগুলি নিয়ে গঠিত:

  • একটি ডকার চিত্র তৈরি করা
  • চিত্রটিকে একটি ধারক রেজিস্ট্রিতে ঠেলাচ্ছি
  • একটি কুবেরনেটস মোতায়েন রোলআউট।

তবে, আমার দুটি পৃথক কুবারনেটস মোতায়েন রয়েছে: একটি বিকাশের জন্য, এবং একটি উত্পাদন জন্য for অতএব, আমার কাছে দুটি গিথুব অ্যাকশন কর্মপ্রবাহ রয়েছে।

উন্নয়নের জন্য গিথুব অ্যাকশন কর্মপ্রবাহ প্রতিবারই প্রতিশ্রুতিবদ্ধ হওয়ার সময় ট্রিগার করা হয়:

on:
  push:
    branches:
    - master

তবে আমি আমার প্রযোজনার কাজের প্রবাহের জন্য তা চাই না। আমি একটি মত একটি ম্যানুয়াল ট্রিগার প্রয়োজন, হবে উৎপাদন পাঠান বোতাম। ডক্সে আমি এর কাছাকাছি কিছু দেখতে পাইনি।


গিথুব অ্যাকশনে ম্যানুয়ালি কোনও ওয়ার্কফ্লো ট্রিগার করার কোনও উপায় আছে কি?

গিথুব অ্যাকশনস, ডকার বা কুবারনেটসে আমি যা চাই তা অর্জন করতে আমি কীভাবে আমার উন্নয়ন এবং আমার উত্পাদন কর্মপ্রবাহকে বিভক্ত করতে পারি?

উত্তর:


8

গিথুব অ্যাকশনে ম্যানুয়ালি কোনও ওয়ার্কফ্লো ট্রিগার করার কোনও উপায় আছে কি?

আমি এটি করতে একটু হ্যাক পেয়েছি ...

ঘড়ির ইভেন্টের সাহায্যে আপনি ম্যানুয়ালি তারকা দ্বারা কোনও ক্রিয়া ট্রিগার করতে পারেন বা রেপো আনস্টার করতে পারেন। আপনার কর্মপ্রবাহে ইভেন্টটির কোডটি হ'ল:

on:
  watch
    types: [started]

আমি জানি এটি একটি অদ্ভুত ছিদ্র কিন্তু এটি কার্যকর! তবুও, এটি সম্ভাব্য নক্ষত্রগুলির সাথে সর্বজনীন রেপো থাকলে সবচেয়ে ভাল উপায় নয়।


গিথুব অ্যাকশনস, ডকার বা কুবারনেটসে আমি যা চাই তা অর্জন করতে আমি কীভাবে আমার উন্নয়ন এবং আমার উত্পাদন কর্মপ্রবাহকে বিভক্ত করতে পারি?

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


7
হাহাহা, এটি দুর্দান্ত:> repository_dispatchএকপাশে, কেউ এলোমেলোভাবে অপরিচিতদের ফিল্টার watchকরার if: github.actor == 'hackerman'জন্য একত্রিত করতে পারে । বা আরও ভাল - if: github.actor == github.event.repository.owner.loginঅতিরিক্ত "সুরক্ষা" এর জন্য: ডি
সামিরা

1
হা হা ধন্যবাদ! হ্যাঁ ভাল ধারণা, আমি সময় পেলেই এটি চেষ্টা করে দেখতে পারি! : ডি
সারাহ আবেদ্রেমান

1
নিখুঁত আমি মনে করি এটি সর্বোত্তম পদ্ধতি যখন কোনও আনুষ্ঠানিকভাবে প্রয়োগ করা হয় নি।
এন্টোইন সি

5

আপডেট : স্ল্যাশ কমান্ড স্টাইল "চ্যাটআপস" সমাধানের জন্য স্ল্যাশ-কমান্ড-প্রেরণের ক্রিয়া দেখুন see এটি আপনাকে /deployইস্যু থেকে স্ল্যাশ কমান্ড (উদাহরণস্বরূপ ) সহ ওয়ার্কফ্লোগুলি ট্রিগার করতে এবং অনুরোধের মন্তব্যগুলি টানতে দেয়।

deployস্ল্যাশ কমান্ডের জন্য এখানে একটি প্রাথমিক উদাহরণ example REPO_ACCESS_TOKENএকটি repoস্কোপড পার্সোনাল অ্যাক্সেস টোকন

name: Slash Command Dispatch
on:
  issue_comment:
    types: [created]
jobs:
  slashCommandDispatch:
    runs-on: ubuntu-latest
    steps:
      - name: Slash Command Dispatch
        uses: peter-evans/slash-command-dispatch@v1
        with:
          token: ${{ secrets.REPO_ACCESS_TOKEN }}
          commands: deploy

এই কর্মপ্রবাহে কমান্ডটি প্রক্রিয়া করা যায়।

name: Deploy Command
on:
  repository_dispatch:
    types: [deploy-command]

আরও অনেক অপশন এবং বিভিন্ন সেটআপ রয়েছে। সম্পূর্ণ ব্যবহারের নির্দেশাবলীর জন্য স্ল্যাশ-কমান্ড-প্রেরণ দেখুন ।

আসল উত্তর : একটি repository_dispatchওয়ার্কফ্লো নিম্নরূপে গিটহাব এপিআইতে কল করার মাধ্যমে ম্যানুয়ালি ট্রিগার করা যেতে পারে।

on:
  repository_dispatch:
    types: [production-deploy]
curl -XPOST -u "[username]:[token]" \
  -H "Accept: application/vnd.github.everest-preview+json" \
  -H "Content-Type: application/json" \
  https://api.github.com/repos/[username]/[repository]/dispatches \
  --data '{"event_type": "production-deploy"}'

1
আগ্রহীদের জন্য, একাধিক প্রেরণের জন্য একক ওয়ার্কফ্লো ব্যবহার করা সম্ভব। যা প্রেরণ করা হয়েছে event_typeতা ওয়ার্কফ্লোতে উপলভ্য github.event.action, সুতরাং নির্দিষ্ট কাজ / পদক্ষেপগুলি সক্ষম / অক্ষম করা যায় যখন প্রয়োজন হয়। পিএস: পিএটি সত্যিই প্রয়োজন হয় না, কার্ল দিয়ে শুরু করে -u "[username]:[password]"বা এমনকি -u "[username]"কাজ করে (দ্বিতীয় ক্ষেত্রে কার্ল ব্যবহারকারীকে পাসওয়ার্ডের জন্য অনুরোধ করে); কিছু ক্ষেত্রে ব্যবহার করা সহজ (উদাহরণস্বরূপ এমন স্ক্রিপ্টগুলি লেখার সময় যা ইউজারনেমকে ইনপুট হিসাবে গ্রহণ করে, বা স্ক্রিপ্টগুলি কম প্রযুক্তি-বুদ্ধিমান ব্যবহারকারীদের দ্বারা ব্যবহার করার উদ্দেশ্যে)।
সামিরা

2

যদিও সারার পোস্টটি মূল প্রশ্নের সবচেয়ে নিকটতম এবং সহজ উত্তর ছিল, এটি কিছুটা হ্যাকি তাই আমরা শেষ পর্যন্ত devনিম্নলিখিত ট্রিগারগুলি ব্যবহার করার জন্য একটি শাখা তৈরি করে শেষ করেছিলাম :

  • বিকাশ কর্মপ্রবাহ: যখন একটি ধাক্কা তৈরি হয় ট্রিগার dev শাখায় :

    on:
      push:
        branches:    
          - dev
    
  • উত্পাদনের কর্মপ্রবাহ: যখন থেকে একটি টানার অনুরোধ / মার্জটি তৈরি করা devহয় তখন ট্রিগার করে master:

    on:
      pull_request:
        branches:    
          - master
    

1

আরও বিশদ / ব্যাখ্যার জন্য সম্পাদিত।

একটা জিনিষ আপনি কি করতে পারেন যে কল repository_dispatch। আপনি একটি ব্যবহারের জন্য গিটহাব ডকুমেন্টেশন দেখতে পারেনrepository_dispatch এখানে

উদাহরণস্বরূপ, যদি আপনার কাছে একটি গিটহাব অ্যাকশনস ওয়ার্কফ্লো থাকে যা দেখতে এরকম দেখায়:

on:
  repository_dispatch:
    types: [run_tests]
name: Run tests
jobs:
  test:
    name: Run your tests
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo "I just ran all your tests!"

উপর উল্লিখিত পদক্ষেপগুলি অনুসরণ করে আপনি একটি সংগ্রহস্থল প্রেরণ ইভেন্ট তৈরি করতে পারেন গিটহাব ভি 3 এপিআই ডকুমেন্টেশনে

প্রথমত, প্রমাণীকরণের জন্য গিটহাবে একটি ব্যক্তিগত অ্যাক্সেস টোকেন (PAT) তৈরি করুন।

তারপরে, আপনি এর curlমতো চালাতে পারেন:

curl \
  -H "Authorization: token $YOUR_PAT" \
  --request POST \
  --data '{"event_type": "run_tests"}' \
  https://api.github.com/repos/$USER/$REPOSITORY/dispatches

একই সময়ে, আমি একটি ছোট প্রকল্পও ভাগ করে নিতে চেয়েছিলাম যা আমি বন্ধুর সাথে কাজ করে যা এই সঠিক সমস্যাটি সমাধান করে।

https://www.actionspanel.app/

অ্যাকশনপ্যানেল এটি ব্যবহার করে repository_dispatch এপিআই করে তবে এটি একটি গিটহাব অ্যাপ টোকেনের সাহায্যে করে যাতে আপনার নিজের প্যাট পরিচালনা করার বিষয়ে আপনার চিন্তা করার দরকার নেই। এটি একাধিক ব্যক্তির সাথে টিম জুড়ে আপনার ক্রিয়াগুলি ট্রিগার করা আরও সহজ করে তোলে।

ব্যবহারকারীর অনুরোধ এবং প্রতিক্রিয়ার ভিত্তিতে আমরা কোন শাখায় প্রেরণ করব তা নির্দিষ্ট করার জন্য আমরা বৈশিষ্ট্যগুলি তৈরি করেছি repository_dispatchএবং আপনি যখন ক্রিয়াকলাপ সম্পাদন করতে চান তখন আমরা পরামিতিগুলি ইনজেকশনের জন্যও তৈরি করেছি।

আপনি রেপোতে রেখে যাওয়া একটি ঘোষণামূলক ইয়ামল ফাইল দিয়ে আপনি আপনার বোতামগুলি কনফিগার করেছেন এবং অ্যাকশনসপ্যানেল সেই ফাইলটি পড়বে এবং আপনার ক্রিয়াকলাপটি সক্রিয় করতে আপনার গতিশীলভাবে আপনার ইউআই তৈরি করবে।


0

বর্তমান গিথুব অ্যাকশন প্রস্তাবের সাথে এটি সমাধানের আরেকটি উপায় হ'ল productionযখন একটি মোতায়েনের প্রয়োজন হয় তখন মাস্টার থেকে একটি শাখা তৈরি করা এবং productionশাখায় পদক্ষেপ স্থাপনের কাজ শুরু করা । productionশাখা মূলত একটি আয়না master

on:
  push:
    branches:    
      - master

যখনই মাস্টারের প্রতিশ্রুতি থাকে তখন দেব বিল্ড / ধাক্কা দিতে পারে।

on:
  push:
    branches:    
      - production

প্রকাশের সময়সূচীর এক পর্যায়ে, আপনি productionশাখায় পিআর বাড়াতে পারেন । এটি প্রোড বিল্ড / মোতায়েনের যত্ন নেবে।

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