push-patch.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const { createAppAuth } = require('@octokit/auth-app');
  2. const cp = require('child_process');
  3. if (!process.env.CIRCLE_BRANCH) {
  4. console.error('Not building for a specific branch, can\'t autopush a patch');
  5. process.exit(1);
  6. }
  7. if (process.env.CIRCLE_PR_NUMBER) {
  8. console.error('Building for a forked PR, can\'t autopush a patch');
  9. process.exit(1);
  10. }
  11. const auth = createAppAuth({
  12. appId: process.env.PATCH_UP_APP_ID,
  13. privateKey: Buffer.from(process.env.PATCH_UP_PRIVATE_KEY, 'base64').toString('utf8'),
  14. installationId: process.env.PATCH_UP_INSTALLATION_ID,
  15. clientId: process.env.PATCH_UP_CLIENT_ID,
  16. clientSecret: process.env.PATCH_UP_CLIENT_SECRET
  17. });
  18. async function main () {
  19. const installationAuth = await auth({ type: 'installation' });
  20. const remoteURL = `https://x-access-token:${installationAuth.token}@github.com/electron/electron.git`;
  21. // NEVER LOG THE OUTPUT OF THIS COMMAND
  22. // GIT LEAKS THE ACCESS CREDENTIALS IN CONSOLE LOGS
  23. const { status } = cp.spawnSync('git', ['push', '--set-upstream', remoteURL], {
  24. stdio: 'ignore'
  25. });
  26. if (status !== 0) {
  27. console.error('Failed to push to target branch');
  28. process.exit(1);
  29. }
  30. }
  31. if (process.mainModule === module) {
  32. main().catch((err) => {
  33. console.error(err);
  34. process.exit(1);
  35. });
  36. }