mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
Merge branch 'dev' into releases/v3
This commit is contained in:
commit
78e2ccef3c
@ -3,17 +3,18 @@
|
|||||||
When contributing to this repository, please first discuss the change you wish to make via issue,
|
When contributing to this repository, please first discuss the change you wish to make via issue,
|
||||||
email, or any other method with the owners of this repository before making a change.
|
email, or any other method with the owners of this repository before making a change.
|
||||||
|
|
||||||
## Pull Request Best Practices
|
## Before Making a Pull Request
|
||||||
|
|
||||||
1. Ensure that you've tested your feature/change yourself. As the primary focus of this project is deployment, providing a link to a deployed repository using your branch is preferred. You can reference the forked action using your GitHub username, for example `yourname/github-pages-deplpy-action@master`.
|
1. Ensure that you've tested your feature/change yourself. As the primary focus of this project is deployment, providing a link to a deployed repository using your branch is preferred. You can reference the forked action using your GitHub username, for example `yourname/github-pages-deplpy-action@master`.
|
||||||
2. Make sure you update the README if you've made a change that requires documentation.
|
2. Make sure you update the README if you've made a change that requires documentation.
|
||||||
3. When making a pull request, highlight any areas that may cause a breaking change so the maintainer can update the version number accordingly on the GitHub marketplace.
|
3. When making a pull request, highlight any areas that may cause a breaking change so the maintainer can update the version number accordingly on the GitHub marketplace.
|
||||||
4. Make sure you've formatted and linted your code. You can do this by running `yarn format` and `yarn lint`.
|
4. Make sure you've formatted and linted your code. You can do this by running `yarn format` and `yarn lint`.
|
||||||
5. Fix or add any tests where applicable. You can run `yarn test` to run the suite.
|
5. Fix or add any tests where applicable. You can run `yarn test` to run the suite. As this action is small in scope it's important that a high level of test coverage is maintained. All tests are written using Jest.
|
||||||
|
6. Ensure all typing is accurate and the action compiles correctly by running `yarn build`.
|
||||||
|
|
||||||
# Deploying
|
# Deploying
|
||||||
|
|
||||||
In order to deploy and test your own fork of this action, you must commit the required `node_modules` dependencies. Be sure to run `nvm use` before installing any dependencies. You can learn more about nvm [here](https://github.com/nvm-sh/nvm/blob/master/README.md).
|
In order to deploy and test your own fork of this action, you must commit the `node_modules` dependencies. Be sure to run `nvm use` before installing any dependencies. You can learn more about nvm [here](https://github.com/nvm-sh/nvm/blob/master/README.md).
|
||||||
|
|
||||||
To do this you can follow the instructions below:
|
To do this you can follow the instructions below:
|
||||||
|
|
||||||
@ -42,4 +43,4 @@ $ git checkout -b branchnamehere
|
|||||||
$ git commit -a -m "prod dependencies"
|
$ git commit -a -m "prod dependencies"
|
||||||
```
|
```
|
||||||
|
|
||||||
The `node_modules` folder should _not_ be included when making a pull request. These are only required for GitHub Actions when it consumes the distribution branch branch, the `dev` branch of the project should be free from any dependencies or lib files.
|
The `node_modules` folder should _not_ be included when making a pull request. These are only required for GitHub Actions when it consumes the distribution branch, the `dev` branch of the project should be free from any dependencies or lib files.
|
@ -5,6 +5,7 @@ process.env['GITHUB_SHA'] = '123'
|
|||||||
import {action} from '../src/constants'
|
import {action} from '../src/constants'
|
||||||
import {deploy, generateBranch, init, switchToBaseBranch} from '../src/git'
|
import {deploy, generateBranch, init, switchToBaseBranch} from '../src/git'
|
||||||
import {execute} from '../src/execute'
|
import {execute} from '../src/execute'
|
||||||
|
import {rmRF} from '@actions/io'
|
||||||
|
|
||||||
const originalAction = JSON.stringify(action)
|
const originalAction = JSON.stringify(action)
|
||||||
|
|
||||||
@ -15,6 +16,10 @@ jest.mock('@actions/core', () => ({
|
|||||||
info: jest.fn()
|
info: jest.fn()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
jest.mock('@actions/io', () => ({
|
||||||
|
rmRF: jest.fn()
|
||||||
|
}))
|
||||||
|
|
||||||
jest.mock('../src/execute', () => ({
|
jest.mock('../src/execute', () => ({
|
||||||
execute: jest.fn()
|
execute: jest.fn()
|
||||||
}))
|
}))
|
||||||
@ -316,7 +321,8 @@ describe('git', () => {
|
|||||||
await deploy(action)
|
await deploy(action)
|
||||||
|
|
||||||
// Includes the call to generateBranch
|
// Includes the call to generateBranch
|
||||||
expect(execute).toBeCalledTimes(13)
|
expect(execute).toBeCalledTimes(11)
|
||||||
|
expect(rmRF).toBeCalledTimes(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should execute commands with single commit toggled', async () => {
|
it('should execute commands with single commit toggled', async () => {
|
||||||
@ -334,7 +340,8 @@ describe('git', () => {
|
|||||||
await deploy(action)
|
await deploy(action)
|
||||||
|
|
||||||
// Includes the call to generateBranch
|
// Includes the call to generateBranch
|
||||||
expect(execute).toBeCalledTimes(19)
|
expect(execute).toBeCalledTimes(17)
|
||||||
|
expect(rmRF).toBeCalledTimes(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should execute commands with clean options, ommits sha commit message', async () => {
|
it('should execute commands with clean options, ommits sha commit message', async () => {
|
||||||
@ -354,7 +361,8 @@ describe('git', () => {
|
|||||||
await deploy(action)
|
await deploy(action)
|
||||||
|
|
||||||
// Includes the call to generateBranch
|
// Includes the call to generateBranch
|
||||||
expect(execute).toBeCalledTimes(13)
|
expect(execute).toBeCalledTimes(11)
|
||||||
|
expect(rmRF).toBeCalledTimes(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should execute commands with clean options stored as an array instead', async () => {
|
it('should execute commands with clean options stored as an array instead', async () => {
|
||||||
@ -373,7 +381,8 @@ describe('git', () => {
|
|||||||
await deploy(action)
|
await deploy(action)
|
||||||
|
|
||||||
// Includes the call to generateBranch
|
// Includes the call to generateBranch
|
||||||
expect(execute).toBeCalledTimes(13)
|
expect(execute).toBeCalledTimes(11)
|
||||||
|
expect(rmRF).toBeCalledTimes(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should gracefully handle incorrectly formatted clean exclude items', async () => {
|
it('should gracefully handle incorrectly formatted clean exclude items', async () => {
|
||||||
@ -391,7 +400,8 @@ describe('git', () => {
|
|||||||
|
|
||||||
await deploy(action)
|
await deploy(action)
|
||||||
|
|
||||||
expect(execute).toBeCalledTimes(13)
|
expect(execute).toBeCalledTimes(11)
|
||||||
|
expect(rmRF).toBeCalledTimes(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should stop early if there is nothing to commit', async () => {
|
it('should stop early if there is nothing to commit', async () => {
|
||||||
@ -407,7 +417,8 @@ describe('git', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
await deploy(action)
|
await deploy(action)
|
||||||
expect(execute).toBeCalledTimes(14)
|
expect(execute).toBeCalledTimes(12)
|
||||||
|
expect(rmRF).toBeCalledTimes(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should throw an error if one of the required parameters is not available', async () => {
|
it('should throw an error if one of the required parameters is not available', async () => {
|
||||||
@ -427,7 +438,8 @@ describe('git', () => {
|
|||||||
try {
|
try {
|
||||||
await deploy(action)
|
await deploy(action)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
expect(execute).toBeCalledTimes(2)
|
expect(execute).toBeCalledTimes(0)
|
||||||
|
expect(rmRF).toBeCalledTimes(1)
|
||||||
expect(e.message).toMatch(
|
expect(e.message).toMatch(
|
||||||
'The deploy step encountered an error: No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true. ❌'
|
'The deploy step encountered an error: No deployment token/method was provided. You must provide the action with either a Personal Access Token or the GitHub Token secret in order to deploy. If you wish to use an ssh deploy token then you must set SSH to true. ❌'
|
||||||
)
|
)
|
||||||
|
@ -7,6 +7,7 @@ import '../src/main'
|
|||||||
import {action} from '../src/constants'
|
import {action} from '../src/constants'
|
||||||
import run from '../src/lib'
|
import run from '../src/lib'
|
||||||
import {execute} from '../src/execute'
|
import {execute} from '../src/execute'
|
||||||
|
import {rmRF} from '@actions/io'
|
||||||
import {setFailed} from '@actions/core'
|
import {setFailed} from '@actions/core'
|
||||||
|
|
||||||
const originalAction = JSON.stringify(action)
|
const originalAction = JSON.stringify(action)
|
||||||
@ -15,6 +16,10 @@ jest.mock('../src/execute', () => ({
|
|||||||
execute: jest.fn()
|
execute: jest.fn()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
jest.mock('@actions/io', () => ({
|
||||||
|
rmRF: jest.fn()
|
||||||
|
}))
|
||||||
|
|
||||||
jest.mock('@actions/core', () => ({
|
jest.mock('@actions/core', () => ({
|
||||||
setFailed: jest.fn(),
|
setFailed: jest.fn(),
|
||||||
getInput: jest.fn(),
|
getInput: jest.fn(),
|
||||||
@ -42,7 +47,8 @@ describe('main', () => {
|
|||||||
debug: true
|
debug: true
|
||||||
})
|
})
|
||||||
await run(action)
|
await run(action)
|
||||||
expect(execute).toBeCalledTimes(20)
|
expect(execute).toBeCalledTimes(18)
|
||||||
|
expect(rmRF).toBeCalledTimes(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should throw if an error is encountered', async () => {
|
it('should throw if an error is encountered', async () => {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"name": "github-pages-deploy-action",
|
"name": "github-pages-deploy-action",
|
||||||
"description": "GitHub action for building a project and deploying it to GitHub pages.",
|
"description": "GitHub action for building a project and deploying it to GitHub pages.",
|
||||||
"author": "James Ives <iam@jamesiv.es> (https://jamesiv.es)",
|
"author": "James Ives <iam@jamesiv.es> (https://jamesiv.es)",
|
||||||
"version": "3.4.6",
|
"version": "3.4.7",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "lib/lib.js",
|
"main": "lib/lib.js",
|
||||||
"types": "lib/lib.d.ts",
|
"types": "lib/lib.d.ts",
|
||||||
@ -35,7 +35,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "1.2.3",
|
"@actions/core": "1.2.3",
|
||||||
"@actions/exec": "1.0.3",
|
"@actions/exec": "1.0.3",
|
||||||
"@actions/github": "2.1.1"
|
"@actions/github": "2.1.1",
|
||||||
|
"@actions/io": "1.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "25.2.1",
|
"@types/jest": "25.2.1",
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import {info} from '@actions/core'
|
import {info} from '@actions/core'
|
||||||
|
import {rmRF} from '@actions/io'
|
||||||
import {ActionInterface} from './constants'
|
import {ActionInterface} from './constants'
|
||||||
import {execute} from './execute'
|
import {execute} from './execute'
|
||||||
import {
|
import {
|
||||||
@ -238,11 +239,7 @@ export async function deploy(action: ActionInterface): Promise<void> {
|
|||||||
)} ❌`
|
)} ❌`
|
||||||
)
|
)
|
||||||
} finally {
|
} finally {
|
||||||
// Ensures the deployment directory is safely removed.
|
// Ensures the deployment directory is safely removed after each deployment.
|
||||||
await execute(
|
await rmRF(temporaryDeploymentDirectory)
|
||||||
`chmod u+w -R ${temporaryDeploymentDirectory}`,
|
|
||||||
action.workspace
|
|
||||||
)
|
|
||||||
await execute(`rm -rf ${temporaryDeploymentDirectory}`, action.workspace)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,10 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
tunnel "0.0.6"
|
tunnel "0.0.6"
|
||||||
|
|
||||||
|
"@actions/io@1.0.2":
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.0.2.tgz#2f614b6e69ce14d191180451eb38e6576a6e6b27"
|
||||||
|
|
||||||
"@actions/io@^1.0.1":
|
"@actions/io@^1.0.1":
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.0.1.tgz#81a9418fe2bbdef2d2717a8e9f85188b9c565aca"
|
resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.0.1.tgz#81a9418fe2bbdef2d2717a8e9f85188b9c565aca"
|
||||||
|
Loading…
Reference in New Issue
Block a user