s3lph बनवले – फोर्जो ॲक्शन आणि नूतनीकरणासह AUR पॅकेजेस तयार करणे

s3lph बनवले – फोर्जो ॲक्शन आणि नूतनीकरणासह AUR पॅकेजेस तयार करणे


Arch User Repository (AUR) हे Arch Linux साठी वापरकर्त्याने योगदान दिलेल्या स्त्रोत पॅकेजेसचा संग्रह आहे. हे पॅकेज, जे पुनरावलोकनाशिवाय कोणीही सबमिट केले जाऊ शकतात, त्यात फक्त पॅकेज मेटाडेटा आणि स्त्रोतावरून सॉफ्टवेअर डाउनलोड आणि तयार करण्याच्या सूचना असतात. याचा अर्थ असा की AUR पॅकेजेस वापरताना विशेष काळजी घेणे आवश्यक आहे; ते अत्यंत उपयुक्त असू शकतात, परंतु त्यामध्ये मालवेअर देखील असू शकतात जसे की अलीकडेच उघड झाले आहे.

AUR पॅकेज तयार करण्याचा “शिफारस केलेला” मार्ग म्हणजे पॅकेज स्रोत भांडार तपासणे, त्यातील सामग्रीचे पुनरावलोकन करणे आणि नंतर आर्कचा वापर करून पॅकेज तयार करणे. makepkg पॅकेज बिल्ड टूल. ही एक कंटाळवाणी प्रक्रिया असल्याने, विविध AUR बिल्ड हेल्पर टूल्स अस्तित्वात आहेत, तथापि त्यांचा वापर करण्याची शिफारस केलेली नाही, कारण ते बऱ्याचदा कठीण-टू-समस्या निवारणासाठी कारणीभूत असतात. अशा AUR सहाय्यकांचा दीर्घकाळ वापरकर्ता असल्याने आणि वर उल्लेख केलेल्या समस्यांकडे नियमितपणे धावत असल्याने, मला AUR पॅकेजेस तयार करण्यासाठी एक चांगला (आणि अधिक सहज) उपाय शोधायचा होता.

बचावासाठी फोर्जो!

ओपन-सोर्स गिट फोर्ज फोर्जो, जे आम्ही आमच्या हॅकरस्पेसवर देखील चालवतो, आर्क लिनक्स पॅकेज रेजिस्ट्रीसह येते. आर्क लिनक्स इन्स्टॉलेशनमधील सॉफ्टवेअर रिपॉझिटरीजच्या सूचीमध्ये ही रेजिस्ट्री जोडली जाऊ शकते /etc/pacman.confआणि संकलित पॅकेजेस REST API एंडपॉइंटद्वारे त्याकडे ढकलले जाऊ शकतात.

मला आवश्यक असलेली AUR पॅकेजेस तयार करण्यासाठी, मी फोर्जो ॲक्शन्स वर्कफ्लो सेट केला आहे, जे आठवड्यातून किमान एकदा किंवा बदल रेपॉजिटरीमध्ये ढकलले जातात तेव्हा हे पॅकेज तयार करते:

---

# Build on commits to main and once a week
on:
  push:
    branches:
      - main
  schedule:
    - cron: "0 6 * * 1"  # every Monday at 6 AM

jobs:

  # One step per package, for other packages just do `packagename: *job`
  sslyze: &job
    runs-on: docker
    container:
      # base-devel is implicitly required for package building. 
      # Any other dependencies must be declared explicitly.
      image: docker.io/library/archlinux:base-devel
    env:
      # Secrets required to push to the package registry
      API_REPOSITORY_ARCH: ${{ secrets.API_REPOSITORY_ARCH }}
      API_REPOSITORY_ARCH_DEBUG: ${{ secrets.API_REPOSITORY_ARCH_DEBUG }}
      API_USERNAME: ${{ secrets.API_USERNAME }}
      API_PASSWORD: ${{ secrets.API_PASSWORD }}
    steps:

      - name: Prepare build pipeline
        run: |
          # nodejs and git are needed for the checkout action; unlike the default image,
          # `docker.io/library/ubuntu`, these are not shipped by default in `archlinux:base-devel`.
          pacman --noconfirm -Sy nodejs git

      - name: Checkout repository
        # This only checks out the project repo, not the submodules
        uses: https://code.forgejo.org/actions/checkout@v7

      - name: Build and upload package
        run: |
        # Add AUR repo itself for makedepends from AUR
          curl https://git.kabelsalat.ch/api/packages/s3lph/arch/repository.key > /sign.gpg
          pacman-key --init
          pacman-key --add /sign.gpg
          pacman-key --lsign-key 's3lph@noreply.git.kabelsalat.ch'
          cat >> /etc/pacman.conf 
          (aur)
          SigLevel = Required
          Server = https://git.kabelsalat.ch/api/packages/s3lph/arch/aur/\$arch
          EOF
          pacman -Sy
        # Checkout only the submodule of the package to build in this job
          git submodule update --init "${FORGEJO_JOB}"
          chown nobody: -R "${FORGEJO_JOB}" && cd "${FORGEJO_JOB}"
        # Check if the PKGBUILD contains run-time or compile-time dependencies, and install if necessary
          (source ./PKGBUILD && (( -n "${depends(@)}${makedepends(@)}" )) && pacman --noconfirm -S ${depends(@)} ${makedepends(@)} || true)
        # Build the binary package(s) from this source package
          sudo -E -u nobody -- makepkg --cleanbuild
        # All debug packages are uploaded to the separate aur-debug registry
          for file in *-debug-*pkg.tar*; do
            curl -X PUT "${API_REPOSITORY_ARCH_DEBUG}" \
              --user "${API_USERNAME}:${API_PASSWORD}" \
              --header "Content-Type: application/octet-stream" \
              --data-binary @"${file}" || true
          done
          rm -f *-debug-*pkg.tar*
        # The regular packages are uploaded to the `aur` registry
          for file in *pkg.tar*; do
            curl -X PUT "${API_REPOSITORY_ARCH}" \
              --user "${API_USERNAME}:${API_PASSWORD}" \
              --header "Content-Type: application/octet-stream" \
              --data-binary @"${file}"
          done

Renovate सह पॅकेजेस अपडेट करत आहे

त्यामुळे आता माझ्याकडे एक पाइपलाइन आहे जी मला नियमितपणे आवश्यक असलेली AUR पॅकेजेस तयार करते आणि एक भांडार आहे जिथे ही पॅकेजेस ढकलली जातात. तथापि, कोणताही दुर्भावनापूर्ण कोड सादर केला जात नाही याची खात्री करण्यासाठी मला AUR पॅकेजमधील सर्व बदलांचे पुनरावलोकन करण्याची समस्या अजूनही आली आहे.

याचे निराकरण करण्यासाठी, मी माझ्या पाइपलाइन रेपॉजिटरीमध्ये आवश्यक असलेले सर्व AUR पॅकेज रिपॉझिटरीज गिट सबमॉड्यूल म्हणून जोडले. हे सबमॉड्यूल एका निश्चित गिट कमिट आयडीवर पिन केलेले आहेत, म्हणून मी पुनरावलोकन न केलेले नवीनतम बदल खेचत नाही, परंतु नेहमी एक पॅकेज तयार करतो ज्यासाठी मला माहित आहे की मी बिल्ड सूचनांचे पुनरावलोकन केले आहे.

या सबमॉड्यूल्सची अपडेट्स प्राप्त करण्यासाठी, मी रिनोवेट हे अवलंबित्व व्यवस्थापन साधन वापरत आहे, जे त्याच फोर्जो सर्व्हरवरील दुसऱ्या रेपॉजिटरीमध्ये फोर्जो ॲक्शन वर्कफ्लो म्हणून चालते. दिवसातून एकदा, नूतनीकरण तपासते की कोणत्याही प्रकारचे अवलंबित्व अद्यतने आहेत की नाही जी ते देखरेख ठेवणाऱ्या भांडारांवर लागू करणे आवश्यक आहे. इतर अनेक प्रकारच्या अवलंबनांपैकी, रिनोवेट ही कमिट ए गिट सबमॉड्यूल पॉईंट करते की नाही हे तपासण्यासाठी देखील समर्थन करते. अशी कोणतीही “कालबाह्य” अवलंबित्व आढळल्यास, Renovate रेपॉजिटरी विरुद्ध पुल विनंती उघडते आणि पुनरावलोकनासाठी मालकास नियुक्त करते.

तथापि, या पुल विनंत्यांमध्ये केवळ बदललेल्या सबमॉड्यूल कमिट आयडीचा समावेश आहे, त्यामुळे वास्तविक बदलांचे पुनरावलोकन करणे तितके क्षुल्लक नाही:

