From da3ea4851a4a3bc0e3d6565073fbc86067d15c30 Mon Sep 17 00:00:00 2001 From: shortcuts Date: Fri, 6 Jun 2025 10:20:51 +0200 Subject: [PATCH 1/7] fix(scripts): push to repository --- .github/workflows/check.yml | 7 +++++++ scripts/ci/codegen/__tests__/codegen.test.ts | 2 +- scripts/ci/codegen/pushToRepository.ts | 11 ++++++++--- scripts/common.ts | 9 ++++++--- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index c5aef41250b..05a7c936676 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -108,6 +108,12 @@ jobs: yarn eslint --ext=json . echo 'Use yarn fix:json to fix issues' + - name: Push generated files to repositories + run: yarn workspace scripts pushToRepository + env: + GH_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} + GITHUB_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} + outputs: RUN_SCRIPTS: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 }} @@ -705,4 +711,5 @@ jobs: - name: Push generated files to repositories run: yarn workspace scripts pushToRepository env: + GH_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} GITHUB_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} diff --git a/scripts/ci/codegen/__tests__/codegen.test.ts b/scripts/ci/codegen/__tests__/codegen.test.ts index 005e8a93d82..9f74f27493e 100644 --- a/scripts/ci/codegen/__tests__/codegen.test.ts +++ b/scripts/ci/codegen/__tests__/codegen.test.ts @@ -13,6 +13,6 @@ vi.mock('../../../common.ts', async (importOriginal) => { describe('pushGeneratedCode', () => { it('throws without GITHUB_TOKEN environment variable', async () => { vi.stubEnv('GITHUB_TOKEN', ''); - await expect(pushGeneratedCode()).rejects.toThrow('Environment variable `GITHUB_TOKEN` does not exist.'); + await expect(pushGeneratedCode()).rejects.toThrow('Environment variable `GITHUB_TOKEN` or `GH_TOKEN` must be set.'); }); }); diff --git a/scripts/ci/codegen/pushToRepository.ts b/scripts/ci/codegen/pushToRepository.ts index 5125eed8988..fdfdb9fe98a 100644 --- a/scripts/ci/codegen/pushToRepository.ts +++ b/scripts/ci/codegen/pushToRepository.ts @@ -129,10 +129,17 @@ async function pushToRepository(repository: string, config: RepositoryConfigurat console.log(`Preparing push to ${OWNER}/${repository}`); const tempGitDir = resolve(process.env.RUNNER_TEMP! || toAbsolutePath('foo/local/test'), repository); + + console.info(`cleaning ${tempGitDir}`); + await fsp.rm(tempGitDir, { force: true, recursive: true }); + console.info(`cloning ${OWNER}/${repository} in ${tempGitDir}`); + await run(`gh repo clone ${OWNER}/${repository} ${tempGitDir}`); + await configureGitHubAuthor(tempGitDir); + for (const task of config.tasks) { console.log(`Handling '${task.files.type}' file(s)`); @@ -146,7 +153,7 @@ async function pushToRepository(repository: string, config: RepositoryConfigurat await handleGuideFiles(task.files, tempGitDir); } - if (process.env.DRYRUN) { + if (process.env.DRY_RUN) { console.log(`asked for a dry run, stopping before push and PR for '${repository}' on task '${task.prBranch}'`); continue; @@ -163,8 +170,6 @@ async function pushToRepository(repository: string, config: RepositoryConfigurat continue; } - await configureGitHubAuthor(tempGitDir); - await run('git add .', { cwd: tempGitDir }); await gitCommit({ message: task.commitMessage, diff --git a/scripts/common.ts b/scripts/common.ts index b23ad51aba8..d2adf1158f0 100644 --- a/scripts/common.ts +++ b/scripts/common.ts @@ -197,11 +197,14 @@ export async function runComposerInstall(): Promise { } export function ensureGitHubToken(): string { + const githubToken = process.env.GITHUB_TOKEN || process.env.GH_TOKEN || ''; + // use process.env here to mock with vitest - if (!process.env.GITHUB_TOKEN) { - throw new Error('Environment variable `GITHUB_TOKEN` does not exist.'); + if (githubToken == '') { + throw new Error('Environment variable `GITHUB_TOKEN` or `GH_TOKEN` must be set.'); } - return process.env.GITHUB_TOKEN.replaceAll('"', ''); + + return githubToken.replaceAll('"', ''); } export function getOctokit(): Octokit { From 928f097c514dcbf07bf954d41f60f615b331fdc9 Mon Sep 17 00:00:00 2001 From: shortcuts Date: Fri, 6 Jun 2025 10:26:41 +0200 Subject: [PATCH 2/7] chore: force for test --- .github/workflows/check.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 05a7c936676..6b9ebff93c5 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -113,6 +113,7 @@ jobs: env: GH_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} GITHUB_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} + FORCE: true outputs: RUN_SCRIPTS: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 }} From b52e313812fceb306a4a3943522152f12781f513 Mon Sep 17 00:00:00 2001 From: shortcuts Date: Fri, 6 Jun 2025 10:35:49 +0200 Subject: [PATCH 3/7] chore: force for test --- .github/workflows/check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 6b9ebff93c5..56f1a19351e 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -11,7 +11,7 @@ on: concurrency: group: ${{ github.ref }} - cancel-in-progress: ${{ !contains(github.event.head_commit.message, 'prepare release')}} + cancel-in-progress: true # Uncomment the line below to enable artifacts debugging # env: From 2de89168058ae4176c0677087d56fa1e116db12c Mon Sep 17 00:00:00 2001 From: shortcuts Date: Fri, 6 Jun 2025 10:40:42 +0200 Subject: [PATCH 4/7] chore: force for test --- .github/workflows/check.yml | 2 +- scripts/ci/codegen/pushToRepository.ts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 56f1a19351e..6b9ebff93c5 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -11,7 +11,7 @@ on: concurrency: group: ${{ github.ref }} - cancel-in-progress: true + cancel-in-progress: ${{ !contains(github.event.head_commit.message, 'prepare release')}} # Uncomment the line below to enable artifacts debugging # env: diff --git a/scripts/ci/codegen/pushToRepository.ts b/scripts/ci/codegen/pushToRepository.ts index fdfdb9fe98a..5d17dfd2e2a 100644 --- a/scripts/ci/codegen/pushToRepository.ts +++ b/scripts/ci/codegen/pushToRepository.ts @@ -4,6 +4,7 @@ import path, { resolve } from 'path'; import { CLIENTS, configureGitHubAuthor, + ensureGitHubToken, exists, getOctokit, gitBranchExists, @@ -113,6 +114,8 @@ async function handleGuideFiles(guide: GuidesToPush, tempGitDir: string): Promis } async function pushToRepository(repository: string, config: RepositoryConfiguration): Promise { + const token = ensureGitHubToken(); + const lastCommitMessage = await run('git log -1 --format="%s"'); const author = (await run('git log -1 --format="Co-authored-by: %an <%ae>"')).trim(); const coAuthors = (await run('git log -1 --format="%(trailers:key=Co-authored-by)"')) @@ -140,6 +143,8 @@ async function pushToRepository(repository: string, config: RepositoryConfigurat await configureGitHubAuthor(tempGitDir); + await run(`git remote set-url origin https://${token}@github.com/${OWNER}/${repository}.git`); + for (const task of config.tasks) { console.log(`Handling '${task.files.type}' file(s)`); From e9ff3938d9e1b8d351a9403efe1c5fe9eac63bf1 Mon Sep 17 00:00:00 2001 From: shortcuts Date: Fri, 6 Jun 2025 10:56:08 +0200 Subject: [PATCH 5/7] chore: idk --- scripts/ci/codegen/pushToRepository.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/scripts/ci/codegen/pushToRepository.ts b/scripts/ci/codegen/pushToRepository.ts index 5d17dfd2e2a..3159258806e 100644 --- a/scripts/ci/codegen/pushToRepository.ts +++ b/scripts/ci/codegen/pushToRepository.ts @@ -4,7 +4,6 @@ import path, { resolve } from 'path'; import { CLIENTS, configureGitHubAuthor, - ensureGitHubToken, exists, getOctokit, gitBranchExists, @@ -114,8 +113,6 @@ async function handleGuideFiles(guide: GuidesToPush, tempGitDir: string): Promis } async function pushToRepository(repository: string, config: RepositoryConfiguration): Promise { - const token = ensureGitHubToken(); - const lastCommitMessage = await run('git log -1 --format="%s"'); const author = (await run('git log -1 --format="Co-authored-by: %an <%ae>"')).trim(); const coAuthors = (await run('git log -1 --format="%(trailers:key=Co-authored-by)"')) @@ -143,7 +140,7 @@ async function pushToRepository(repository: string, config: RepositoryConfigurat await configureGitHubAuthor(tempGitDir); - await run(`git remote set-url origin https://${token}@github.com/${OWNER}/${repository}.git`); + await run(`git remote set-url origin git@github.com:${OWNER}/${repository}.git`); for (const task of config.tasks) { console.log(`Handling '${task.files.type}' file(s)`); From 20ec4b8aa1a18d788769e0b04c0c56e15c3e1dd8 Mon Sep 17 00:00:00 2001 From: shortcuts Date: Fri, 6 Jun 2025 11:00:06 +0200 Subject: [PATCH 6/7] chore: idk --- scripts/ci/codegen/pushToRepository.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/ci/codegen/pushToRepository.ts b/scripts/ci/codegen/pushToRepository.ts index 3159258806e..540bee74978 100644 --- a/scripts/ci/codegen/pushToRepository.ts +++ b/scripts/ci/codegen/pushToRepository.ts @@ -4,6 +4,7 @@ import path, { resolve } from 'path'; import { CLIENTS, configureGitHubAuthor, + ensureGitHubToken, exists, getOctokit, gitBranchExists, @@ -113,6 +114,8 @@ async function handleGuideFiles(guide: GuidesToPush, tempGitDir: string): Promis } async function pushToRepository(repository: string, config: RepositoryConfiguration): Promise { + const token = ensureGitHubToken(); + const lastCommitMessage = await run('git log -1 --format="%s"'); const author = (await run('git log -1 --format="Co-authored-by: %an <%ae>"')).trim(); const coAuthors = (await run('git log -1 --format="%(trailers:key=Co-authored-by)"')) @@ -140,7 +143,7 @@ async function pushToRepository(repository: string, config: RepositoryConfigurat await configureGitHubAuthor(tempGitDir); - await run(`git remote set-url origin git@github.com:${OWNER}/${repository}.git`); + await run(`git config --global url.https://${token}@github.com/.insteadOf https://github.com/`); for (const task of config.tasks) { console.log(`Handling '${task.files.type}' file(s)`); From 89fa984a99ddba5ec155a3e09735a447735cbff2 Mon Sep 17 00:00:00 2001 From: shortcuts Date: Fri, 6 Jun 2025 11:13:52 +0200 Subject: [PATCH 7/7] chore: revert test --- .github/workflows/check.yml | 7 ------- .github/workflows/push-to-repository.yml | 1 + 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 6b9ebff93c5..2a7cfdc7ba0 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -108,13 +108,6 @@ jobs: yarn eslint --ext=json . echo 'Use yarn fix:json to fix issues' - - name: Push generated files to repositories - run: yarn workspace scripts pushToRepository - env: - GH_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} - GITHUB_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} - FORCE: true - outputs: RUN_SCRIPTS: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 }} diff --git a/.github/workflows/push-to-repository.yml b/.github/workflows/push-to-repository.yml index c8cbffeed6f..12030da2a41 100644 --- a/.github/workflows/push-to-repository.yml +++ b/.github/workflows/push-to-repository.yml @@ -30,4 +30,5 @@ jobs: - run: yarn workspace scripts pushToRepository ${{ inputs.name }} env: GITHUB_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} + GH_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} FORCE: true