アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

node jsでGitHubの/actions/runners/generate-jitconfig APIを叩く

import { createRequire } from 'module';
const require = createRequire(import.meta.url);

const https = require('https'); 

async function generateJitConfig(fullName, id) {
  return new Promise((resolve, reject) => {
      const request = https.request({
          method: "POST",
          host: 'api.github.com',
          port: "443",
          headers: {
            "Accept": "application/vnd.github+json",
            "X-GitHub-Api-Version": "2022-11-28",
            "Authorization": `Bearer ${process.env["GITHUB_TOKEN"]}`,
            "User-Agent": "awslambda"
          },
          path: `/repos/${fullName}/actions/runners/generate-jitconfig`,
      }, (response) => { 
        let data = ''; 
    
        response.on('data', (chunk) => { 
            data += chunk; 
        }); 
        response.on('end', () => { 
          try {
            resolve(JSON.parse(data));
          } catch (err) {
            reject(new Error(err));
          }
        }); 
      }
    );
    request.on('error', err => {
      reject(new Error(err));
    });
    request.write(JSON.stringify({
      "name": `${id}`,
      "runner_group_id": 1,
      "labels": ["self-hosted", "X64", "Linux"],
      "work_folder": "work"
    }));
    request.end();
  })
}