--- a/sslyze
+++ b/sslyze
@@ -1 +1 @@
-Subproject commit 848023a5347b8af959de3287d65eb12b0fc341e2
+Subproject commit d78430b2aad33c00ca047f4f498d61ef9a25566e

कोडेचा शेवटचा भाग हा आणखी एक फोर्जो ॲक्शन्स वर्कफ्लो आहे, जो या पुल विनंत्यांमुळे ट्रिगर झाला आहे:

---

# Run whenever a PR is opened or changed
on:
  pull_request:
    types:
      - opened
      - synchronize
      - reopened

jobs:

  diff:
    runs-on: docker
    steps:

      - name: Checkout repository
        uses: https://code.forgejo.org/actions/checkout@v6
        with:
          submodules: true
          fetch-depth: 0

      - name: Compute diff and post comment
        run: |
          apt update; apt install --yes python3-all
        # the comment.py script just posts the output of `git diff --submodule=diff`
        # as a comment to the PR, or updates an existing comment.
          python3 .forgejo/comment.py

हा वर्कफ्लो सर्व सबमॉड्यूल्ससह पाइपलाइन रेपॉजिटरी तपासतो आणि सबमॉड्यूल्ससह PR भिन्नतेची गणना करतो. परिणामी फरक नंतर पुल विनंतीवर टिप्पणी म्हणून पोस्ट केला जातो, जो मला बदलांचे सहजपणे पुनरावलोकन करण्यास अनुमती देतो:

s3lph बनवले – फोर्जो ॲक्शन आणि नूतनीकरणासह AUR पॅकेजेस तयार करणे

आकृती 1: फोर्जो ॲक्शन्सच्या पुल विनंतीवर टिप्पणी केलेल्या भिन्नतेचा स्क्रीनशॉट



Source link

