From 8856709103554620aa5750b1a0bef18fcc758969 Mon Sep 17 00:00:00 2001 From: peaceiris <30958501+peaceiris@users.noreply.github.com> Date: Thu, 6 Feb 2020 14:13:32 +0900 Subject: [PATCH 01/10] fix: Enable to create branch for first deployment Close #91 --- src/git-utils.ts | 65 +++++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/src/git-utils.ts b/src/git-utils.ts index 59c6b3002..68a4c34fa 100644 --- a/src/git-utils.ts +++ b/src/git-utils.ts @@ -65,39 +65,46 @@ export async function setRepo(inps: Inputs, remoteURL: string): Promise { } } }; - result.exitcode = await exec.exec( - 'git', - [ - 'clone', - '--depth=1', - '--single-branch', - '--branch', - inps.PublishBranch, - remoteURL, - workDir - ], - options - ); - process.chdir(workDir); + try { + result.exitcode = await exec.exec( + 'git', + [ + 'clone', + '--depth=1', + '--single-branch', + '--branch', + inps.PublishBranch, + remoteURL, + workDir + ], + options + ); + if (result.exitcode === 0) { + if (inps.KeepFiles) { + core.info('[INFO] Keep existing files'); + } else { + await exec.exec('git', ['rm', '-r', '--ignore-unmatch', '*']); + } - if (result.exitcode === 0) { - if (inps.KeepFiles) { - core.info('[INFO] Keep existing files'); + await copyAssets(publishDir, workDir); + return; } else { - await exec.exec('git', ['rm', '-r', '--ignore-unmatch', '*']); + throw new Error(`Failed to close remote branch ${inps.PublishBranch}`); + } + } catch (e) { + if (result.exitcode === 128) { + core.info( + `[INFO] first deployment, create new branch ${inps.PublishBranch}` + ); + process.chdir(workDir); + await createWorkDir(workDir); + await createBranchForce(inps.PublishBranch); + await copyAssets(publishDir, workDir); + return; + } else { + throw new Error(e); } - - await copyAssets(publishDir, workDir); - return; - } else { - core.info( - `[INFO] first deployment, create new branch ${inps.PublishBranch}` - ); - await createWorkDir(workDir); - await createBranchForce(inps.PublishBranch); - await copyAssets(publishDir, workDir); - return; } } From ae23f1aae6d51d7eb742081b9c302a2fb9fb9752 Mon Sep 17 00:00:00 2001 From: peaceiris <30958501+peaceiris@users.noreply.github.com> Date: Thu, 6 Feb 2020 14:18:51 +0900 Subject: [PATCH 02/10] fix: error handling --- src/git-utils.ts | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/git-utils.ts b/src/git-utils.ts index 68a4c34fa..bf78b92a6 100644 --- a/src/git-utils.ts +++ b/src/git-utils.ts @@ -93,18 +93,15 @@ export async function setRepo(inps: Inputs, remoteURL: string): Promise { throw new Error(`Failed to close remote branch ${inps.PublishBranch}`); } } catch (e) { - if (result.exitcode === 128) { - core.info( - `[INFO] first deployment, create new branch ${inps.PublishBranch}` - ); - process.chdir(workDir); - await createWorkDir(workDir); - await createBranchForce(inps.PublishBranch); - await copyAssets(publishDir, workDir); - return; - } else { - throw new Error(e); - } + core.info( + `[INFO] first deployment, create new branch ${inps.PublishBranch}` + ); + core.info(e); + process.chdir(workDir); + await createWorkDir(workDir); + await createBranchForce(inps.PublishBranch); + await copyAssets(publishDir, workDir); + return; } } From bbfae795e1ee710496dffbd78c1206886b4bc97c Mon Sep 17 00:00:00 2001 From: peaceiris <30958501+peaceiris@users.noreply.github.com> Date: Thu, 6 Feb 2020 14:20:35 +0900 Subject: [PATCH 03/10] fix: remove chdir --- src/git-utils.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/git-utils.ts b/src/git-utils.ts index bf78b92a6..764b96776 100644 --- a/src/git-utils.ts +++ b/src/git-utils.ts @@ -97,7 +97,6 @@ export async function setRepo(inps: Inputs, remoteURL: string): Promise { `[INFO] first deployment, create new branch ${inps.PublishBranch}` ); core.info(e); - process.chdir(workDir); await createWorkDir(workDir); await createBranchForce(inps.PublishBranch); await copyAssets(publishDir, workDir); From d6396b92c88c03140715307a54d681f8dfe2d97b Mon Sep 17 00:00:00 2001 From: peaceiris <30958501+peaceiris@users.noreply.github.com> Date: Thu, 6 Feb 2020 14:29:07 +0900 Subject: [PATCH 04/10] fix: allow empty commit for first deployment --- src/git-utils.ts | 11 +++++++---- src/main.ts | 11 +++++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/git-utils.ts b/src/git-utils.ts index 764b96776..0626525c6 100644 --- a/src/git-utils.ts +++ b/src/git-utils.ts @@ -38,7 +38,10 @@ export async function copyAssets( return; } -export async function setRepo(inps: Inputs, remoteURL: string): Promise { +export async function setRepo( + inps: Inputs, + remoteURL: string +): Promise { const workDir = path.join(getHomeDir(), 'actions_github_pages'); const publishDir = path.join( `${process.env.GITHUB_WORKSPACE}`, @@ -51,7 +54,7 @@ export async function setRepo(inps: Inputs, remoteURL: string): Promise { process.chdir(workDir); await createBranchForce(inps.PublishBranch); await copyAssets(publishDir, workDir); - return; + return false; } const result: CmdResult = { @@ -88,7 +91,7 @@ export async function setRepo(inps: Inputs, remoteURL: string): Promise { } await copyAssets(publishDir, workDir); - return; + return false; } else { throw new Error(`Failed to close remote branch ${inps.PublishBranch}`); } @@ -100,7 +103,7 @@ export async function setRepo(inps: Inputs, remoteURL: string): Promise { await createWorkDir(workDir); await createBranchForce(inps.PublishBranch); await copyAssets(publishDir, workDir); - return; + return true; } } diff --git a/src/main.ts b/src/main.ts index cdfa7001e..128206c50 100644 --- a/src/main.ts +++ b/src/main.ts @@ -14,7 +14,7 @@ export async function run(): Promise { const remoteURL = await setTokens(inps); core.debug(`[INFO] remoteURL: ${remoteURL}`); - await git.setRepo(inps, remoteURL); + const firstDeployment = await git.setRepo(inps, remoteURL); try { await exec.exec('git', ['remote', 'rm', 'origin']); @@ -24,11 +24,18 @@ export async function run(): Promise { await exec.exec('git', ['remote', 'add', 'origin', remoteURL]); await exec.exec('git', ['add', '--all']); + let allowEmptyCommit = false; + if (firstDeployment) { + allowEmptyCommit = true; + } else { + allowEmptyCommit = inps.AllowEmptyCommit; + } await git.commit( - inps.AllowEmptyCommit, + allowEmptyCommit, inps.ExternalRepository, inps.CommitMessage ); + await git.push(inps.PublishBranch, inps.ForceOrphan); await git.pushTag(inps.TagName, inps.TagMessage); core.info('[INFO] successfully deployed'); From 8f96e5061b84be8b2b0fdbdb3f5024067cbbd64d Mon Sep 17 00:00:00 2001 From: peaceiris <30958501+peaceiris@users.noreply.github.com> Date: Thu, 6 Feb 2020 14:32:06 +0900 Subject: [PATCH 05/10] ci: remove lint-staged husky for testing --- .github/workflows/test-action.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-action.yml b/.github/workflows/test-action.yml index 8453e06b5..e8dddc71b 100644 --- a/.github/workflows/test-action.yml +++ b/.github/workflows/test-action.yml @@ -43,6 +43,7 @@ jobs: node-version: '${{ steps.nvm.outputs.NVMRC }}' - run: npm ci + - run: npm uninstall lint-staged husky - run: npm run build - name: Setup mdBook From 2af42340cb41e4c3259180a0aa15fd466bf33dc6 Mon Sep 17 00:00:00 2001 From: peaceiris <30958501+peaceiris@users.noreply.github.com> Date: Thu, 6 Feb 2020 14:40:30 +0900 Subject: [PATCH 06/10] ci: Add git checkout {package-lock,package}.json --- .github/workflows/test-action.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-action.yml b/.github/workflows/test-action.yml index e8dddc71b..fd859f7c5 100644 --- a/.github/workflows/test-action.yml +++ b/.github/workflows/test-action.yml @@ -30,7 +30,6 @@ jobs: - 'macos-latest' - 'windows-latest' steps: - - uses: actions/checkout@v2 - name: Read .nvmrc @@ -43,7 +42,12 @@ jobs: node-version: '${{ steps.nvm.outputs.NVMRC }}' - run: npm ci - - run: npm uninstall lint-staged husky + + - name: Remove lint-staged husky + run: | + npm uninstall lint-staged husky + git checkout package-lock.json package.json + - run: npm run build - name: Setup mdBook From 6838d1f86f065e2fce8ad3f02478ee5a1ab393b3 Mon Sep 17 00:00:00 2001 From: peaceiris <30958501+peaceiris@users.noreply.github.com> Date: Thu, 6 Feb 2020 14:45:06 +0900 Subject: [PATCH 07/10] fix: Add chdir --- src/git-utils.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/git-utils.ts b/src/git-utils.ts index 0626525c6..2b16201b0 100644 --- a/src/git-utils.ts +++ b/src/git-utils.ts @@ -101,6 +101,7 @@ export async function setRepo( ); core.info(e); await createWorkDir(workDir); + process.chdir(workDir); await createBranchForce(inps.PublishBranch); await copyAssets(publishDir, workDir); return true; From 7e474200f57027eb9b74dd39fca8a3ba82b00197 Mon Sep 17 00:00:00 2001 From: peaceiris <30958501+peaceiris@users.noreply.github.com> Date: Thu, 6 Feb 2020 14:57:14 +0900 Subject: [PATCH 08/10] fix: Add chdir --- src/git-utils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/git-utils.ts b/src/git-utils.ts index 2b16201b0..80c3eb0ff 100644 --- a/src/git-utils.ts +++ b/src/git-utils.ts @@ -84,6 +84,7 @@ export async function setRepo( options ); if (result.exitcode === 0) { + process.chdir(workDir); if (inps.KeepFiles) { core.info('[INFO] Keep existing files'); } else { @@ -93,7 +94,7 @@ export async function setRepo( await copyAssets(publishDir, workDir); return false; } else { - throw new Error(`Failed to close remote branch ${inps.PublishBranch}`); + throw new Error(`Failed to clone remote branch ${inps.PublishBranch}`); } } catch (e) { core.info( From 22b5c1f9e71c6149cac3420a9e1e59e2f5af2757 Mon Sep 17 00:00:00 2001 From: peaceiris <30958501+peaceiris@users.noreply.github.com> Date: Thu, 6 Feb 2020 15:08:09 +0900 Subject: [PATCH 09/10] fix: remove pull_request --- src/set-tokens.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/set-tokens.ts b/src/set-tokens.ts index e50b735bb..979603a0c 100644 --- a/src/set-tokens.ts +++ b/src/set-tokens.ts @@ -100,9 +100,6 @@ export async function setGithubToken( `You deploy from ${inps.PublishBranch} to ${inps.PublishBranch}` ); } - } else if (context.eventName === 'pull_request') { - // TODO: support pull_request event - throw new Error('This action does not support pull_request event now.'); } const isPrivateRepository = payload.repository?.private; From c2ffaa37a74878ac67b60c2c6ef75d9ea2778dbf Mon Sep 17 00:00:00 2001 From: peaceiris <30958501+peaceiris@users.noreply.github.com> Date: Thu, 6 Feb 2020 15:12:39 +0900 Subject: [PATCH 10/10] Revert "fix: allow empty commit for first deployment" This reverts commit d6396b92c88c03140715307a54d681f8dfe2d97b. --- src/git-utils.ts | 11 ++++------- src/main.ts | 11 ++--------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/git-utils.ts b/src/git-utils.ts index 80c3eb0ff..654bdd75f 100644 --- a/src/git-utils.ts +++ b/src/git-utils.ts @@ -38,10 +38,7 @@ export async function copyAssets( return; } -export async function setRepo( - inps: Inputs, - remoteURL: string -): Promise { +export async function setRepo(inps: Inputs, remoteURL: string): Promise { const workDir = path.join(getHomeDir(), 'actions_github_pages'); const publishDir = path.join( `${process.env.GITHUB_WORKSPACE}`, @@ -54,7 +51,7 @@ export async function setRepo( process.chdir(workDir); await createBranchForce(inps.PublishBranch); await copyAssets(publishDir, workDir); - return false; + return; } const result: CmdResult = { @@ -92,7 +89,7 @@ export async function setRepo( } await copyAssets(publishDir, workDir); - return false; + return; } else { throw new Error(`Failed to clone remote branch ${inps.PublishBranch}`); } @@ -105,7 +102,7 @@ export async function setRepo( process.chdir(workDir); await createBranchForce(inps.PublishBranch); await copyAssets(publishDir, workDir); - return true; + return; } } diff --git a/src/main.ts b/src/main.ts index 128206c50..cdfa7001e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -14,7 +14,7 @@ export async function run(): Promise { const remoteURL = await setTokens(inps); core.debug(`[INFO] remoteURL: ${remoteURL}`); - const firstDeployment = await git.setRepo(inps, remoteURL); + await git.setRepo(inps, remoteURL); try { await exec.exec('git', ['remote', 'rm', 'origin']); @@ -24,18 +24,11 @@ export async function run(): Promise { await exec.exec('git', ['remote', 'add', 'origin', remoteURL]); await exec.exec('git', ['add', '--all']); - let allowEmptyCommit = false; - if (firstDeployment) { - allowEmptyCommit = true; - } else { - allowEmptyCommit = inps.AllowEmptyCommit; - } await git.commit( - allowEmptyCommit, + inps.AllowEmptyCommit, inps.ExternalRepository, inps.CommitMessage ); - await git.push(inps.PublishBranch, inps.ForceOrphan); await git.pushTag(inps.TagName, inps.TagMessage); core.info('[INFO] successfully deployed');