From 4f06df820b7a5882e2faef0e6929bb670140fba0 Mon Sep 17 00:00:00 2001 From: Shohei Ueda <30958501+peaceiris@users.noreply.github.com> Date: Mon, 16 Mar 2020 09:00:19 +0900 Subject: [PATCH] fix: skip deployment on forks (#156) * fix: skip on forks * chore(release): 3.5.4-6 Close #153 --- CHANGELOG.md | 63 +++++++++++++++++++++++++++++++++++++++++ __tests__/utils.test.ts | 30 +++++++++++++++++++- package-lock.json | 2 +- package.json | 2 +- src/main.ts | 18 +++++++++++- src/utils.ts | 15 ++++++++++ 6 files changed, 126 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 795e67003..6877205af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,69 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [3.5.4-6](https://github.com/peaceiris/actions-gh-pages/compare/v3.5.4-5...v3.5.4-6) (2020-03-15) + + +### fix + +* skip logic ([44bdada](https://github.com/peaceiris/actions-gh-pages/commit/44bdada02c71f646d23ffefe1ea07d16386dbf83)) + + + +## [3.5.4-5](https://github.com/peaceiris/actions-gh-pages/compare/v3.5.4-4...v3.5.4-5) (2020-03-14) + + +### fix + +* property access ([72f58a0](https://github.com/peaceiris/actions-gh-pages/commit/72f58a06cf5db88d3eb982f57de8dbc266e39232)) + + + +## [3.5.4-4](https://github.com/peaceiris/actions-gh-pages/compare/v3.5.4-3...v3.5.4-4) (2020-03-14) + + +### test + +* skipOnFork() ([6f9a5b7](https://github.com/peaceiris/actions-gh-pages/commit/6f9a5b7a66bbf855cadc34099fa6450c40eff4a2)) + + + +## [3.5.4-3](https://github.com/peaceiris/actions-gh-pages/compare/v3.5.4-2...v3.5.4-3) (2020-03-14) + + +### fix + +* skip logic ([01976c9](https://github.com/peaceiris/actions-gh-pages/commit/01976c9d9b95b42997caa2a85c2d737eb75e852e)) + + + +## [3.5.4-2](https://github.com/peaceiris/actions-gh-pages/compare/v3.5.4-1...v3.5.4-2) (2020-03-14) + + +### fix + +* skip logic ([c97a39a](https://github.com/peaceiris/actions-gh-pages/commit/c97a39a35f681badbf7490c2786eddf06b17316d)) + + + +## [3.5.4-1](https://github.com/peaceiris/actions-gh-pages/compare/v3.5.4-0...v3.5.4-1) (2020-03-14) + + +### fix + +* isForkRepository ([6546aa9](https://github.com/peaceiris/actions-gh-pages/commit/6546aa96085e89bd91adc56f58be665766e93a1e)) + + + +## [3.5.4-0](https://github.com/peaceiris/actions-gh-pages/compare/v3.5.3...v3.5.4-0) (2020-03-14) + + +### fix + +* skip on forks ([c320668](https://github.com/peaceiris/actions-gh-pages/commit/c320668126b104ad2c15ea1b583a75cd3978c2f3)), closes [#153](https://github.com/peaceiris/actions-gh-pages/issues/153) + + + ## [3.5.3](https://github.com/peaceiris/actions-gh-pages/compare/v3.5.2...v3.5.3) (2020-03-13) diff --git a/__tests__/utils.test.ts b/__tests__/utils.test.ts index 23b7c3b92..943aa71e1 100644 --- a/__tests__/utils.test.ts +++ b/__tests__/utils.test.ts @@ -5,7 +5,8 @@ import { getWorkDirName, createWorkDir, addNoJekyll, - addCNAME + addCNAME, + skipOnFork } from '../src/utils'; beforeEach(() => { @@ -203,3 +204,30 @@ describe('addCNAME()', () => { fs.unlinkSync(filepath); }); }); + +describe('skipOnFork()', () => { + test('return false on upstream', async () => { + const test = await skipOnFork(false, 'token', '', ''); + expect(test).toBeFalsy(); + }); + + test('return false on fork with github_token', async () => { + const test = await skipOnFork(true, 'token', '', ''); + expect(test).toBeFalsy(); + }); + + test('return false on fork with deploy_key', async () => { + const test = await skipOnFork(true, '', 'deploy_key', ''); + expect(test).toBeFalsy(); + }); + + test('return false on fork with personal_token', async () => { + const test = await skipOnFork(true, '', '', 'personal_token'); + expect(test).toBeFalsy(); + }); + + test('return true on fork with no tokens', async () => { + const test = await skipOnFork(true, '', '', ''); + expect(test).toBeTruthy(); + }); +}); diff --git a/package-lock.json b/package-lock.json index a6a36f488..8d5de2dc8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "actions-github-pages", - "version": "3.5.3", + "version": "3.5.4-6", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 6075461fc..9067a3405 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "actions-github-pages", - "version": "3.5.3", + "version": "3.5.4-6", "description": "GitHub Actions for GitHub Pages", "main": "lib/index.js", "engines": { diff --git a/src/main.ts b/src/main.ts index 2b47eeff2..6d6e4035a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,16 +1,32 @@ +import {context} from '@actions/github'; import * as core from '@actions/core'; import * as exec from '@actions/exec'; import {Inputs} from './interfaces'; import {showInputs, getInputs} from './get-inputs'; import {setTokens} from './set-tokens'; import {setRepo, setCommitAuthor, commit, push, pushTag} from './git-utils'; -import {getWorkDirName, addNoJekyll, addCNAME} from './utils'; +import {getWorkDirName, addNoJekyll, addCNAME, skipOnFork} from './utils'; export async function run(): Promise { try { const inps: Inputs = getInputs(); showInputs(inps); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const isForkRepository = (context.payload as any).repository.fork; + const isSkipOnFork = await skipOnFork( + isForkRepository, + inps.GithubToken, + inps.DeployKey, + inps.PersonalToken + ); + if (isSkipOnFork) { + core.warning( + 'This action runs on a fork and not found auth token, Skip deployment' + ); + return; + } + const remoteURL = await setTokens(inps); core.debug(`[INFO] remoteURL: ${remoteURL}`); diff --git a/src/utils.ts b/src/utils.ts index c86147b61..433fe8cda 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -62,3 +62,18 @@ export async function addCNAME( fs.writeFileSync(filepath, content + '\n'); core.info(`[INFO] Created ${filepath}`); } + +export async function skipOnFork( + isForkRepository: boolean, + githubToken: string, + deployKey: string, + personalToken: string +): Promise { + if (isForkRepository) { + if (githubToken === '' && deployKey === '' && personalToken === '') { + return true; + } + } + + return false; +}