Postagens Similares

  • Kadın en yakın arkadaşı için nişan planlıyor; aslında bu onun arkadaşı

    Tüm zamanların en tatlı, en romantik şakası. Susan LaMarca 24 Ekim 2025 05:30 CDT’de yayınlandı Arkadaşı için ayrıntılı bir teklifin planlanmasına yardım ettiğini düşünerek kandırılan bir kadın, kendi erkeği dizinin üstüne çökünce şok oldu. Öne Çıkan Video Hiçbir fikri olmayan gelin adayının kız kardeşi Tiffany, 5,9 milyon izlenmeyle viral olan bir TikTok videosunda Richard’ın Ali’ye…

  • 獲得第一份帶薪 Upwork 工作的 7 天計劃

    這篇文章可能包含附屬鏈接,您無需支付額外費用,我們可能會賺取少量佣金。請閱讀揭露政策以獲取更多資訊。 最後更新於 2026 年 3 月 24 日,作者:Katie 雖然多年的經驗有助於您獲得第一份 Upwork 有薪工作,但這並不是必要的。 不過,您確實需要的是本周可以提供的一項小型服務、一份 10 秒內有意義的個人資料,以及一個快速應用到強匹配的簡單例程。 這個為期 7 天的計劃專為想要在家工作並開始以自由職業收入取代朝九晚五的初學者而設計。 方法很簡單:選擇一個狹窄的職位,建立清晰的個人資料,創建一些現實的樣本,然後向適合的工作發送簡短的建議。 另外,不要忽視固定價格的入門演出。他們通常對新自由工作者感到更安全,因為範圍更清晰,終點線更近。 如果您想了解更多關於如何入門的想法,請瀏覽這些針對初學者的 Upwork 收入想法。 調查迷: 賺 透過調查賺錢 並提出您對新產品的意見。每月向會員支付超過 150 萬美元! 立即加入調查迷。 美國消費者意見: 透過參與調查和參與研究,您的意見將獲得報酬。 賺取 1 至 50 美元之間 每項調查。 立即加入 ACOP。 首先選擇您的 Upwork 利基(以便客戶可以快速答應) 透過利基研究磨練出來的狹窄利基就像商店外的乾淨標誌。 路過的人都知道裡面是什麼。在 Upwork 上,這一點很重要,因為客戶可以快速瀏覽、快速比較,並聘請聽起來是最安全選擇的自由工作者。 如果你嘗試做所有事情,你的建議就會變得模糊。 如果你選擇一個小結果,你會寫得更快,應用得更快,而且看起來更可信。 適合初學者的利基創意,具有需求技能和明確的成果: Canva 社交貼文 (例如,本地企業的 12 個品牌貼文) 潛在客戶名單建設…

  • ஒரு நடையுடன் தொடங்குங்கள் – ரிட்ஜ்லைன் வெளியீடு 223

    ரிட்ஜ்லைன் சந்தாதாரர்கள் – ஜனவரி கான்டோ ஜப்பானின் நீல வானத்தை நான் விரும்புகிறேன். இது பொதுவாக சூடாக இருக்கும், நிச்சயமாக சூரியனில். அந்த குளிர்காலக் கடலை வெளியே பார்ப்பது ஒரு காட்டு இதயத்தை குணப்படுத்துகிறது. ஒரு மெகா நடைப்பயணத்துடன் ஆண்டைத் தொடங்குவது ஒருபோதும் மோசமான யோசனை அல்ல. தசைகள், உங்களுக்கு கிடைத்தது. கால்கள், அவை வேலை செய்கின்றன. எனவே, இந்த ஆண்டு அப்படித்தான் தொடங்கியது. மிசாகி-குச்சிக்கு பயிற்சி அளிக்கப்பட்டது – மியுரா தீபகற்பத்தின் முனையிலுள்ள ஒரு அழகான…

  • లేట్-నైట్ Minecraft సెషన్స్ తర్వాత సోదరుడి బెస్ట్ ఫ్రెండ్‌పై క్రష్ నిజమైందని మహిళ చెప్పింది

    రెడ్‌డిట్‌లోని ఒక మహిళ Minecraft గేమ్ మరియు తన సోదరుడి బెస్ట్‌ఫ్రెండ్‌పై వెర్రి ప్రేమ ఎలా నిజమైన సంబంధంగా మారిందో షేర్ చేసిన తర్వాత వైరల్ అవుతోంది. సబ్‌రెడిట్ పోస్ట్ 22,000 కంటే ఎక్కువ అప్‌వోట్‌లను మరియు 900 కంటే ఎక్కువ వ్యాఖ్యలను పొందింది, ఇది ఆరోగ్యకరమైన కథనాన్ని జరుపుకుంటుంది. @Any_Fly278 ద్వారా వెళుతున్న 21 ఏళ్ల వినియోగదారు ప్రముఖ సబ్‌రెడిట్ ఫోరమ్ ‘గర్ల్ డిన్నర్ డైరీస్’లో తన కథనాన్ని పంచుకున్నారు. మహిళ యొక్క 25 ఏళ్ల…

  • Baraza la Scarfolk: Tukio la Solstice (1978)

    Ifuatayo ni onyesho la msanii, na Polaroids zilizovumbuliwa hivi majuzi, za Tukio la Solstice la 1978 ambapo ibada ya uchawi iliharibika huko Scarfolk Henge na kusababisha mabadiliko ya shahidi wa dhabihu kuwa chombo kikubwa cha anga. Wakati Druid wala daktari hawakuweza kubadili mchakato, mwathirika akawa mascot mji, kutoa wapanda kwa watoto. Rekodi zinaonyesha, hata hivyo,…

  • ジョン・レノンのクリスマス・プロテスト・ソング – 最後のミックス・テープ

    Happy Xmas (War Is Over) はプロテストソングのようには聞こえませんが、まさにそれがポイントです。 『ザ・ラスト・ミックス・テープ』のこのエピソードでは、ジョン・レノンがどのようにクリスマス、伝統、親しみやすさを利用して、ポピュラー音楽の中で最も静かに過激な政治的メッセージの1つを伝えたかを探ります。 ベトナム戦争を背景にしたこのエピソードでは、ジョン・レノンが対立から説得へ移行した過程をたどる。平和のためのベッドインや『Give Peace a Chance』から、イマジン、オノ・ヨーコの影響、そして政治的思想は「少しの蜂蜜を添えて」伝えることで最も長続きするという信念に至るまでだ。 「ハッピー クリスマス (戦争は終わった)」は季節の定番というよりも、反論するのではなく、共に生きることを目的としたプロテスト ソングであり、その遺産は、音楽がいかに声を上げずに文化を変えることができるかを明らかにしています。 The Last Mixed Tape は Stephen White がホストしており、Spotify や Apple Podcasts でも視聴できます。 Source link

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *