• 0

Github webhook مع NextJs

أنا أعمل على مشروع NextJS وأريد استخدام خطاف ويب GITHUB لنشر برنامج نصي يحتوي على إرشادات النشر.

لقد قمت بإعداد خطاف ويب للدفع في GITHUB

حاولت إضافة الكود التالي في ملف server.ts الخاص بي واختباره الآن مع ngrok

// testing
server.post("/webhooks/github", function(req, res) {
  var sender = req.body.sender;
  var branch = req.body.ref;

  if (branch.indexOf("master") > -1 && sender.login === githubUsername) {
    deploy(res);
  }
});

function deploy(res: any) {
  childProcess.exec("sh deploy.sh", function(err, stdout, stderr) {
    if (err) {
      console.error(err, stderr);
      return res.send(500);
    }
    console.log(stdout);
    res.send(200);
  });
}

هذا الملف هو ملف NODEالخاص بي لتطبيق JS التالي

لكنني أحصل على 502 في سجلات ngrok الخاصة بي

أرغب في معرفة المكان الذي يجب أن أضع فيه نقطة نهاية خطاف الويب هذا في تطبيق NextJS الخاص بي لتشغيله

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك تجربة هذا الكود 

// pages/api/webhooks/github.js
const { exec } = require("child_process");
const crypto = require("crypto");

// Handle GitHub Webhooks
export default function handler(req, res) {
    try {
        console.log("Incoming Request");
        if (req.method !== 'POST') {
            res.send(404);
            return;
        }
        let sig =
            "sha256=" +
            crypto
                .createHmac("sha256", process.env.WEBHOOKS_SECRET)
                .update(JSON.stringify(req.body))
                .digest("hex");
        if (
            req.headers["x-hub-signature-256"] === sig &&
            req.body?.ref === "refs/heads/main" &&
            process.env.REPO_PATH
        ) {
            exec(
                "cd " +
                    process.env.REPO_PATH +
                    " && git pull && npm install && npm run build && pm2 restart app"
            );
            console.log("GitHub Webhook ran successfully");
            res.end();
            return;
        }
        console.log("GitHub Webhook failed");
        res.end();
        return;
    } catch (e) {
        console.log(e);
    }
};

أو يمكنك ذلك من خلال إنشاء تطبيق آخر على نفس الخادم , يمكنك استخدام Express , ثم استخدم نقطة نهاية لذلك مثل github webhook ومن هناك تستطيع تشغيل البرنامج النصي للنشر.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن