diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 16f100d9934..639eef886ca 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -705,4 +705,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/.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 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..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)"')) @@ -129,10 +132,19 @@ 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); + + 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)`); @@ -146,7 +158,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 +175,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 {