जब एक अन्य रिपॉजिटरी एक नया रिलीज़ बनाता है तो ट्रिगर एक गिटहब एक्शन


11

मैं एक GitHub वर्कफ़्लो का निर्माण करने की कोशिश कर रहा हूँ जो तब ट्रिगर किया जाएगा जब एक और रिपॉजिटरी एक नया रिलीज़ बनाता है।

प्रलेखन में, पैराग्राफ है: on.event_name.typesजहां event_nameहोगा release

सवाल यह है: क्या किसी releaseअन्य रिपॉजिटरी की घटना को संदर्भित करने का कोई तरीका है?


1
मैं ऐसा नहीं मानता। आपको रीपो तक पहुंच की आवश्यकता होगी जो रिलीज़ बनाता है।
ऑक्टोस्किट

जवाबों:


11

क्या किसी अन्य रिपॉजिटरी की रिलीज़ घटना को संदर्भित करने का कोई तरीका है?

निश्चित रूप से यह सुविधा मौजूद नहीं है।

यदि आपके पास रिलीज़ बनाने वाली रिपॉजिटरी तक पहुंच है, तो आप on: repository_dispatchकिसी अन्य रिपॉजिटरी में चलाने के लिए वर्कफ़्लो को ट्रिगर करने के लिए एक वेबहुक इवेंट को कॉल कर सकते हैं । भंडार-प्रेषण कार्रवाई इस मामले में मदद कर सकती है।

यदि आपके पास रिलीज़ बनाने वाली रिपॉजिटरी तक पहुँच नहीं है (जो मुझे लगता है कि यहाँ मामला है) तो यह मेरा सुझाव होगा। सबसे पहले, निम्नलिखित वर्कफ़्लो बनाएं जो समय-समय पर आपके द्वारा ट्रैक किए जाने वाले रिपॉजिटरी के रिलीज़ संस्करण टैग की जांच करता है। यदि यह आपके द्वारा अपने भंडार में सहेजे गए रिलीज़ संस्करण से भिन्न है तो नया संस्करण प्रतिबद्ध होगा।

ध्यान दें कि आपको काम करने के लिए संशोधित फ़ाइलों की जांच के लिए पहले गंतव्य फ़ाइल तैयार करनी चाहिए (उदाहरण के लिए रिलीज़-संस्करण / स्वैगर-यूआई-नवीनतम-टेक्स्ट)। इसके अलावा, आपको repoडिफ़ॉल्ट के बजाय एक स्कॉप्ड टोकन का उपयोग करना होगा GITHUB_TOKEN। इसके बारे में अधिक विस्तार से देखें पुश को जीथहब एक्शन से उत्पन्न किया गया है

name: Get latest release version
on:
  schedule:
    - cron:  '0 10 * * *'
jobs:
  get-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          token: ${{ secrets.REPO_SCOPED_TOKEN }}
      - name: Fetch release version
        run: |
          curl -sL https://api.github.com/repos/swagger-api/swagger-ui/releases/latest | \
          jq -r ".tag_name" > release-versions/swagger-ui-latest.txt
      - name: Check for modified files
        id: git-check
        run: echo ::set-output name=modified::$([ -z "`git status --porcelain`" ] && echo "false" || echo "true")
      - name: Commit latest release version
        if: steps.git-check.outputs.modified == 'true'
        run: |
          git config --global user.name 'Your Name'
          git config --global user.email 'your-email@users.noreply.github.com'
          git commit -am "New release version"
          git push

फिर आप एक दूसरा वर्कफ़्लो बना सकते हैं जो केवल तब चलता है जब यह डायरेक्टरी में कोई बदलाव देखता है release-versions

on:
  push:
    paths:
      - 'release-versions/*'

इस वर्कफ़्लो में आप सहेजे गए संस्करण का उपयोग उन परिसंपत्तियों को लाने के लिए कर सकते हैं जिनकी आपको ज़रूरत है और आपको जो भी प्रसंस्करण की आवश्यकता है वह करें।

यहां एक समान उदाहरण है जो तुरंत करने के बजाय एक पुल अनुरोध उठाता है।


1
अफसोस की बात है कि आपने मेरे कूबड़ की पुष्टि की। इसके अलावा, अपने दृष्टिकोण को साझा करने के लिए धन्यवाद।
पियरपिडी

2
मैं अपना अनुभव जोड़ना चाहता हूं: इसके बजाय इसका उपयोग करें: $(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)मुझे लगता है कि इसका उपयोग करना बेहतर होगा: $([ -z "`git status --porcelain`" ] && echo "false" || echo "true") क्यों? git diff-indexउस स्थिति में भी एक मान लौटाएगा जो केवल फ़ाइल का संशोधित टाइमस्टैम्प बदल गया है। यह करने के लिए प्रतिबद्ध विफल होने का कारण होगा क्योंकि वहाँ कोई परिवर्तन करने के लिए प्रतिबद्ध हैं। git statusजब वास्तविक सामग्री बदल गई है तो केवल कुछ का उपयोग करना होगा।
किर्कोन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.