Compare commits
68 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
05a7c4edd9 | ||
|
|
4c2d9ecb85 | ||
|
|
6b302fdd50 | ||
|
|
f80024481c | ||
|
|
ba912f746b | ||
|
|
02db90c5c8 | ||
|
|
b5599b36fd | ||
|
|
3f71ec211a | ||
|
|
5bfcd3f213 | ||
|
|
3226514b95 | ||
|
|
4f4235c78c | ||
|
|
079d48367e | ||
|
|
4fb3d60161 | ||
|
|
0c8fc2d5e6 | ||
|
|
4bf31e4520 | ||
|
|
0794e07c99 | ||
|
|
2b5ce90dc9 | ||
|
|
681dcab3fd | ||
|
|
70c0076457 | ||
|
|
a49e738c32 | ||
|
|
5d053d30d0 | ||
|
|
4cf5105929 | ||
|
|
2392f69e4d | ||
|
|
fecb564860 | ||
|
|
7259f5ccc2 | ||
|
|
c8397307b4 | ||
|
|
7dd962e52e | ||
|
|
ded3953565 | ||
|
|
71958c534b | ||
|
|
eca3d9d25e | ||
|
|
24d40fe124 | ||
|
|
19b0b66a7c | ||
|
|
23abc3124a | ||
|
|
866d7e715c | ||
|
|
6f45501409 | ||
|
|
bf46251210 | ||
|
|
f8993157cb | ||
|
|
9cf67ec63b | ||
|
|
0f5c65e140 | ||
|
|
2046290e2b | ||
|
|
600bb6caa2 | ||
|
|
20912713da | ||
|
|
674c2318ce | ||
|
|
0b4686e3a6 | ||
|
|
1029512144 | ||
|
|
6c430d988e | ||
|
|
6f6bb2661a | ||
|
|
d1700b5653 | ||
|
|
1b5d710b24 | ||
|
|
3667febec5 | ||
|
|
8546b0c56b | ||
|
|
2c04f23922 | ||
|
|
b15488f0b3 | ||
|
|
612f1f7579 | ||
|
|
af7aac1007 | ||
|
|
6896bd8b80 | ||
|
|
ad558aa8bd | ||
|
|
5051105279 | ||
|
|
99a89f661a | ||
|
|
8cd820bd66 | ||
|
|
f633b0f6b5 | ||
|
|
a2712f7b92 | ||
|
|
09b03c0bb1 | ||
|
|
afee929f89 | ||
|
|
4b17904d54 | ||
|
|
ce4e3beff1 | ||
|
|
3874723ac6 | ||
|
|
f0c76f03b6 |
34
.devcontainer/devcontainer.json
Normal file
34
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "Node.js",
|
||||
"image": "docker.pkg.github.com/peaceiris/actions-gh-pages/dev:latest",
|
||||
|
||||
// Use 'settings' to set *default* container specific settings.json values on container create.
|
||||
"settings": {
|
||||
"terminal.integrated.shell.linux": "/bin/bash"
|
||||
},
|
||||
|
||||
// Add the IDs of extensions you want installed when the container is created in the array below.
|
||||
"extensions": [
|
||||
"bungcip.better-toml",
|
||||
"EditorConfig.EditorConfig",
|
||||
"donjayamanne.githistory",
|
||||
"eamodio.gitlens",
|
||||
"oderwat.indent-rainbow",
|
||||
"yzhang.markdown-all-in-one",
|
||||
"shd101wyy.markdown-preview-enhanced",
|
||||
"christian-kohler.path-intellisense",
|
||||
"lfs.vscode-emacs-friendly",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"firsttris.vscode-jest-runner",
|
||||
"VisualStudioExptTeam.vscodeintellicode"
|
||||
],
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [3000],
|
||||
|
||||
// Specifies a command that should be run after the container has been created.
|
||||
"postCreateCommand": "npm ci",
|
||||
|
||||
// Comment out the next line to run as root instead.
|
||||
// "remoteUser": "runner"
|
||||
}
|
||||
17
.github/workflows/dev-image.yml
vendored
17
.github/workflows/dev-image.yml
vendored
@@ -1,6 +1,9 @@
|
||||
name: 'Dev Image CI'
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '11 11 * * *'
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
@@ -10,16 +13,15 @@ on:
|
||||
- '.nvmrc'
|
||||
- 'Dockerfile'
|
||||
- 'Makefile'
|
||||
- 'docker-compose.yml'
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
paths:
|
||||
- '.github/workflows/dev-image.yml'
|
||||
- '.dockerignore'
|
||||
- '.nvmrc'
|
||||
- 'Dockerfile'
|
||||
- 'Makefile'
|
||||
- 'docker-compose.yml'
|
||||
|
||||
jobs:
|
||||
skipci:
|
||||
@@ -34,10 +36,11 @@ jobs:
|
||||
- uses: actions/checkout@v2.3.1
|
||||
- name: Login to Packages
|
||||
run: echo '${{ secrets.GITHUB_TOKEN }}' | docker login 'docker.pkg.github.com' -u 'peaceiris' --password-stdin
|
||||
- run: make pull
|
||||
- run: docker-compose pull --quiet
|
||||
if: github.event_name == 'pull_request'
|
||||
- run: make build
|
||||
- run: make cirun cmd="npm ci"
|
||||
- run: make ciall
|
||||
- run: make push
|
||||
- run: docker images
|
||||
- run: make ci
|
||||
- run: make all
|
||||
- run: docker-compose push
|
||||
if: github.ref == 'refs/heads/main'
|
||||
|
||||
13
.github/workflows/test.yml
vendored
13
.github/workflows/test.yml
vendored
@@ -34,7 +34,7 @@ jobs:
|
||||
id: nvm
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v2.1.0
|
||||
uses: actions/setup-node@v2.1.1
|
||||
with:
|
||||
node-version: '${{ steps.nvm.outputs.NVMRC }}'
|
||||
|
||||
@@ -48,6 +48,15 @@ jobs:
|
||||
|
||||
- run: npm ci
|
||||
|
||||
- name: npm audit
|
||||
if: startsWith(matrix.os, 'ubuntu-18.04')
|
||||
run: |
|
||||
npm audit > ./audit.log || true
|
||||
if ! [ "$(cat ./audit.log | wc -l)" = 1 ]; then
|
||||
echo "::warning::$(cat ./audit.log)"
|
||||
fi
|
||||
rm ./audit.log
|
||||
|
||||
- name: Run prettier
|
||||
if: startsWith(matrix.os, 'ubuntu-18.04')
|
||||
run: npm run format:check
|
||||
@@ -64,7 +73,7 @@ jobs:
|
||||
name: coverage-${{ matrix.os }}
|
||||
path: coverage
|
||||
|
||||
- uses: codecov/codecov-action@v1.0.11
|
||||
- uses: codecov/codecov-action@v1.0.12
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
|
||||
|
||||
141
CHANGELOG.md
141
CHANGELOG.md
@@ -2,6 +2,147 @@
|
||||
|
||||
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.0-8](https://github.com/peaceiris/actions-gh-pages/compare/v3.7.0-7...v3.7.0-8) (2020-08-09)
|
||||
|
||||
|
||||
### chore
|
||||
|
||||
* Add vscode devcontainer ([6b302fd](https://github.com/peaceiris/actions-gh-pages/commit/6b302fdd506eb1874da1e7245b19bc66c4db0bfc))
|
||||
|
||||
### ci
|
||||
|
||||
* Add actions runner env (#443) ([ba912f7](https://github.com/peaceiris/actions-gh-pages/commit/ba912f746bdcba752e96a9c6731af9f9ff289f0e)), closes [#443](https://github.com/peaceiris/actions-gh-pages/issues/443)
|
||||
|
||||
### deps
|
||||
|
||||
* bump @types/jest from 26.0.7 to 26.0.8 (#439) ([3f71ec2](https://github.com/peaceiris/actions-gh-pages/commit/3f71ec211a08aef8dde6999c8ee81dae974a26f2)), closes [#439](https://github.com/peaceiris/actions-gh-pages/issues/439)
|
||||
* bump @types/jest from 26.0.8 to 26.0.9 (#442) ([02db90c](https://github.com/peaceiris/actions-gh-pages/commit/02db90c5c8564c8b0c1432aca1b52d66d10c7583)), closes [#442](https://github.com/peaceiris/actions-gh-pages/issues/442)
|
||||
* bump @types/node from 12.12.53 to 12.12.54 (#441) ([b5599b3](https://github.com/peaceiris/actions-gh-pages/commit/b5599b36fdd4acffdb3fb4d55bb94ac76a2b3b98)), closes [#441](https://github.com/peaceiris/actions-gh-pages/issues/441)
|
||||
|
||||
### refactor
|
||||
|
||||
* Enhance log (#444) ([f800244](https://github.com/peaceiris/actions-gh-pages/commit/f80024481c7939706fac36cee86324c56371d6fd)), closes [#444](https://github.com/peaceiris/actions-gh-pages/issues/444)
|
||||
|
||||
|
||||
|
||||
# [3.7.0-7](https://github.com/peaceiris/actions-gh-pages/compare/v3.7.0-6...v3.7.0-7) (2020-08-02)
|
||||
|
||||
|
||||
### ci
|
||||
|
||||
* add env (#419) ([71958c5](https://github.com/peaceiris/actions-gh-pages/commit/71958c534b1f4dadbef055d8851541314574559b)), closes [#419](https://github.com/peaceiris/actions-gh-pages/issues/419)
|
||||
* Add npm audit (#426) ([a49e738](https://github.com/peaceiris/actions-gh-pages/commit/a49e738c320151f18296dbcda6a418408cd64ea3)), closes [#426](https://github.com/peaceiris/actions-gh-pages/issues/426)
|
||||
* add workflow_dispatch and schedule ([24d40fe](https://github.com/peaceiris/actions-gh-pages/commit/24d40fe124feecb6c5f4259a1906fcafd603b8f6))
|
||||
* change base image from Debian to Ubuntu 18.04 (#428) ([70c0076](https://github.com/peaceiris/actions-gh-pages/commit/70c0076457b26d38a26bacbac279b8bf35cc47c8)), closes [#428](https://github.com/peaceiris/actions-gh-pages/issues/428)
|
||||
* Clean up apt cache and junk (#425) ([5d053d3](https://github.com/peaceiris/actions-gh-pages/commit/5d053d30d0c607d63ce46c3d7ce321bfdb1c11c1)), closes [#425](https://github.com/peaceiris/actions-gh-pages/issues/425)
|
||||
* enhance version log (#429) ([681dcab](https://github.com/peaceiris/actions-gh-pages/commit/681dcab3fd25a0f24dc66bb2767c0e37934aad5c)), closes [#429](https://github.com/peaceiris/actions-gh-pages/issues/429)
|
||||
* reuse NODE_VERSION in nodesource URL (#430) ([2b5ce90](https://github.com/peaceiris/actions-gh-pages/commit/2b5ce90dc9ac2814d6e8ee5322d3e18b42ad008f)), closes [#430](https://github.com/peaceiris/actions-gh-pages/issues/430)
|
||||
* Set default branch to main (#424) ([4cf5105](https://github.com/peaceiris/actions-gh-pages/commit/4cf510592915a8c58f536094aa9b881196852ce1)), closes [#424](https://github.com/peaceiris/actions-gh-pages/issues/424)
|
||||
* set env CI to true (#418) ([eca3d9d](https://github.com/peaceiris/actions-gh-pages/commit/eca3d9d25efd39b60b2e32fe85e94b53951f9096)), closes [#418](https://github.com/peaceiris/actions-gh-pages/issues/418)
|
||||
|
||||
### deps
|
||||
|
||||
* Apply npm audit fix (#434) ([4bf31e4](https://github.com/peaceiris/actions-gh-pages/commit/4bf31e45208169b022dc9b870de61d6eea322d29)), closes [#434](https://github.com/peaceiris/actions-gh-pages/issues/434)
|
||||
* bump @types/node from 12.12.52 to 12.12.53 (#421) ([c839730](https://github.com/peaceiris/actions-gh-pages/commit/c8397307b446e9d81d20682060c40e8dd4de96b0)), closes [#421](https://github.com/peaceiris/actions-gh-pages/issues/421)
|
||||
* bump eslint-plugin-jest from 23.18.0 to 23.18.2 (#420) ([7259f5c](https://github.com/peaceiris/actions-gh-pages/commit/7259f5ccc2d61b325b9c8f33d570170a345d496b)), closes [#420](https://github.com/peaceiris/actions-gh-pages/issues/420)
|
||||
* bump eslint-plugin-jest from 23.18.2 to 23.19.0 (#423) ([2392f69](https://github.com/peaceiris/actions-gh-pages/commit/2392f69e4dd8264685215438922790389daedb24)), closes [#423](https://github.com/peaceiris/actions-gh-pages/issues/423)
|
||||
* bump eslint-plugin-jest from 23.19.0 to 23.20.0 (#432) ([0c8fc2d](https://github.com/peaceiris/actions-gh-pages/commit/0c8fc2d5e699acedef9512db7f3c240fa110285a)), closes [#432](https://github.com/peaceiris/actions-gh-pages/issues/432)
|
||||
* bump git from 2.27.0 to 2.28.0 (#422) ([fecb564](https://github.com/peaceiris/actions-gh-pages/commit/fecb5648609eee9e7add9fa2d5a9397abb3398db)), closes [#422](https://github.com/peaceiris/actions-gh-pages/issues/422)
|
||||
* bump jest-circus from 26.1.0 to 26.2.2 (#435) ([4fb3d60](https://github.com/peaceiris/actions-gh-pages/commit/4fb3d60161340ada324107b29fe7f4aa4a6487f0)), closes [#435](https://github.com/peaceiris/actions-gh-pages/issues/435)
|
||||
* bump node from 12.18.2 to 12.18.3 (#431) ([0794e07](https://github.com/peaceiris/actions-gh-pages/commit/0794e07c99f802bb0f1a4c00972e46b381a360ee)), closes [#431](https://github.com/peaceiris/actions-gh-pages/issues/431)
|
||||
|
||||
### docs
|
||||
|
||||
* Add exclude_assets section ([7dd962e](https://github.com/peaceiris/actions-gh-pages/commit/7dd962e52e7deb89dfa860da173ddbb96462d371))
|
||||
* bump hugo from 0.74.2 to 0.74.3 ([ded3953](https://github.com/peaceiris/actions-gh-pages/commit/ded3953565f3dde01b9678834705b16df9be1df6))
|
||||
|
||||
### feat
|
||||
|
||||
* Add .nojekyll file by default for all branches (#438) ([079d483](https://github.com/peaceiris/actions-gh-pages/commit/079d48367e5a8bc6448f5e9846666d27ea66e1e5)), closes [#438](https://github.com/peaceiris/actions-gh-pages/issues/438)
|
||||
|
||||
|
||||
|
||||
# [3.7.0-6](https://github.com/peaceiris/actions-gh-pages/compare/v3.7.0-5...v3.7.0-6) (2020-07-25)
|
||||
|
||||
|
||||
### feat
|
||||
|
||||
* exclude_assets supports glob patterns (#417) ([6f45501](https://github.com/peaceiris/actions-gh-pages/commit/6f45501409dbe16857c00f6d40a51bea56254f2b)), closes [#417](https://github.com/peaceiris/actions-gh-pages/issues/417) [#163](https://github.com/peaceiris/actions-gh-pages/issues/163)
|
||||
|
||||
|
||||
|
||||
# [3.7.0-5](https://github.com/peaceiris/actions-gh-pages/compare/v3.7.0-4...v3.7.0-5) (2020-07-25)
|
||||
|
||||
|
||||
### feat
|
||||
|
||||
* Add exclude_assets option (#416) ([0f5c65e](https://github.com/peaceiris/actions-gh-pages/commit/0f5c65e1408b30fe461ba319ca9a01d20c293cd4)), closes [#416](https://github.com/peaceiris/actions-gh-pages/issues/416) [#163](https://github.com/peaceiris/actions-gh-pages/issues/163)
|
||||
|
||||
|
||||
|
||||
# [3.7.0-4](https://github.com/peaceiris/actions-gh-pages/compare/v3.7.0-3...v3.7.0-4) (2020-07-25)
|
||||
|
||||
|
||||
### fix
|
||||
|
||||
* copyAssets() for destination_dir (#414) ([674c231](https://github.com/peaceiris/actions-gh-pages/commit/674c2318cebb9ba59aa8fbf8ec4fae8482e51e5c)), closes [#414](https://github.com/peaceiris/actions-gh-pages/issues/414)
|
||||
|
||||
|
||||
|
||||
# [3.7.0-3](https://github.com/peaceiris/actions-gh-pages/compare/v3.7.0-2...v3.7.0-3) (2020-07-24)
|
||||
|
||||
|
||||
### deps
|
||||
|
||||
* bump @types/jest from 26.0.5 to 26.0.7 (#411) ([d1700b5](https://github.com/peaceiris/actions-gh-pages/commit/d1700b565361478232daa6d66d3fe7c146b9d08f)), closes [#411](https://github.com/peaceiris/actions-gh-pages/issues/411)
|
||||
* bump @types/node from 12.12.51 to 12.12.52 (#412) ([1b5d710](https://github.com/peaceiris/actions-gh-pages/commit/1b5d710b249d09c1e229931378217c47773de8ed)), closes [#412](https://github.com/peaceiris/actions-gh-pages/issues/412)
|
||||
|
||||
### fix
|
||||
|
||||
* set full path of publishing assets (#413) ([6f6bb26](https://github.com/peaceiris/actions-gh-pages/commit/6f6bb2661a12d5db5d7df62962d1d28403a02860)), closes [#413](https://github.com/peaceiris/actions-gh-pages/issues/413) [/github.com/peaceiris/actions-gh-pages/issues/410#issuecomment-663507581](https://github.com//github.com/peaceiris/actions-gh-pages/issues/410/issues/issuecomment-663507581)
|
||||
|
||||
### refactor
|
||||
|
||||
* change message type from warning to info ([3667feb](https://github.com/peaceiris/actions-gh-pages/commit/3667febec573a36efa26505b6a712b314242991a))
|
||||
|
||||
|
||||
|
||||
# [3.7.0-2](https://github.com/peaceiris/actions-gh-pages/compare/v3.7.0-1...v3.7.0-2) (2020-07-23)
|
||||
|
||||
|
||||
### ci
|
||||
|
||||
* Add docker-compose.yml (#406) ([a2712f7](https://github.com/peaceiris/actions-gh-pages/commit/a2712f7b923e3e05d0f46e54fbcacef3380aca31)), closes [#406](https://github.com/peaceiris/actions-gh-pages/issues/406)
|
||||
* bump actions/setup-node from v2.1.0 to v2.1.1 (#407) ([8cd820b](https://github.com/peaceiris/actions-gh-pages/commit/8cd820bd660be6aa016923b6b35005df2fb071da)), closes [#407](https://github.com/peaceiris/actions-gh-pages/issues/407)
|
||||
* bump codecov/codecov-action from v1.0.11 to v1.0.12 (#409) ([af7aac1](https://github.com/peaceiris/actions-gh-pages/commit/af7aac10073791e2907990204f723d6b0ff902c5)), closes [#409](https://github.com/peaceiris/actions-gh-pages/issues/409)
|
||||
* remove types [skip ci] ([f633b0f](https://github.com/peaceiris/actions-gh-pages/commit/f633b0f6b54f252348cc3b10713b111caaf6f3d1))
|
||||
|
||||
### docs
|
||||
|
||||
* Add Code Scanning workflow badge ([99a89f6](https://github.com/peaceiris/actions-gh-pages/commit/99a89f661a291c444965018bf828995e08d7bb7b))
|
||||
* bump hugo from 0.71.1 to 0.74.2 ([ad558aa](https://github.com/peaceiris/actions-gh-pages/commit/ad558aa8bd9ad82edc7bd886159659328e6d61de))
|
||||
* change default-branch to main ([6896bd8](https://github.com/peaceiris/actions-gh-pages/commit/6896bd8b80ecc02e6c47bbcf7fc1ae0bd4d47645))
|
||||
* change master branch to default-branch (#408) ([5051105](https://github.com/peaceiris/actions-gh-pages/commit/505110527986e8c3d30694488f643d6529d0d593)), closes [#408](https://github.com/peaceiris/actions-gh-pages/issues/408)
|
||||
|
||||
### fix
|
||||
|
||||
* chdir to workDir after copied assets ([612f1f7](https://github.com/peaceiris/actions-gh-pages/commit/612f1f7579820dc380d265d61924f7a7d8718859)), closes [#324](https://github.com/peaceiris/actions-gh-pages/issues/324)
|
||||
|
||||
|
||||
|
||||
# [3.7.0-1](https://github.com/peaceiris/actions-gh-pages/compare/v3.7.0-0...v3.7.0-1) (2020-07-21)
|
||||
|
||||
|
||||
### docs
|
||||
|
||||
* Enhance section name ([3874723](https://github.com/peaceiris/actions-gh-pages/commit/3874723ac6158d13e3f1e3c8fd34e1ce96d9edf7))
|
||||
|
||||
### fix
|
||||
|
||||
* KeepFiles behaviour when DestinationDir has dir (#405) ([ce4e3be](https://github.com/peaceiris/actions-gh-pages/commit/ce4e3beff1ed33658f3160b0f45b688c6ea09932)), closes [#405](https://github.com/peaceiris/actions-gh-pages/issues/405) [#324](https://github.com/peaceiris/actions-gh-pages/issues/324)
|
||||
|
||||
|
||||
|
||||
# [3.7.0-0](https://github.com/peaceiris/actions-gh-pages/compare/v3.6.4...v3.7.0-0) (2020-07-21)
|
||||
|
||||
|
||||
|
||||
60
Dockerfile
60
Dockerfile
@@ -1,31 +1,55 @@
|
||||
ARG NODE_VERSION
|
||||
|
||||
FROM node:${NODE_VERSION}-buster-slim
|
||||
FROM ubuntu:18.04
|
||||
|
||||
SHELL ["/bin/bash", "-l", "-c"]
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends software-properties-common gnupg && \
|
||||
add-apt-repository ppa:git-core/ppa && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev autoconf \
|
||||
ca-certificates \
|
||||
git \
|
||||
curl \
|
||||
wget \
|
||||
ssh \
|
||||
vim && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
npm i -g npm
|
||||
apt-get autoclean && \
|
||||
apt-get clean && \
|
||||
apt-get autoremove -y && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /git
|
||||
ENV GIT_VERSION="2.27.0"
|
||||
RUN wget -q "https://github.com/git/git/archive/v${GIT_VERSION}.tar.gz" && \
|
||||
tar -zxf "./v${GIT_VERSION}.tar.gz" && \
|
||||
rm "./v${GIT_VERSION}.tar.gz" && \
|
||||
cd "./git-${GIT_VERSION}" && \
|
||||
make configure && \
|
||||
./configure --prefix=/usr && \
|
||||
make all && \
|
||||
make install
|
||||
WORKDIR /node
|
||||
ARG NODE_VERSION
|
||||
RUN curl -o nodejs.deb "https://deb.nodesource.com/node_${NODE_VERSION%%.*}.x/pool/main/n/nodejs/nodejs_${NODE_VERSION}-1nodesource1_amd64.deb" && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends ./nodejs.deb && \
|
||||
npm i -g npm && \
|
||||
curl -sL https://deb.nodesource.com/test | bash - && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
rm -rf /node
|
||||
|
||||
WORKDIR /repo
|
||||
|
||||
ENV DEBIAN_FRONTEND="noninteractive"
|
||||
ENV LANG="C.UTF-8"
|
||||
ENV CI="true"
|
||||
ENV ImageVersion="20200717.1"
|
||||
ENV GITHUB_SERVER_URL="https://github.com"
|
||||
ENV GITHUB_API_URL="https://api.github.com"
|
||||
ENV GITHUB_GRAPHQL_URL="https://api.github.com/graphql"
|
||||
ENV GITHUB_REPOSITORY_OWNER="peaceiris"
|
||||
ENV GITHUB_ACTIONS="true"
|
||||
ENV GITHUB_ACTOR="peaceiris"
|
||||
ENV GITHUB_REPOSITORY="actions/pages"
|
||||
ENV RUNNER_OS="Linux"
|
||||
ENV RUNNER_TOOL_CACHE="/opt/hostedtoolcache"
|
||||
ENV RUNNER_USER="runner"
|
||||
ENV RUNNER_TEMP="/home/runner/work/_temp"
|
||||
ENV RUNNER_WORKSPACE="/home/runner/work/pages"
|
||||
|
||||
RUN echo "node version: $(node -v)" && \
|
||||
echo "npm version: $(npm -v)" && \
|
||||
git --version && \
|
||||
git config --global init.defaultBranch main && \
|
||||
git config --global init.defaultBranch
|
||||
|
||||
CMD [ "bash" ]
|
||||
|
||||
38
Makefile
38
Makefile
@@ -1,46 +1,22 @@
|
||||
cmd := "bash"
|
||||
msg := ""
|
||||
IMAGE_NAME := docker.pkg.github.com/peaceiris/actions-gh-pages/dev:latest
|
||||
NODE_VERSION := $(shell cat ./.nvmrc)
|
||||
DOCKER_RUN := docker run --rm -i -t -v ${PWD}:/repo -v ~/.gitconfig:/root/.gitconfig $(IMAGE_NAME)
|
||||
DOCKER_RUN_CI := docker run --rm -v ${PWD}:/repo $(IMAGE_NAME)
|
||||
|
||||
|
||||
.PHONY: build
|
||||
build:
|
||||
docker build . \
|
||||
--build-arg NODE_VERSION=$(NODE_VERSION) \
|
||||
--cache-from=${IMAGE_NAME} \
|
||||
-t $(IMAGE_NAME)
|
||||
|
||||
.PHONY: pull
|
||||
pull:
|
||||
docker pull ${IMAGE_NAME}
|
||||
|
||||
.PHONY: push
|
||||
push:
|
||||
docker push ${IMAGE_NAME}
|
||||
docker-compose build --build-arg NODE_VERSION=$(NODE_VERSION)
|
||||
|
||||
.PHONY: run
|
||||
run:
|
||||
$(DOCKER_RUN) $(cmd)
|
||||
docker-compose run --rm dev bash
|
||||
|
||||
.PHONY: cirun
|
||||
cirun:
|
||||
$(DOCKER_RUN_CI) $(cmd)
|
||||
.PHONY: ci
|
||||
ci:
|
||||
docker-compose run --rm -T dev npm ci
|
||||
|
||||
.PHONY: test
|
||||
test:
|
||||
$(DOCKER_RUN) npm test
|
||||
|
||||
.PHONY: commit
|
||||
commit:
|
||||
$(DOCKER_RUN) git commit -m "$(msg)"
|
||||
docker-compose run --rm -T dev npm test
|
||||
|
||||
.PHONY: all
|
||||
all:
|
||||
$(DOCKER_RUN) npm run all
|
||||
|
||||
.PHONY: ciall
|
||||
ciall:
|
||||
$(DOCKER_RUN_CI) npm run all
|
||||
docker-compose run --rm -T dev npm run all
|
||||
|
||||
127
README.md
127
README.md
@@ -2,6 +2,7 @@
|
||||
[](https://github.com/peaceiris/actions-gh-pages/releases/latest)
|
||||
[](https://github.com/peaceiris/actions-gh-pages/releases)
|
||||

|
||||

|
||||
[](https://www.codefactor.io/repository/github/peaceiris/actions-gh-pages)
|
||||
|
||||
<img width="400" alt="GitHub Actions for deploying to GitHub Pages with Static Site Generators" src="./images/ogp.svg">
|
||||
@@ -69,18 +70,19 @@ All Actions runners: Linux (Ubuntu), macOS, and Windows are supported.
|
||||
- [⭐️ Repository type - Project](#%EF%B8%8F-repository-type---project)
|
||||
- [⭐️ Repository type - User and Organization](#%EF%B8%8F-repository-type---user-and-organization)
|
||||
- [Options](#options)
|
||||
- [⭐️ `github_token`](#%EF%B8%8F-github_token)
|
||||
- [⭐️ `deploy_key`](#%EF%B8%8F-deploy_key)
|
||||
- [⭐️ `personal_token`](#%EF%B8%8F-personal_token)
|
||||
- [⭐️ `publish_branch`](#%EF%B8%8F-publish_branch)
|
||||
- [⭐️ `publish_dir`](#%EF%B8%8F-publish_dir)
|
||||
- [⭐️ `destination_dir`](#%EF%B8%8F-destination_dir)
|
||||
- [⭐️ CNAME](#%EF%B8%8F-cname)
|
||||
- [⭐️ Enable Built-in Jekyll](#%EF%B8%8F-enable-built-in-jekyll)
|
||||
- [⭐️ Allow empty commits](#%EF%B8%8F-allow-empty-commits)
|
||||
- [⭐️ Keeping existing files](#%EF%B8%8F-keeping-existing-files)
|
||||
- [⭐️ Deploy to external repository](#%EF%B8%8F-deploy-to-external-repository)
|
||||
- [⭐️ Force orphan](#%EF%B8%8F-force-orphan)
|
||||
- [⭐️ Set Runner's Access Token `github_token`](#%EF%B8%8F-set-runners-access-token-github_token)
|
||||
- [⭐️ Set SSH Private Key `deploy_key`](#%EF%B8%8F-set-ssh-private-key-deploy_key)
|
||||
- [⭐️ Set Personal Access Token `personal_token`](#%EF%B8%8F-set-personal-access-token-personal_token)
|
||||
- [⭐️ Target Branch `publish_branch`](#%EF%B8%8F-target-branch-publish_branch)
|
||||
- [⭐️ Source Directory `publish_dir`](#%EF%B8%8F-source-directory-publish_dir)
|
||||
- [⭐️ Deploy to Subdirectory `destination_dir`](#%EF%B8%8F-deploy-to-subdirectory-destination_dir)
|
||||
- [⭐️ Filter publishing assets `exclude_assets`](#%EF%B8%8F-filter-publishing-assets-exclude_assets)
|
||||
- [⭐️ Add CNAME file `cname`](#%EF%B8%8F-add-cname-file-cname)
|
||||
- [⭐️ Enable Built-in Jekyll `enable_jekyll`](#%EF%B8%8F-enable-built-in-jekyll-enable_jekyll)
|
||||
- [⭐️ Allow empty commits `allow_empty_commit`](#%EF%B8%8F-allow-empty-commits-allow_empty_commit)
|
||||
- [⭐️ Keeping existing files `keep_files`](#%EF%B8%8F-keeping-existing-files-keep_files)
|
||||
- [⭐️ Deploy to external repository `external_repository`](#%EF%B8%8F-deploy-to-external-repository-external_repository)
|
||||
- [⭐️ Force orphan `force_orphan`](#%EF%B8%8F-force-orphan-force_orphan)
|
||||
- [⭐️ Set Git username and email](#%EF%B8%8F-set-git-username-and-email)
|
||||
- [⭐️ Set custom commit message](#%EF%B8%8F-set-custom-commit-message)
|
||||
- [⭐️ Create Git tag](#%EF%B8%8F-create-git-tag)
|
||||
@@ -112,7 +114,7 @@ All Actions runners: Linux (Ubuntu), macOS, and Windows are supported.
|
||||
|
||||
### ⭐️ Repository type - Project
|
||||
|
||||
Add your workflow file `.github/workflows/gh-pages.yml` and push to the remote master branch.
|
||||
Add your workflow file `.github/workflows/gh-pages.yml` and push to the remote default branch branch.
|
||||
|
||||
An example workflow for Hugo.
|
||||
|
||||
@@ -126,7 +128,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -140,7 +142,7 @@ jobs:
|
||||
- name: Setup Hugo
|
||||
uses: peaceiris/actions-hugo@v2
|
||||
with:
|
||||
hugo-version: '0.71.1'
|
||||
hugo-version: '0.74.3'
|
||||
|
||||
- name: Build
|
||||
run: hugo --minify
|
||||
@@ -201,7 +203,7 @@ jobs:
|
||||
|
||||
## Options
|
||||
|
||||
### ⭐️ `github_token`
|
||||
### ⭐️ Set Runner's Access Token `github_token`
|
||||
|
||||
**This option is for `GITHUB_TOKEN`, not a personal access token.**
|
||||
|
||||
@@ -217,7 +219,7 @@ GitHub Actions runner automatically creates a `GITHUB_TOKEN` secret to use in yo
|
||||
|
||||
For more details about `GITHUB_TOKEN`: [Authenticating with the GITHUB_TOKEN - GitHub Help](https://help.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token)
|
||||
|
||||
### ⭐️ `deploy_key`
|
||||
### ⭐️ Set SSH Private Key `deploy_key`
|
||||
|
||||
Read [Create SSH Deploy Key](#%EF%B8%8F-create-ssh-deploy-key), create your SSH deploy key, and set the `deploy_key` option like the following.
|
||||
|
||||
@@ -229,11 +231,10 @@ Read [Create SSH Deploy Key](#%EF%B8%8F-create-ssh-deploy-key), create your SSH
|
||||
publish_dir: ./public
|
||||
```
|
||||
|
||||
### ⭐️ `personal_token`
|
||||
### ⭐️ Set Personal Access Token `personal_token`
|
||||
|
||||
[Generate a personal access token (`repo`)](https://github.com/settings/tokens) and add it to Secrets as `PERSONAL_TOKEN`, it works as well as `ACTIONS_DEPLOY_KEY`.
|
||||
|
||||
|
||||
```yaml
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v3
|
||||
@@ -242,7 +243,7 @@ Read [Create SSH Deploy Key](#%EF%B8%8F-create-ssh-deploy-key), create your SSH
|
||||
publish_dir: ./public
|
||||
```
|
||||
|
||||
### ⭐️ `publish_branch`
|
||||
### ⭐️ Target Branch `publish_branch`
|
||||
|
||||
A target branch to deploy to GitHub Pages. The default is `gh-pages`.
|
||||
|
||||
@@ -254,7 +255,7 @@ A target branch to deploy to GitHub Pages. The default is `gh-pages`.
|
||||
publish_branch: master # default: gh-pages
|
||||
```
|
||||
|
||||
### ⭐️ `publish_dir`
|
||||
### ⭐️ Source Directory `publish_dir`
|
||||
|
||||
A source directory to deploy to GitHub Pages. The default is `public`.
|
||||
|
||||
@@ -266,19 +267,59 @@ A source directory to deploy to GitHub Pages. The default is `public`.
|
||||
publish_dir: ./out # default: public
|
||||
```
|
||||
|
||||
### ⭐️ `destination_dir`
|
||||
### ⭐️ Deploy to Subdirectory `destination_dir`
|
||||
|
||||
*This feature is on beta.*
|
||||
*Any feedback is welcome at [Issue #324](https://github.com/peaceiris/actions-gh-pages/issues/324)*
|
||||
|
||||
A destination subdirectory on a publishing branch. The default is empty.
|
||||
|
||||
```yaml
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v3.7.0-0
|
||||
uses: peaceiris/actions-gh-pages@v3.7.0-6
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
destination_dir: subdir
|
||||
```
|
||||
|
||||
### ⭐️ CNAME
|
||||
### ⭐️ Filter publishing assets `exclude_assets`
|
||||
|
||||
*This feature is on beta.*
|
||||
*Any feedback is welcome at [Issue #163](https://github.com/peaceiris/actions-gh-pages/issues/163)*
|
||||
|
||||
Set files or directories to exclude from publishing assets.
|
||||
The default is `.github`.
|
||||
Values should be split with a comma.
|
||||
|
||||
```yaml
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v3.7.0-6
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
exclude_assets: '.github,exclude-file1,exclude-file2'
|
||||
```
|
||||
|
||||
Set `exclude_assets` to empty for including the `.github` directory to deployment assets.
|
||||
|
||||
```yaml
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v3.7.0-6
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
exclude_assets: ''
|
||||
```
|
||||
|
||||
The `exclude_assets` option supports glob patterns.
|
||||
|
||||
```yaml
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v3.7.0-6
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
exclude_assets: '.github,exclude-file.txt,exclude-dir/**.txt'
|
||||
```
|
||||
|
||||
### ⭐️ Add CNAME file `cname`
|
||||
|
||||
To add `CNAME` file, we can set the `cname` option.
|
||||
|
||||
@@ -293,7 +334,7 @@ For more details about `CNAME`, read the official documentation: [Managing a cus
|
||||
cname: github.com
|
||||
```
|
||||
|
||||
### ⭐️ Enable Built-in Jekyll
|
||||
### ⭐️ Enable Built-in Jekyll `enable_jekyll`
|
||||
|
||||
If you want GitHub Pages to process your site with the static site generator Jekyll, set `enable_jekyll` to true.
|
||||
|
||||
@@ -315,7 +356,7 @@ Bypassing Jekyll makes the deployment faster and is necessary if you are deployi
|
||||
|
||||
For more details about `.nojekyll`: [Bypassing Jekyll on GitHub Pages - The GitHub Blog](https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/)
|
||||
|
||||
### ⭐️ Allow empty commits
|
||||
### ⭐️ Allow empty commits `allow_empty_commit`
|
||||
|
||||
By default, a commit will not be generated when no file changes. If you want to allow an empty commit, set the optional parameter `allow_empty_commit` to `true`.
|
||||
|
||||
@@ -330,7 +371,7 @@ For example:
|
||||
allow_empty_commit: true
|
||||
```
|
||||
|
||||
### ⭐️ Keeping existing files
|
||||
### ⭐️ Keeping existing files `keep_files`
|
||||
|
||||
By default, existing files in the publish branch are removed before adding the ones from publish dir. If you want the action to add new files but leave existing ones untouched, set the optional parameter `keep_files` to `true`.
|
||||
|
||||
@@ -345,7 +386,7 @@ For example:
|
||||
keep_files: true
|
||||
```
|
||||
|
||||
### ⭐️ Deploy to external repository
|
||||
### ⭐️ Deploy to external repository `external_repository`
|
||||
|
||||
By default, your files are published to the repository which is running this action.
|
||||
If you want to publish to another repository on GitHub, set the environment variable `external_repository` to `<username>/<external-repository>`.
|
||||
@@ -374,7 +415,7 @@ A GitHub Free Plan account cannot use the GitHub Pages in a private repository.
|
||||
- `peaceiris/homepage`: A private repository running this action with `external_repository: peaceiris/peaceiris.github.io`
|
||||
- `peaceiris/peaceiris.github.io`: A public repository using GitHub Pages
|
||||
|
||||
### ⭐️ Force orphan
|
||||
### ⭐️ Force orphan `force_orphan`
|
||||
|
||||
We can set the `force_orphan: true` option.
|
||||
This allows you to make your publish branch with only the latest commit.
|
||||
@@ -443,7 +484,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
tags:
|
||||
- 'v*.*.*'
|
||||
|
||||
@@ -475,7 +516,7 @@ jobs:
|
||||
Commands on a local machine.
|
||||
|
||||
```console
|
||||
$ # On the master branch
|
||||
$ # On a main branch
|
||||
$ git tag -a "v1.2.3" -m "Release v1.2.3"
|
||||
$ git push origin "v1.2.3"
|
||||
|
||||
@@ -483,7 +524,7 @@ $ # After deployment
|
||||
$ git fetch origin
|
||||
$ git tag
|
||||
deploy-v1.2.3 # Tag on the gh-pages branch
|
||||
v1.2.3 # Tag on the master branch
|
||||
v1.2.3 # Tag on the main branch
|
||||
```
|
||||
|
||||
<div align="right">
|
||||
@@ -569,7 +610,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
schedule:
|
||||
- cron: "22 22 * * *"
|
||||
workflow_dispatch:
|
||||
@@ -606,7 +647,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -650,7 +691,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -698,7 +739,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -749,7 +790,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -795,7 +836,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
paths:
|
||||
- '.github/workflows/deploy.yml'
|
||||
- 'website/**'
|
||||
@@ -852,7 +893,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -908,7 +949,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -943,7 +984,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -983,7 +1024,7 @@ name: github pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -1059,7 +1100,7 @@ name: GitHub Pages
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
|
||||
@@ -53,6 +53,7 @@ function getInputsLog(authMethod: string, inps: Inputs): string {
|
||||
[INFO] TagMessage: ${inps.TagMessage}
|
||||
[INFO] EnableJekyll (DisableNoJekyll): ${inps.DisableNoJekyll}
|
||||
[INFO] CNAME: ${inps.CNAME}
|
||||
[INFO] ExcludeAssets ${inps.ExcludeAssets}
|
||||
`;
|
||||
}
|
||||
|
||||
@@ -121,6 +122,7 @@ describe('getInputs()', () => {
|
||||
expect(inps.TagMessage).toMatch('');
|
||||
expect(inps.DisableNoJekyll).toBe(false);
|
||||
expect(inps.CNAME).toMatch('');
|
||||
expect(inps.ExcludeAssets).toMatch('.github');
|
||||
});
|
||||
|
||||
test('get spec inputs', () => {
|
||||
@@ -142,6 +144,7 @@ describe('getInputs()', () => {
|
||||
process.env['INPUT_TAG_MESSAGE'] = 'Deployment v1.2.3';
|
||||
process.env['INPUT_DISABLE_NOJEKYLL'] = 'true';
|
||||
process.env['INPUT_CNAME'] = 'github.com';
|
||||
process.env['INPUT_EXCLUDE_ASSETS'] = '.github';
|
||||
|
||||
const inps: Inputs = getInputs();
|
||||
|
||||
@@ -163,6 +166,7 @@ describe('getInputs()', () => {
|
||||
expect(inps.TagMessage).toMatch('Deployment v1.2.3');
|
||||
expect(inps.DisableNoJekyll).toBe(true);
|
||||
expect(inps.CNAME).toMatch('github.com');
|
||||
expect(inps.ExcludeAssets).toMatch('.github');
|
||||
});
|
||||
|
||||
test('get spec inputs enable_jekyll', () => {
|
||||
|
||||
@@ -40,6 +40,7 @@ describe('setRepo()', () => {
|
||||
// process.env['INPUT_TAG_MESSAGE'] = 'Deployment v1.2.3';
|
||||
// process.env['INPUT_DISABLE_NOJEKYLL'] = 'true';
|
||||
// process.env['INPUT_CNAME'] = 'github.com';
|
||||
process.env['INPUT_EXCLUDE_ASSETS'] = '.github';
|
||||
const inps: Inputs = getInputs();
|
||||
const remoteURL = 'https://x-access-token:pat@github.com/actions/pages.git';
|
||||
const date = new Date();
|
||||
|
||||
@@ -70,28 +70,14 @@ async function getWorkDir(): Promise<string> {
|
||||
}
|
||||
|
||||
describe('addNoJekyll()', () => {
|
||||
test('add .nojekyll gh-pages', async () => {
|
||||
test('add .nojekyll', async () => {
|
||||
let workDir = '';
|
||||
(async (): Promise<void> => {
|
||||
workDir = await getWorkDir();
|
||||
})();
|
||||
const filepath = path.join(workDir, '.nojekyll');
|
||||
|
||||
await addNoJekyll(workDir, false, 'gh-pages');
|
||||
const test = fs.existsSync(filepath);
|
||||
expect(test).toBe(true);
|
||||
|
||||
fs.unlinkSync(filepath);
|
||||
});
|
||||
|
||||
test('add .nojekyll master', async () => {
|
||||
let workDir = '';
|
||||
(async (): Promise<void> => {
|
||||
workDir = await getWorkDir();
|
||||
})();
|
||||
const filepath = path.join(workDir, '.nojekyll');
|
||||
|
||||
await addNoJekyll(workDir, false, 'master');
|
||||
await addNoJekyll(workDir, false);
|
||||
const test = fs.existsSync(filepath);
|
||||
expect(test).toBe(true);
|
||||
|
||||
@@ -106,57 +92,21 @@ describe('addNoJekyll()', () => {
|
||||
const filepath = path.join(workDir, '.nojekyll');
|
||||
fs.closeSync(fs.openSync(filepath, 'w'));
|
||||
|
||||
await addNoJekyll(workDir, false, 'master');
|
||||
await addNoJekyll(workDir, false);
|
||||
const test = fs.existsSync(filepath);
|
||||
expect(test).toBe(true);
|
||||
|
||||
fs.unlinkSync(filepath);
|
||||
});
|
||||
|
||||
test('not add .nojekyll disable_nojekyll gh-pages', async () => {
|
||||
test('not add .nojekyll disable_nojekyll', async () => {
|
||||
let workDir = '';
|
||||
(async (): Promise<void> => {
|
||||
workDir = await getWorkDir();
|
||||
})();
|
||||
const filepath = path.join(workDir, '.nojekyll');
|
||||
|
||||
await addNoJekyll(workDir, true, 'gh-pages');
|
||||
const test = fs.existsSync(filepath);
|
||||
expect(test).toBe(false);
|
||||
});
|
||||
|
||||
test('not add .nojekyll disable_nojekyll master', async () => {
|
||||
let workDir = '';
|
||||
(async (): Promise<void> => {
|
||||
workDir = await getWorkDir();
|
||||
})();
|
||||
const filepath = path.join(workDir, '.nojekyll');
|
||||
|
||||
await addNoJekyll(workDir, true, 'master');
|
||||
const test = fs.existsSync(filepath);
|
||||
expect(test).toBe(false);
|
||||
});
|
||||
|
||||
test('not add .nojekyll other-branch', async () => {
|
||||
let workDir = '';
|
||||
(async (): Promise<void> => {
|
||||
workDir = await getWorkDir();
|
||||
})();
|
||||
const filepath = path.join(workDir, '.nojekyll');
|
||||
|
||||
await addNoJekyll(workDir, false, 'other-branch');
|
||||
const test = fs.existsSync(filepath);
|
||||
expect(test).toBe(false);
|
||||
});
|
||||
|
||||
test('not add .nojekyll disable_nojekyll other-branch', async () => {
|
||||
let workDir = '';
|
||||
(async (): Promise<void> => {
|
||||
workDir = await getWorkDir();
|
||||
})();
|
||||
const filepath = path.join(workDir, '.nojekyll');
|
||||
|
||||
await addNoJekyll(workDir, true, 'other-branch');
|
||||
await addNoJekyll(workDir, true);
|
||||
const test = fs.existsSync(filepath);
|
||||
expect(test).toBe(false);
|
||||
});
|
||||
|
||||
@@ -73,3 +73,7 @@ inputs:
|
||||
cname:
|
||||
description: 'Set custom domain'
|
||||
required: false
|
||||
exclude_assets:
|
||||
description: 'Set files or directories to exclude from a publish directory.'
|
||||
required: false
|
||||
default: '.github'
|
||||
|
||||
16
docker-compose.yml
Normal file
16
docker-compose.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
version: '3.2'
|
||||
|
||||
services:
|
||||
dev:
|
||||
image: 'docker.pkg.github.com/peaceiris/actions-gh-pages/dev:latest'
|
||||
build:
|
||||
context: .
|
||||
cache_from:
|
||||
- 'docker.pkg.github.com/peaceiris/actions-gh-pages/dev:latest'
|
||||
container_name: peaceiris_actions_github_pages
|
||||
volumes:
|
||||
- ${PWD}:/repo
|
||||
stdin_open: true
|
||||
tty: true
|
||||
command:
|
||||
- bash
|
||||
File diff suppressed because one or more lines are too long
637
package-lock.json
generated
637
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "actions-github-pages",
|
||||
"version": "3.7.0-0",
|
||||
"version": "3.7.0-8",
|
||||
"description": "GitHub Actions for GitHub Pages",
|
||||
"main": "lib/index.js",
|
||||
"engines": {
|
||||
@@ -57,10 +57,11 @@
|
||||
"@actions/core": "^1.2.4",
|
||||
"@actions/exec": "^1.0.4",
|
||||
"@actions/github": "^4.0.0",
|
||||
"@actions/glob": "^0.1.0",
|
||||
"@actions/io": "^1.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^26.0.5",
|
||||
"@types/jest": "^26.0.9",
|
||||
"@types/js-yaml": "^3.12.4",
|
||||
"@types/node": "~12",
|
||||
"@typescript-eslint/eslint-plugin": "^2.34.0",
|
||||
@@ -68,11 +69,11 @@
|
||||
"@zeit/ncc": "^0.22.3",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-config-prettier": "^6.11.0",
|
||||
"eslint-plugin-jest": "^23.18.0",
|
||||
"eslint-plugin-jest": "^23.20.0",
|
||||
"eslint-plugin-prettier": "^3.1.4",
|
||||
"husky": "^4.2.5",
|
||||
"jest": "^25.5.4",
|
||||
"jest-circus": "^26.1.0",
|
||||
"jest-circus": "^26.2.2",
|
||||
"js-yaml": "^3.14.0",
|
||||
"lint-staged": "^10.2.11",
|
||||
"prettier": "2.0.5",
|
||||
|
||||
@@ -28,6 +28,7 @@ export function showInputs(inps: Inputs): void {
|
||||
[INFO] TagMessage: ${inps.TagMessage}
|
||||
[INFO] EnableJekyll (DisableNoJekyll): ${inps.DisableNoJekyll}
|
||||
[INFO] CNAME: ${inps.CNAME}
|
||||
[INFO] ExcludeAssets ${inps.ExcludeAssets}
|
||||
`);
|
||||
}
|
||||
|
||||
@@ -65,7 +66,8 @@ export function getInputs(): Inputs {
|
||||
TagName: core.getInput('tag_name'),
|
||||
TagMessage: core.getInput('tag_message'),
|
||||
DisableNoJekyll: useBuiltinJekyll,
|
||||
CNAME: core.getInput('cname')
|
||||
CNAME: core.getInput('cname'),
|
||||
ExcludeAssets: core.getInput('exclude_assets')
|
||||
};
|
||||
|
||||
return inps;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
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';
|
||||
@@ -12,19 +13,50 @@ export async function createBranchForce(branch: string): Promise<void> {
|
||||
return;
|
||||
}
|
||||
|
||||
export async function copyAssets(publishDir: string, destDir: string): Promise<void> {
|
||||
export async function deleteExcludedAssets(destDir: string, excludeAssets: string): Promise<void> {
|
||||
core.info(`[INFO] delete excluded assets`);
|
||||
const excludedAssetNames: Array<string> = excludeAssets.split(',');
|
||||
const excludedAssetPaths = ((): Array<string> => {
|
||||
const paths: Array<string> = [];
|
||||
for (const pattern of excludedAssetNames) {
|
||||
paths.push(path.join(destDir, pattern));
|
||||
}
|
||||
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);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
export async function copyAssets(
|
||||
publishDir: string,
|
||||
destDir: string,
|
||||
excludeAssets: string
|
||||
): Promise<void> {
|
||||
core.info(`[INFO] prepare publishing assets`);
|
||||
const copyOpts = {recursive: true, force: true};
|
||||
const files = fs.readdirSync(publishDir);
|
||||
core.debug(`${files}`);
|
||||
for await (const file of files) {
|
||||
if (file.endsWith('.git') || file.endsWith('.github')) {
|
||||
if (file === '.git') {
|
||||
core.info(`[INFO] skip ${file}`);
|
||||
continue;
|
||||
}
|
||||
const filePath = path.join(publishDir, file);
|
||||
await io.cp(filePath, `${destDir}/`, copyOpts);
|
||||
const filePublishPath = path.join(publishDir, file);
|
||||
const fileDestPath = path.join(destDir, file);
|
||||
const destPath = path.dirname(fileDestPath);
|
||||
if (fs.existsSync(destPath) === false) {
|
||||
await createDir(destPath);
|
||||
}
|
||||
core.info(`[INFO] copy ${file}`);
|
||||
await io.cp(filePublishPath, fileDestPath, copyOpts);
|
||||
}
|
||||
|
||||
await deleteExcludedAssets(destDir, excludeAssets);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -47,10 +79,10 @@ export async function setRepo(inps: Inputs, remoteURL: string, workDir: string):
|
||||
core.info(`[INFO] ForceOrphan: ${inps.ForceOrphan}`);
|
||||
if (inps.ForceOrphan) {
|
||||
await createDir(destDir);
|
||||
core.info(`[INFO] chdir ${workDir}`);
|
||||
process.chdir(workDir);
|
||||
await createBranchForce(inps.PublishBranch);
|
||||
process.chdir(destDir);
|
||||
await copyAssets(publishDir, destDir);
|
||||
await copyAssets(publishDir, destDir, inps.ExcludeAssets);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -73,25 +105,32 @@ export async function setRepo(inps: Inputs, remoteURL: string, workDir: string):
|
||||
options
|
||||
);
|
||||
if (result.exitcode === 0) {
|
||||
process.chdir(workDir);
|
||||
await createDir(destDir);
|
||||
|
||||
if (inps.KeepFiles) {
|
||||
core.info('[INFO] Keep existing files');
|
||||
} else {
|
||||
core.info(`[INFO] clean up ${destDir}`);
|
||||
core.info(`[INFO] chdir ${destDir}`);
|
||||
process.chdir(destDir);
|
||||
await exec.exec('git', ['rm', '-r', '--ignore-unmatch', '*']);
|
||||
}
|
||||
|
||||
await copyAssets(publishDir, destDir);
|
||||
core.info(`[INFO] chdir ${workDir}`);
|
||||
process.chdir(workDir);
|
||||
await copyAssets(publishDir, destDir, inps.ExcludeAssets);
|
||||
return;
|
||||
} else {
|
||||
throw new Error(`Failed to clone remote branch ${inps.PublishBranch}`);
|
||||
}
|
||||
} catch (e) {
|
||||
core.info(`[INFO] first deployment, create new branch ${inps.PublishBranch}`);
|
||||
core.info(e.message);
|
||||
core.info(`[INFO] ${e.message}`);
|
||||
await createDir(destDir);
|
||||
core.info(`[INFO] chdir ${workDir}`);
|
||||
process.chdir(workDir);
|
||||
await createBranchForce(inps.PublishBranch);
|
||||
await copyAssets(publishDir, destDir);
|
||||
await copyAssets(publishDir, destDir, inps.ExcludeAssets);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ export interface Inputs {
|
||||
readonly TagMessage: string;
|
||||
readonly DisableNoJekyll: boolean;
|
||||
readonly CNAME: string;
|
||||
readonly ExcludeAssets: string;
|
||||
}
|
||||
|
||||
export interface CmdResult {
|
||||
|
||||
@@ -48,7 +48,7 @@ export async function run(): Promise<void> {
|
||||
const unixTime = date.getTime();
|
||||
const workDir = await getWorkDirName(`${unixTime}`);
|
||||
await setRepo(inps, remoteURL, workDir);
|
||||
await addNoJekyll(workDir, inps.DisableNoJekyll, inps.PublishBranch);
|
||||
await addNoJekyll(workDir, inps.DisableNoJekyll);
|
||||
await addCNAME(workDir, inps.CNAME);
|
||||
core.endGroup();
|
||||
|
||||
|
||||
20
src/utils.ts
20
src/utils.ts
@@ -29,22 +29,16 @@ export async function createDir(dirPath: string): Promise<void> {
|
||||
return;
|
||||
}
|
||||
|
||||
export async function addNoJekyll(
|
||||
workDir: string,
|
||||
DisableNoJekyll: boolean,
|
||||
PublishBranch: string
|
||||
): Promise<void> {
|
||||
export async function addNoJekyll(workDir: string, DisableNoJekyll: boolean): Promise<void> {
|
||||
if (DisableNoJekyll) {
|
||||
return;
|
||||
}
|
||||
if (PublishBranch === 'master' || PublishBranch === 'gh-pages') {
|
||||
const filepath = path.join(workDir, '.nojekyll');
|
||||
if (fs.existsSync(filepath)) {
|
||||
return;
|
||||
}
|
||||
fs.closeSync(fs.openSync(filepath, 'w'));
|
||||
core.info(`[INFO] Created ${filepath}`);
|
||||
const filepath = path.join(workDir, '.nojekyll');
|
||||
if (fs.existsSync(filepath)) {
|
||||
return;
|
||||
}
|
||||
fs.closeSync(fs.openSync(filepath, 'w'));
|
||||
core.info(`[INFO] Created ${filepath}`);
|
||||
}
|
||||
|
||||
export async function addCNAME(workDir: string, content: string): Promise<void> {
|
||||
@@ -53,7 +47,7 @@ export async function addCNAME(workDir: string, content: string): Promise<void>
|
||||
}
|
||||
const filepath = path.join(workDir, 'CNAME');
|
||||
if (fs.existsSync(filepath)) {
|
||||
core.warning(`CNAME already exists, skip adding CNAME`);
|
||||
core.info(`CNAME already exists, skip adding CNAME`);
|
||||
return;
|
||||
}
|
||||
fs.writeFileSync(filepath, content + '\n');
|
||||
|
||||
Reference in New Issue
Block a user