Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bbdfb20061 | ||
|
|
7fd2e42a05 | ||
|
|
e93eed3ba7 | ||
|
|
cf805b9457 | ||
|
|
c4241b26fb | ||
|
|
4f6b15a24f | ||
|
|
42954117ce | ||
|
|
48b33dca85 | ||
|
|
45bd46f922 | ||
|
|
95792e1c0f | ||
|
|
66acd31e22 |
23
.github/workflows/release.yml
vendored
23
.github/workflows/release.yml
vendored
@@ -10,27 +10,6 @@ jobs:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.1
|
||||
|
||||
- name: Dump GitHub context
|
||||
env:
|
||||
GITHUB_CONTEXT: ${{ toJson(github) }}
|
||||
run: echo "${GITHUB_CONTEXT}"
|
||||
|
||||
- name: Install github/hub
|
||||
run: |
|
||||
export HUB_VERSION="2.14.2"
|
||||
curl -fsSL https://github.com/github/hub/raw/8d91904208171b013f9a9d1175f4ab39068db047/script/get | bash -s "${HUB_VERSION}"
|
||||
|
||||
- name: Create release
|
||||
- uses: peaceiris/workflows/create-release-npm@v0.7.0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
TAG_NAME="${GITHUB_REF##refs/tags/}"
|
||||
echo "See [CHANGELOG.md](https://github.com/${GITHUB_REPOSITORY}/blob/${TAG_NAME}/CHANGELOG.md) for more details." > ./release_notes.md
|
||||
RELEASE_NAME="$(jq -r '.name' ./package.json)"
|
||||
sed -i "1i${RELEASE_NAME} ${TAG_NAME}\n" ./release_notes.md
|
||||
./bin/hub release create \
|
||||
--draft \
|
||||
--prerelease \
|
||||
--file ./release_notes.md \
|
||||
"${TAG_NAME}"
|
||||
|
||||
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -73,7 +73,7 @@ jobs:
|
||||
name: coverage-${{ matrix.os }}
|
||||
path: coverage
|
||||
|
||||
- uses: codecov/codecov-action@v1.0.13
|
||||
- uses: codecov/codecov-action@v1.0.14
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
|
||||
|
||||
30
CHANGELOG.md
30
CHANGELOG.md
@@ -2,6 +2,36 @@
|
||||
|
||||
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.7.3](https://github.com/peaceiris/actions-gh-pages/compare/v3.7.2...v3.7.3) (2020-10-20)
|
||||
|
||||
|
||||
### ci
|
||||
|
||||
* bump codecov/codecov-action from v1.0.13 to v1.0.14 (#526) ([c4241b2](https://github.com/peaceiris/actions-gh-pages/commit/c4241b26fb90917901c95fabafc9907f71f44508)), closes [#526](https://github.com/peaceiris/actions-gh-pages/issues/526)
|
||||
|
||||
### docs
|
||||
|
||||
* Add link to create-react-app (#525) ([cf805b9](https://github.com/peaceiris/actions-gh-pages/commit/cf805b9457df587d349ee1684a4801cf9bbaac7d)), closes [#525](https://github.com/peaceiris/actions-gh-pages/issues/525)
|
||||
|
||||
### fix
|
||||
|
||||
* copyAssets and deleteExcludedAssets (#528) ([e93eed3](https://github.com/peaceiris/actions-gh-pages/commit/e93eed3ba7edf10f461bc4a7bd14cd2a12f44935)), closes [#528](https://github.com/peaceiris/actions-gh-pages/issues/528)
|
||||
|
||||
|
||||
|
||||
## [3.7.2](https://github.com/peaceiris/actions-gh-pages/compare/v3.7.1...v3.7.2) (2020-10-15)
|
||||
|
||||
|
||||
### ci
|
||||
|
||||
* peaceiris/workflows/create-release-npm@v0.7.0 ([45bd46f](https://github.com/peaceiris/actions-gh-pages/commit/45bd46f92200c682e8e4a5d0f542aa12f9417131))
|
||||
|
||||
### fix
|
||||
|
||||
* copy dotfiles (#521) ([95792e1](https://github.com/peaceiris/actions-gh-pages/commit/95792e1c0fe9dfef8ebe7284d1af7ca787fde866)), closes [#521](https://github.com/peaceiris/actions-gh-pages/issues/521) [#520](https://github.com/peaceiris/actions-gh-pages/issues/520) [#512](https://github.com/peaceiris/actions-gh-pages/issues/512) [#507](https://github.com/peaceiris/actions-gh-pages/issues/507) [#509](https://github.com/peaceiris/actions-gh-pages/issues/509) [#390](https://github.com/peaceiris/actions-gh-pages/issues/390) [#324](https://github.com/peaceiris/actions-gh-pages/issues/324) [#103](https://github.com/peaceiris/actions-gh-pages/issues/103)
|
||||
|
||||
|
||||
|
||||
## [3.7.1](https://github.com/peaceiris/actions-gh-pages/compare/v3.7.0...v3.7.1) (2020-10-14)
|
||||
|
||||
|
||||
|
||||
@@ -596,12 +596,15 @@ jobs:
|
||||
|
||||
### ⭐️ Static Site Generators with Node.js
|
||||
|
||||
[hexo], [vuepress], [react-static], [gridsome], and so on.
|
||||
[hexo], [vuepress], [react-static], [gridsome], [create-react-app] and so on.
|
||||
Please check where your output directory is before pushing your workflow.
|
||||
e.g. `create-react-app` requires `publish_dir` to be set to `./build`
|
||||
|
||||
[hexo]: https://github.com/hexojs/hexo
|
||||
[vuepress]: https://github.com/vuejs/vuepress
|
||||
[react-static]: https://github.com/react-static/react-static
|
||||
[gridsome]: https://github.com/gridsome/gridsome
|
||||
[create-react-app]: https://github.com/facebook/create-react-app
|
||||
|
||||
Premise: Dependencies are managed by `package.json` and `package-lock.json`
|
||||
|
||||
|
||||
1
__tests__/fixtures/publish_dir_1/assets/lib.css
Normal file
1
__tests__/fixtures/publish_dir_1/assets/lib.css
Normal file
@@ -0,0 +1 @@
|
||||
/* CSS */
|
||||
1
__tests__/fixtures/publish_dir_1/assets/lib.js
Normal file
1
__tests__/fixtures/publish_dir_1/assets/lib.js
Normal file
@@ -0,0 +1 @@
|
||||
// JavaScript
|
||||
11
__tests__/fixtures/publish_dir_1/index.html
Normal file
11
__tests__/fixtures/publish_dir_1/index.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
1
__tests__/fixtures/publish_dir_1/main.css
Normal file
1
__tests__/fixtures/publish_dir_1/main.css
Normal file
@@ -0,0 +1 @@
|
||||
/* CSS */
|
||||
1
__tests__/fixtures/publish_dir_1/main.js
Normal file
1
__tests__/fixtures/publish_dir_1/main.js
Normal file
@@ -0,0 +1 @@
|
||||
// JavaScript
|
||||
1
__tests__/fixtures/publish_dir_root/.github/CODEOWNERS
vendored
Normal file
1
__tests__/fixtures/publish_dir_root/.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1 @@
|
||||
# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
|
||||
1
__tests__/fixtures/publish_dir_root/.github/ISSUE_TEMPLATE/template.md
vendored
Normal file
1
__tests__/fixtures/publish_dir_root/.github/ISSUE_TEMPLATE/template.md
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<!-- issue template -->
|
||||
7
__tests__/fixtures/publish_dir_root/.github/dependabot.yml
vendored
Normal file
7
__tests__/fixtures/publish_dir_root/.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
# dependabot config
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
1
__tests__/fixtures/publish_dir_root/.github/workflows/test.yml
vendored
Normal file
1
__tests__/fixtures/publish_dir_root/.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
name: 'Test'
|
||||
1
__tests__/fixtures/publish_dir_root/assets/lib.css
Normal file
1
__tests__/fixtures/publish_dir_root/assets/lib.css
Normal file
@@ -0,0 +1 @@
|
||||
/* CSS */
|
||||
1
__tests__/fixtures/publish_dir_root/assets/lib.js
Normal file
1
__tests__/fixtures/publish_dir_root/assets/lib.js
Normal file
@@ -0,0 +1 @@
|
||||
// JavaScript
|
||||
11
__tests__/fixtures/publish_dir_root/index.html
Normal file
11
__tests__/fixtures/publish_dir_root/index.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
1
__tests__/fixtures/publish_dir_root/main.css
Normal file
1
__tests__/fixtures/publish_dir_root/main.css
Normal file
@@ -0,0 +1 @@
|
||||
/* CSS */
|
||||
1
__tests__/fixtures/publish_dir_root/main.js
Normal file
1
__tests__/fixtures/publish_dir_root/main.js
Normal file
@@ -0,0 +1 @@
|
||||
// JavaScript
|
||||
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
copyAssets,
|
||||
setRepo,
|
||||
getUserName,
|
||||
getUserEmail,
|
||||
@@ -10,6 +11,17 @@ import {Inputs} from '../src/interfaces';
|
||||
import {getWorkDirName, createDir} from '../src/utils';
|
||||
import {CmdResult} from '../src/interfaces';
|
||||
import * as exec from '@actions/exec';
|
||||
import {cp, rm} from 'shelljs';
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
|
||||
const testRoot = path.resolve(__dirname);
|
||||
|
||||
async function createTestDir(name: string): Promise<string> {
|
||||
const date = new Date();
|
||||
const unixTime = date.getTime();
|
||||
return await getWorkDirName(`${unixTime}_${name}`);
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
jest.resetModules();
|
||||
@@ -22,6 +34,96 @@ afterEach(() => {
|
||||
delete process.env['GITHUB_REPOSITORY'];
|
||||
});
|
||||
|
||||
describe('copyAssets', () => {
|
||||
let gitTempDir = '';
|
||||
(async (): Promise<void> => {
|
||||
const date = new Date();
|
||||
const unixTime = date.getTime();
|
||||
gitTempDir = await getWorkDirName(`${unixTime}_git`);
|
||||
})();
|
||||
|
||||
beforeAll(async () => {
|
||||
await createDir(gitTempDir);
|
||||
process.chdir(gitTempDir);
|
||||
await exec.exec('git', ['init']);
|
||||
});
|
||||
|
||||
test('copy assets from publish_dir to root, delete .github', async () => {
|
||||
const publishDir = await createTestDir('src');
|
||||
const destDir = await createTestDir('dst');
|
||||
cp('-Rf', path.resolve(testRoot, 'fixtures/publish_dir_1'), publishDir);
|
||||
cp('-Rf', gitTempDir, destDir);
|
||||
|
||||
await copyAssets(publishDir, destDir, '.github');
|
||||
expect(fs.existsSync(path.resolve(destDir, '.github'))).toBeFalsy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'index.html'))).toBeTruthy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'assets/lib.css'))).toBeTruthy();
|
||||
rm('-rf', publishDir, destDir);
|
||||
});
|
||||
|
||||
test('copy assets from publish_dir to root, delete .github,main.js', async () => {
|
||||
const publishDir = await createTestDir('src');
|
||||
const destDir = await createTestDir('dst');
|
||||
cp('-Rf', path.resolve(testRoot, 'fixtures/publish_dir_1'), publishDir);
|
||||
cp('-Rf', gitTempDir, destDir);
|
||||
|
||||
await copyAssets(publishDir, destDir, '.github,main.js');
|
||||
expect(fs.existsSync(path.resolve(destDir, '.github'))).toBeFalsy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'index.html'))).toBeTruthy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'main.js'))).toBeFalsy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'assets/lib.css'))).toBeTruthy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'assets/lib.js'))).toBeTruthy();
|
||||
rm('-rf', publishDir, destDir);
|
||||
});
|
||||
|
||||
test('copy assets from publish_dir to root, delete nothing', async () => {
|
||||
const publishDir = await createTestDir('src');
|
||||
const destDir = await createTestDir('dst');
|
||||
cp('-Rf', path.resolve(testRoot, 'fixtures/publish_dir_root'), publishDir);
|
||||
cp('-Rf', gitTempDir, destDir);
|
||||
|
||||
await copyAssets(publishDir, destDir, '');
|
||||
expect(fs.existsSync(path.resolve(destDir, '.github'))).toBeTruthy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'index.html'))).toBeTruthy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'main.js'))).toBeTruthy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'assets/lib.css'))).toBeTruthy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'assets/lib.js'))).toBeTruthy();
|
||||
rm('-rf', publishDir, destDir);
|
||||
});
|
||||
|
||||
test('copy assets from root to root, delete .github', async () => {
|
||||
const publishDir = await createTestDir('src');
|
||||
const destDir = await createTestDir('dst');
|
||||
cp('-Rf', path.resolve(testRoot, 'fixtures/publish_dir_root'), publishDir);
|
||||
cp('-Rf', gitTempDir, destDir);
|
||||
cp('-Rf', gitTempDir, publishDir);
|
||||
|
||||
await copyAssets(publishDir, destDir, '.github');
|
||||
expect(fs.existsSync(path.resolve(destDir, '.github'))).toBeFalsy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'index.html'))).toBeTruthy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'assets/lib.css'))).toBeTruthy();
|
||||
rm('-rf', publishDir, destDir);
|
||||
});
|
||||
|
||||
test('copy assets from root to root, delete nothing', async () => {
|
||||
const publishDir = await createTestDir('src');
|
||||
const destDir = await createTestDir('dst');
|
||||
cp('-Rf', path.resolve(testRoot, 'fixtures/publish_dir_root'), publishDir);
|
||||
cp('-Rf', gitTempDir, destDir);
|
||||
cp('-Rf', gitTempDir, publishDir);
|
||||
|
||||
await copyAssets(publishDir, destDir, '');
|
||||
expect(fs.existsSync(path.resolve(destDir, '.github'))).toBeTruthy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'index.html'))).toBeTruthy();
|
||||
expect(fs.existsSync(path.resolve(destDir, 'assets/lib.css'))).toBeTruthy();
|
||||
rm('-rf', publishDir, destDir);
|
||||
});
|
||||
|
||||
test.todo('copy assets from root to subdir, delete .github');
|
||||
test.todo('copy assets from root to subdir, delete .github,main.js');
|
||||
test.todo('copy assets from root to subdir, delete nothing');
|
||||
});
|
||||
|
||||
describe('setRepo()', () => {
|
||||
test('throw error destination_dir should be a relative path', async () => {
|
||||
process.env['INPUT_GITHUB_TOKEN'] = 'test_github_token';
|
||||
|
||||
File diff suppressed because one or more lines are too long
2
package-lock.json
generated
2
package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "actions-github-pages",
|
||||
"version": "3.7.1",
|
||||
"version": "3.7.3",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "actions-github-pages",
|
||||
"version": "3.7.1",
|
||||
"version": "3.7.3",
|
||||
"description": "GitHub Actions for GitHub Pages",
|
||||
"main": "lib/index.js",
|
||||
"engines": {
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
import * as core from '@actions/core';
|
||||
import * as exec from '@actions/exec';
|
||||
import * as io from '@actions/io';
|
||||
import * as glob from '@actions/glob';
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
import {Inputs, CmdResult} from './interfaces';
|
||||
import {createDir} from './utils';
|
||||
import {cp} from 'shelljs';
|
||||
import {cp, rm} from 'shelljs';
|
||||
|
||||
export async function createBranchForce(branch: string): Promise<void> {
|
||||
await exec.exec('git', ['init']);
|
||||
@@ -15,6 +14,7 @@ export async function createBranchForce(branch: string): Promise<void> {
|
||||
}
|
||||
|
||||
export async function deleteExcludedAssets(destDir: string, excludeAssets: string): Promise<void> {
|
||||
if (excludeAssets === '') return;
|
||||
core.info(`[INFO] delete excluded assets`);
|
||||
const excludedAssetNames: Array<string> = excludeAssets.split(',');
|
||||
const excludedAssetPaths = ((): Array<string> => {
|
||||
@@ -25,10 +25,11 @@ export async function deleteExcludedAssets(destDir: string, excludeAssets: strin
|
||||
return paths;
|
||||
})();
|
||||
const globber = await glob.create(excludedAssetPaths.join('\n'));
|
||||
for await (const asset of globber.globGenerator()) {
|
||||
core.info(`[INFO] delete ${asset}`);
|
||||
io.rmRF(asset);
|
||||
const files = await globber.glob();
|
||||
for await (const file of globber.globGenerator()) {
|
||||
core.info(`[INFO] delete ${file}`);
|
||||
}
|
||||
rm('-rf', files);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -39,19 +40,19 @@ export async function copyAssets(
|
||||
): Promise<void> {
|
||||
core.info(`[INFO] prepare publishing assets`);
|
||||
|
||||
if (fs.existsSync(destDir) === false) {
|
||||
if (!fs.existsSync(destDir)) {
|
||||
core.info(`[INFO] create ${destDir}`);
|
||||
await createDir(destDir);
|
||||
}
|
||||
|
||||
const dotGitPath = path.join(publishDir, '.git');
|
||||
if (fs.existsSync(dotGitPath)) {
|
||||
core.info(`[INFO] delete .git`);
|
||||
io.rmRF(dotGitPath);
|
||||
core.info(`[INFO] delete ${dotGitPath}`);
|
||||
rm('-rf', dotGitPath);
|
||||
}
|
||||
|
||||
core.info(`[INFO] copy ${publishDir} to ${destDir}`);
|
||||
cp('-RfL', [`${publishDir}/*`], destDir);
|
||||
cp('-RfL', [`${publishDir}/*`, `${publishDir}/.*`], destDir);
|
||||
|
||||
await deleteExcludedAssets(destDir, excludeAssets);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user