Compare commits

..

78 Commits

Author SHA1 Message Date
peaceiris
cbdb69fd85 feat: ignore .git and .github
Close #57
2019-12-23 06:44:37 +09:00
Shohei Ueda
d772f4e8eb docs: pin v2 2019-12-23 06:06:47 +09:00
peaceiris
bca5701620 docs: update toc 2019-12-23 06:03:42 +09:00
peaceiris
b8c0499d1e chore: Add workflow 2019-12-23 05:51:44 +09:00
Shohei Ueda
1e0de0fccd feat: Add INPUT_FORCEORPHAN (#43)
* feat: Add INPUT_FORCEORPHAN option (close #42)
* docs: Add new section about Force orphan
2019-12-23 05:49:21 +09:00
peaceiris
e376bcf7c0 Revert "chore: remove paths-ignore of pr"
This reverts commit 2437fbe949.
2019-12-18 07:08:38 +09:00
Shohei Ueda
2437fbe949 chore: remove paths-ignore of pr 2019-12-16 12:44:08 +09:00
Shohei Ueda
1bf8e45e86 docs: Use Flutter beta channel (#61) 2019-12-16 12:43:18 +09:00
Shohei Ueda
26c5cb82dd chore: upgrade actions/checkout to v2 2019-12-14 18:03:52 +09:00
Shohei Ueda
fb16fe135c chore: Rename workflow name 2019-12-14 18:02:39 +09:00
Shohei Ueda
e13d24c2ac chore: Add Pull Request to stale target 2019-12-09 10:39:58 +09:00
Shohei Ueda
830cc44454 Update purge-readme-image-cache.yml 2019-12-09 10:38:57 +09:00
peaceiris
cf4667b165 gha: Remove checkout step 2019-12-08 17:47:22 +09:00
peaceiris
299744c4cc gha: Remove push trigger 2019-12-08 17:43:01 +09:00
peaceiris
817fe3379a gha: Fix one liner 2019-12-08 17:38:48 +09:00
peaceiris
dbec91074d gha: Add checkout step 2019-12-08 17:35:21 +09:00
peaceiris
3514e583e0 gha: Add workflow to purge readme image cache 2019-12-08 17:30:38 +09:00
peaceiris
6da534f570 docs: Pin action version to v2 2019-12-05 19:59:16 +09:00
peaceiris
0803e7e969 gha: Pin version actions/checkout to v1 2019-12-05 19:54:25 +09:00
Shohei Ueda
14ef8241ef Create stale.yml 2019-12-05 17:07:08 +09:00
peaceiris
7194caacc4 docs: Pin actions/checkout version to v1 2019-12-05 03:41:25 +09:00
peaceiris
93de081763 docs: Enhance Flutter example 2019-12-04 15:58:41 +09:00
Taiga Mikami
f035f9f5e7 docs: add flutter web workflow example (#56) 2019-12-04 15:49:03 +09:00
Shohei Ueda
9d15cc0dbc docs: Pin ubuntu version (#55) 2019-12-04 08:31:30 +09:00
Shohei Ueda
626ca71936 docs: Add stable tag v2 of peaceiris/actions-hugo 2019-11-28 20:49:06 +09:00
Shohei Ueda
e4b680c116 Update docker-image-ci.yml 2019-11-28 19:51:55 +09:00
Shohei Ueda
8563c806e5 Update docker-image-ci.yml 2019-11-28 19:35:49 +09:00
Shohei Ueda
0ce7e18faa Update README.md 2019-11-28 00:07:26 +09:00
peaceiris
46649571f8 docs: Add image 2019-11-22 12:50:27 +09:00
Shohei Ueda
83eaab4031 Update README.md 2019-11-22 12:40:57 +09:00
Shohei Ueda
81110be679 docs: update actions-hugo tag 2019-11-22 12:27:37 +09:00
Shohei Ueda
455788d397 Update README.md 2019-11-21 17:05:13 +09:00
Shohei Ueda
8aea3055ca docs: Add token difference table 2019-11-21 17:02:38 +09:00
Shohei Ueda
1f2f7ef05e Update README.md 2019-11-20 23:13:55 +09:00
peaceiris
141d3dbf3a docs: update mdbook example workflow 2019-11-20 18:16:58 +09:00
peaceiris
c656aacd4e docs: update mdbook example workflow 2019-11-20 18:15:13 +09:00
Shohei Ueda
34c4d59419 docs: Add link to mdbook 2019-11-20 18:00:18 +09:00
peaceiris
db893610ff docs: update toc 2019-11-20 17:52:26 +09:00
Shohei Ueda
8daaa39070 docs: Add mdbook example 2019-11-20 17:51:46 +09:00
Shohei Ueda
8dc241e75a docs: update cache step example for yarn
https://github.com/actions/cache/blob/master/examples.md#node---yarn
https://github.com/actions/cache/pull/70
2019-11-14 00:33:03 +09:00
Shohei Ueda
20ef467283 Update README.md 2019-11-13 11:08:54 +09:00
Shohei Ueda
49a4a6dfc2 Update README.md 2019-11-13 09:28:54 +09:00
Shohei Ueda
74185ffe80 docs: Add cache step to Python example
Close #48
2019-11-13 09:18:16 +09:00
Shohei Ueda
097933f4ab Update README.md 2019-11-12 11:00:34 +09:00
Shohei Ueda
8972cc626f Update README.md 2019-11-11 22:01:38 +09:00
Shohei Ueda
1468ca9775 docs: Fix cache step of React and Next example 2019-11-10 21:19:30 +09:00
peaceiris
b172208a72 Merge branch 'docs/add-cache-step' 2019-11-10 14:20:26 +09:00
peaceiris
645870064d docs: Add cache step 2019-11-10 14:19:52 +09:00
Shohei Ueda
8981758aad gha: update to macos-latest 2019-11-07 08:20:14 +09:00
Shohei Ueda
f3c1954c3b Update docker-image-ci.yml 2019-11-03 13:30:26 +09:00
peaceiris
f47e77b3ef github: Add issue template config
https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser
2019-10-29 09:50:58 +09:00
Shohei Ueda
0e1d168f48 Update issue templates 2019-10-29 09:46:29 +09:00
peaceiris
e4df4b2d92 github: Enhance action name 2019-10-29 03:30:53 +09:00
peaceiris
d6d7a5601d github: Remove FUNDING.yml 2019-10-29 03:27:49 +09:00
peaceiris
cd78101d9c docs: Remove Hugo --gc flag
This flag should be used on local.
It is wasteful to use the Garbage Collection on CI.
2019-10-24 21:46:41 +09:00
peaceiris
8076e77c01 github: Add CODEOWNERS 2019-10-24 06:04:56 +09:00
peaceiris
5e8a6ff9d9 ci: Add dependabot config 2019-10-23 19:52:00 +09:00
dependabot-preview[bot]
78a8692f54 build(deps): bump alpine from 3.10.2 to 3.10.3 (#44)
Bumps alpine from 3.10.2 to 3.10.3.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-22 15:08:18 +09:00
peaceiris
69067de181 docs: Remove the link to actions tab
We need to login to access the actions tab.

https://github.com/sdras/awesome-actions/issues/232
2019-10-17 16:36:44 +09:00
peaceiris
7f7794a793 docs: update Hugo workflow example, enhance build step 2019-10-14 22:03:59 +09:00
peaceiris
e60d374041 docs: Enhance node-version 2019-10-08 18:59:10 +09:00
imgbot[bot]
8191f265b1 [ImgBot] Optimize images (#40)
/images/ogp.svg -- 45.84kb -> 45.82kb (0.05%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2019-10-08 14:00:13 +09:00
peaceiris
4eb9565412 docs: update 2019-10-07 03:20:07 +09:00
peaceiris
e5910bfc4f docs: update tag 2019-10-07 00:21:11 +09:00
peaceiris
09158e35aa docs: Fix tag 2019-10-07 00:01:25 +09:00
peaceiris
26405de510 docs: update latest tag 2019-10-07 00:00:09 +09:00
Shohei Ueda
855ba06744 Release: v2.5.0 (#38)
* gha: enhance trigger
* feat: Add SCRIPT_MODE
* docs: Update about GITHUB_TOKEN
* docs: Add new section about Script mode, close #37
2019-10-06 23:53:36 +09:00
peaceiris
159b07d518 docs: update 2019-10-06 21:10:05 +09:00
Simon Eßlinger
37e4747275 feat: deploy to other repo (#36)
* feat: Add EXTERNAL_REPOSITORY option
* docs: Add section about EXTERNAL_REPOSITORY
2019-10-06 19:41:46 +09:00
peaceiris
ea833f5400 meta: Update description 2019-10-03 11:31:57 +09:00
peaceiris
3ceceb921f docs: Add new section (Use the latest and specific release) 2019-09-29 18:03:31 +09:00
peaceiris
9e74ae3f23 docs: update 2019-09-29 17:50:32 +09:00
peaceiris
76490a48db docs: enhance TOC 2019-09-29 17:46:43 +09:00
peaceiris
c138367a6e docs: Add Back to TOC link 2019-09-29 17:42:23 +09:00
peaceiris
3e2f32bb1e docs: enhance description 2019-09-29 17:36:37 +09:00
peaceiris
f54520fcda docs: Add file addition examples 2019-09-29 14:26:04 +09:00
peaceiris
83bc08b934 docs: update tag of peaceiris/actions-hugo to v2.2.1 2019-09-25 12:45:09 +09:00
Shohei Ueda
380b190669 fix: avoid #29 for keepFiles option (#34)
Some checks failed
docker image ci / test (push) Has been cancelled
docker image ci / shellcheck (push) Has been cancelled
docker image ci / hadolint (push) Has been cancelled
* fix: avoid #29
* docs: update TOC
* docs: update tag to v2.4.0
2019-09-25 03:00:25 +09:00
16 changed files with 559 additions and 154 deletions

10
.dependabot/config.yml Normal file
View File

@@ -0,0 +1,10 @@
version: 1
update_configs:
- package_manager: "docker"
directory: "/"
update_schedule: "weekly"
default_labels:
- "dependencies"
- "docker"
commit_message:
prefix: "deps"

3
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1,3 @@
# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
* @peaceiris

9
.github/FUNDING.yml vendored
View File

@@ -1,9 +0,0 @@
# These are supported funding model platforms
# github: peaceiris
patreon: peaceiris
issuehunt: peaceiris
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
custom: # Replace with a single custom sponsorship URL

31
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,31 @@
---
name: Bug report
about: Create a report to help us improve
title: 'Bug: This is a sample issue title'
labels: bug
assignees: peaceiris
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Your YAML file**
- A link to your repository
- A link to your YAML file
**Additional context**
Add any other context about the problem here.

8
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: GitHub Actions Community Forum
url: https://github.community/t5/GitHub-Actions/bd-p/actions
about: Please ask questions about GitHub Actions here.
- name: GitHub Pages help
url: https://help.github.com/en/github/working-with-github-pages
about: GitHub Pages documentaion here.

20
.github/ISSUE_TEMPLATE/proposal.md vendored Normal file
View File

@@ -0,0 +1,20 @@
---
name: Proposal
about: Suggest an idea for this project
title: 'proposal: This is a sample title'
labels: proposal
assignees: peaceiris
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -3,40 +3,38 @@ name: docker image ci
on:
pull_request:
types: [opened, synchronize]
paths-ignore:
- '**.md'
push:
paths-ignore:
- '**.md'
branches:
- master
jobs:
test:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@master
with:
fetch-depth: 1
- uses: actions/checkout@v2
- name: build
env:
DOCKER_IMAGE: docker.pkg.github.com/${{ github.repository }}/action:latest
run: |
docker build . --file Dockerfile --tag ${DOCKER_IMAGE} ||
(echo -e "\e[31m[${GITHUB_WORKFLOW}] failed to build\e[m" && exit 1)
docker build . --file Dockerfile --tag ${DOCKER_IMAGE}
shellcheck:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@master
with:
fetch-depth: 1
- uses: actions/checkout@v2
- name: shellcheck
run: shellcheck ./entrypoint.sh
hadolint:
runs-on: macOS-10.14
runs-on: macos-latest
steps:
- uses: actions/checkout@master
with:
fetch-depth: 1
- name: hadolint
run: |
brew install hadolint
hadolint ./Dockerfile
- uses: actions/checkout@v2
- run: brew install hadolint
- run: hadolint ./Dockerfile

View File

@@ -0,0 +1,16 @@
name: Purge image cache
on:
schedule:
- cron: '54 18 * * */7'
jobs:
purge:
runs-on: ubuntu-18.04
steps:
- run: >
curl -sL https://github.com/${GITHUB_REPOSITORY} |
grep -oE '<img src="https?://camo.githubusercontent.com/[^"]+' |
sed -e 's/<img src="//' |
xargs -I % curl -sX PURGE %

17
.github/workflows/stale.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
name: "Stale"
on:
schedule:
- cron: "6 6 * * *"
jobs:
stale:
runs-on: ubuntu-18.04
steps:
- uses: actions/stale@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue is stale because it has been open 21 days with no activity. Remove stale label or comment or this will be closed in 7 days.'
stale-pr-message: 'This pull request is stale because it has been open 21 days with no activity. Remove stale label or comment or this will be closed in 7 days.'
days-before-stale: 21
days-before-close: 7

24
.github/workflows/update-major-tag.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
name: Update major tag
on:
release:
types: [published]
jobs:
update:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Update major tag
if: github.event.release.prerelease == false
run: |
git config user.name "${GITHUB_ACTOR}"
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
git remote set-url origin "https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git"
export TAG_NAME="${GITHUB_REF##refs/tags/}"
export TAG_MAJOR="${TAG_NAME%%.*}"
git tag "${TAG_MAJOR}" -m "Release ${TAG_NAME}" || git tag -d "${TAG_MAJOR}" ; git push --delete origin "${TAG_MAJOR}"
git tag "${TAG_MAJOR}" -m "Release ${TAG_NAME}" || true
git push origin "${TAG_MAJOR}"

View File

@@ -1,4 +1,4 @@
FROM alpine:3.10.2
FROM alpine:3.10.3
RUN apk add --no-cache \
bash \

459
README.md
View File

@@ -1,43 +1,89 @@
[![license](https://img.shields.io/github/license/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/blob/master/LICENSE)
[![release](https://img.shields.io/github/release/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/releases/latest)
[![GitHub release date](https://img.shields.io/github/release-date/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/releases)
[![GitHub Actions status](https://github.com/peaceiris/actions-gh-pages/workflows/docker%20image%20ci/badge.svg)](https://github.com/peaceiris/actions-gh-pages/actions)
![GitHub Actions status](https://github.com/peaceiris/actions-gh-pages/workflows/docker%20image%20ci/badge.svg)
[![Docker Hub Build Status](https://img.shields.io/docker/cloud/build/peaceiris/gh-pages.svg)](https://hub.docker.com/r/peaceiris/gh-pages)
<img width="400" alt="GitHub Actions for deploying to GitHub Pages with Static Site Generators" src="./images/ogp.svg">
## GitHub Actions for deploying to GitHub Pages
## GitHub Actions for GitHub Pages
A GitHub Action to deploy your static site to GitHub Pages with [Static Site Generators] (Hugo, MkDocs, Gatsby, GitBook, etc.)
This is a **GitHub Action** to deploy your static files to **GitHub Pages**.
This deploy action can be combined simply and freely with [Static Site Generators]. (Hugo, MkDocs, Gatsby, GitBook, mdBook, etc.)
[Static Site Generators]: https://www.staticgen.com/
The next example step will deploy `./public` directory to the remote `gh-pages` branch.
```yaml
- name: Deploy
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
# PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./public
```
Three tokens are supported.
| Token | Private repo | Public repo | Protocol | Setup |
|---|:---:|:---:|---|---|
| `GITHUB_TOKEN` | ✅️ | ❌️ | HTTPS | Unnecessary |
| `PERSONAL_TOKEN` | ✅️ | ✅️ | HTTPS | Necessary |
| `ACTIONS_DEPLOY_KEY` | ✅️ | ✅️ | SSH | Necessary |
Do you want to skip the docker build step? OK, the script mode is available.
```yaml
- name: Deploy
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./public
SCRIPT_MODE: true
run: |
wget https://raw.githubusercontent.com/peaceiris/actions-gh-pages/v2/entrypoint.sh
bash ./entrypoint.sh
```
## Table of Contents
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
Table of Contents
- [Getting started](#getting-started)
- [(1) Add ssh deploy key](#1-add-ssh-deploy-key)
- [(2) Create `.github/workflows/gh-pages.yml`](#2-create-githubworkflowsgh-pagesyml)
- [(1) Add SSH deploy key](#1-add-ssh-deploy-key)
- [(2) Create your workflow](#2-create-your-workflow)
- [⭐️ Repository type - Project](#%EF%B8%8F-repository-type---project)
- [⭐️ Repository type - User and Organization](#%EF%B8%8F-repository-type---user-and-organization)
- [Options](#options)
- [⭐️ Pull action image from Docker Hub](#%EF%B8%8F-pull-action-image-from-docker-hub)
- [⭐️ `PERSONAL_TOKEN`](#%EF%B8%8F-personal_token)
- [⭐️ `GITHUB_TOKEN`](#%EF%B8%8F-github_token)
- [⭐️ Suppressing empty commits](#%EF%B8%8F-suppressing-empty-commits)
- [⭐️ Keeping existing files](#%EF%B8%8F-keeping-existing-files)
- [Options](#options)
- [⭐️ Pull action image from Docker Hub](#%EF%B8%8F-pull-action-image-from-docker-hub)
- [⭐️ `PERSONAL_TOKEN`](#%EF%B8%8F-personal_token)
- [⭐️ `GITHUB_TOKEN`](#%EF%B8%8F-github_token)
- [⭐️ Suppressing empty commits](#%EF%B8%8F-suppressing-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)
- [⭐️ Script mode](#%EF%B8%8F-script-mode)
- [Tips and FAQ](#tips-and-faq)
- [How to add `CNAME`](#how-to-add-cname)
- [Deployment completed but you cannot read](#deployment-completed-but-you-cannot-read)
- [⭐️ Use the latest and specific release](#%EF%B8%8F-use-the-latest-and-specific-release)
- [⭐️ How to add `CNAME`](#%EF%B8%8F-how-to-add-cname)
- [⭐️ Deployment completed but you cannot read](#%EF%B8%8F-deployment-completed-but-you-cannot-read)
- [Examples](#examples)
- [Static Site Generators with Node.js](#static-site-generators-with-nodejs)
- [Gatsby](#gatsby)
- [React and Next](#react-and-next)
- [Vue and Nuxt](#vue-and-nuxt)
- [Static Site Generators with Python](#static-site-generators-with-python)
- [⭐️ Static Site Generators with Node.js](#%EF%B8%8F-static-site-generators-with-nodejs)
- [⭐️ Gatsby](#%EF%B8%8F-gatsby)
- [⭐️ React and Next](#%EF%B8%8F-react-and-next)
- [⭐️ Vue and Nuxt](#%EF%B8%8F-vue-and-nuxt)
- [⭐️ Static Site Generators with Python](#%EF%B8%8F-static-site-generators-with-python)
- [⭐️ mdBook (Rust)](#%EF%B8%8F-mdbook-rust)
- [⭐️ Flutter Web](#%EF%B8%8F-flutter-web)
- [License](#license)
- [About the author](#about-the-author)
@@ -47,7 +93,7 @@ Table of Contents
## Getting started
### (1) Add ssh deploy key
### (1) Add SSH deploy key
Generate your deploy key with the following command.
@@ -71,7 +117,9 @@ Next, Go to **Repository Settings**
|---|---|
| ![](./images/secrets-1.jpg) | ![](./images/secrets-2.jpg) |
### (2) Create `.github/workflows/gh-pages.yml`
### (2) Create your workflow
Add your workflow setting YAML file `.github/workflows/gh-pages.yml` and push to the default branch.
#### ⭐️ Repository type - Project
@@ -96,20 +144,20 @@ jobs:
build-deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@master
- uses: actions/checkout@v1
# with:
# submodules: true
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2.2.0
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.58.3'
hugo-version: '0.59.1'
- name: Build
run: hugo --gc --minify --cleanDestinationDir
run: hugo --minify
- name: Deploy
uses: peaceiris/actions-gh-pages@v2.3.2
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
@@ -144,22 +192,29 @@ PUBLISH_BRANCH: master # deploying branch
[User and Organization Pages sites]: https://help.github.com/en/articles/user-organization-and-project-pages#user-and-organization-pages-sites
![Change default branch](./images/default-branch.jpg)
![Change default branch](./images/user_repo.jpg)
### Options
<div align="right">
<a href="#table-of-contents">Back to TOC ☝️</a>
</div>
#### ⭐️ Pull action image from Docker Hub
## Options
### ⭐️ Pull action image from Docker Hub
You can pull a public docker image from Docker Hub.
By pulling docker images, you can reduce the overall execution time of your workflow. In addition, `latest` tag is provided.
```diff
- uses: peaceiris/actions-gh-pages@v2.3.2
+ uses: docker://peaceiris/gh-pages:v2.3.2
- uses: peaceiris/actions-gh-pages@v2
+ uses: docker://peaceiris/gh-pages:v2
```
- [peaceiris/gh-pages - Docker Hub](https://hub.docker.com/r/peaceiris/gh-pages)
#### ⭐️ `PERSONAL_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`.
@@ -168,9 +223,9 @@ By pulling docker images, you can reduce the overall execution time of your work
+ PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
```
#### ⭐️ `GITHUB_TOKEN`
### ⭐️ `GITHUB_TOKEN`
> **NOTES**: Do not use `GITHUB_TOKEN`.
> ⚠️ **NOTES**: `GITHUB_TOKEN` works only on a **private** repository.
>
> This action supports `GITHUB_TOKEN` but it has some problems to deploy to GitHub Pages. GitHub team is investigating that. See [Issue #9]
@@ -181,7 +236,7 @@ By pulling docker images, you can reduce the overall execution time of your work
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
#### ⭐️ Suppressing empty commits
### ⭐️ Suppressing empty commits
By default, a commit will always be generated and pushed to the `PUBLISH_BRANCH`, even if nothing changed. If you want to suppress this behavior, set the optional parameter `emptyCommits` to `false`. cf. [Issue #21]
@@ -191,7 +246,7 @@ For example:
```yaml
- name: Deploy
uses: peaceiris/actions-gh-pages@v2.3.2
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
@@ -200,7 +255,7 @@ For example:
emptyCommits: false
```
#### ⭐️ Keeping existing files
### ⭐️ Keeping existing 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 `keepFiles` to `true`.
@@ -208,7 +263,7 @@ For example:
```yaml
- name: Deploy
uses: peaceiris/actions-gh-pages@v2.3.2
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
@@ -217,11 +272,81 @@ For example:
keepFiles: true
```
### ⭐️ Deploy to 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>`.
This option is available from `v2.5.0`.
For example:
```yaml
- name: Deploy
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
EXTERNAL_REPOSITORY: username/external-repository
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./public
```
You can use `ACTIONS_DEPLOY_KEY` or `PERSONAL_TOKEN`.
When you use `ACTIONS_DEPLOY_KEY`, set your private key to the repository which includes this action and set your public key to your external repository.
Be careful, `GITHUB_TOKEN` has no permission to access to external repositories.
### ⭐️ Force orphan
From `v2.6.0`, we can set the `forceOrphan: true` option.
This allows you to make your publish branch with only the latest commit.
```yaml
- name: Deploy
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./public
with:
forceOrphan: true
```
### ⭐️ Script mode
From `v2.5.0`, we can run this action as a shell script.
There is no Docker build or pull step, so it will start immediately.
- `ACTIONS_DEPLOY_KEY` requires `SCRIPT_MODE: true`
- `*_TOKEN` do not require `SCRIPT_MODE`
```yaml
- name: Deploy
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./public
SCRIPT_MODE: true
run: |
wget https://raw.githubusercontent.com/peaceiris/actions-gh-pages/v2/entrypoint.sh
bash ./entrypoint.sh
```
<div align="right">
<a href="#table-of-contents">Back to TOC ☝️</a>
</div>
## Tips and FAQ
### How to add `CNAME`
### ⭐️ Use the latest and specific release
We recommend you to use the latest and specific release of this action for stable CI/CD.
It is useful to watch this repository (release only) to check the [latest release] of this action.
[latest release]: https://github.com/peaceiris/actions-gh-pages/releases
### ⭐️ How to add `CNAME`
Most of the Static Site Generators support `CNAME` as a static file.
@@ -230,7 +355,18 @@ Most of the Static Site Generators support `CNAME` as a static file.
The same may be said of other files (`.nojekyll`, `BingSiteAuth.xml`, `robots.txt`, etc.). It is better to manage those files by Static Site Generators.
### Deployment completed but you cannot read
Does not your static site generator deal with the static files? No problem, you can add the file like the following.
```yaml
- name: Build
run: |
buildcommand
cp ./path/to/CNAME ./public/CNAME
- name: Deploy
```
### ⭐️ Deployment completed but you cannot read
Does your `PUBLISH_DIR` contain files or directories that name starts with an underscore? (`_modules`, `_sources` and `_next`, etc.)
GitHub Pages does not read those by default.
@@ -240,11 +376,26 @@ Please add `.nojekyll` file to `PUBLISH_DIR`.
> It is now possible to completely bypass Jekyll processing on GitHub Pages by creating a file named `.nojekyll` in the root of your pages repo and pushing it to GitHub. This should only be necessary if your site uses files or directories that start with underscores since Jekyll considers these to be special resources and does not copy them to the final site.
Does not your static site generator deal with the static files? No problem, you can add the file like the following.
```yaml
- name: Build
run: |
buildcommand
touch ./public/.nojekyll
- name: Deploy
```
<div align="right">
<a href="#table-of-contents">Back to TOC ☝️</a>
</div>
## Examples
### Static Site Generators with Node.js
### ⭐️ Static Site Generators with Node.js
[hexo], [gitbook], [vuepress], [react-static], [gridsome], etc.
@@ -270,25 +421,34 @@ jobs:
build-deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@master
- uses: actions/checkout@v1
- name: build
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: '10.16'
- run: |
npm install
npm run build
node-version: '10.x'
- name: deploy
uses: peaceiris/actions-gh-pages@v2.3.2
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- run: npm ci
- run: npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./public
```
### Gatsby
### ⭐️ Gatsby
An example for [Gatsby] (Gatsby.js) project with [gatsby-starter-blog]
@@ -309,34 +469,38 @@ jobs:
build-deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@master
- uses: actions/checkout@v1
- name: setup node
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: '10.16'
node-version: '10.x'
- name: install
run: npm install
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: format
run: npm run format
- run: npm ci
- name: test
run: npm run test
- run: npm run format
- name: build
run: npm run build
- run: npm run test
- name: deploy
uses: peaceiris/actions-gh-pages@v2.3.2
- run: npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./public
```
### React and Next
### ⭐️ React and Next
An example for [Next.js] (React.js) project with [create-next-app]
@@ -359,34 +523,42 @@ jobs:
build-deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@master
- uses: actions/checkout@v1
- name: setup node
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: '10.16'
node-version: '10.x'
- name: install
run: yarn install
- name: Get yarn cache
id: yarn-cache
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: build
run: yarn build
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ${{ steps.yarn-cache.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: export
run: yarn export
- run: yarn install
- name: add nojekyll
run: touch ./out/.nojekyll
- run: yarn build
- run: yarn export
- run: touch ./out/.nojekyll
- name: deploy
uses: peaceiris/actions-gh-pages@v2.3.2
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./out
```
### Vue and Nuxt
### ⭐️ Vue and Nuxt
An example for [Nuxt.js] (Vue.js) project with [create-nuxt-app]
@@ -409,31 +581,36 @@ jobs:
build-deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@master
- uses: actions/checkout@v1
- name: setup node
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: '10.16'
node-version: '10.x'
- name: install
run: npm install
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: test
run: npm test
- run: npm ci
- name: generate
run: npm run generate
- run: npm test
- run: npm run generate
- name: deploy
uses: peaceiris/actions-gh-pages@v2.3.2
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./dist
```
### Static Site Generators with Python
### ⭐️ Static Site Generators with Python
[pelican], [MkDocs], [sphinx], etc.
@@ -459,29 +636,119 @@ jobs:
steps:
- uses: actions/checkout@v1
- name: Set up Python
- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: '3.6'
architecture: 'x64'
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
pip install --upgrade pip
pip install -r ./requirements.txt
python3 -m pip install --upgrade pip
python3 -m pip install -r ./requirements.txt
- name: Build
run: mkdocs build
- run: mkdocs build
- name: Deploy
uses: peaceiris/actions-gh-pages@v2.3.2
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./site
```
### ⭐️ mdBook (Rust)
An example GitHub Actions workflow to deploy [rust-lang/mdBook] site to GitHub Pages.
[rust-lang/mdBook]: https://github.com/rust-lang/mdBook
- [peaceiris/actions-mdbook: GitHub Actions for mdBook (rust-lang/mdBook)](https://github.com/peaceiris/actions-mdbook)
```yaml
name: github pages
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Setup mdBook
uses: peaceiris/actions-mdbook@v1
with:
mdbook-version: '0.3.5'
# mdbook-version: 'latest'
- run: mdbook build
- name: Deploy
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./book
```
### ⭐️ Flutter Web
An exapmle workflow for [Flutter web project].
Setup [Flutter] with [subosito/flutter-action].
[Flutter]: https://github.com/flutter/flutter
[Flutter web project]: https://flutter.dev/docs/get-started/web
[subosito/flutter-action]: https://github.com/subosito/flutter-action
```yaml
name: github pages
on:
push:
branches:
- master
jobs:
build-deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: Setup Flutter
uses: subosito/flutter-action@v1
with:
channel: 'beta'
- name: Install
run: |
flutter config --enable-web
flutter pub get
- name: Build
run: flutter build web
- name: Deploy
uses: peaceiris/actions-gh-pages@v2
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./build/web
```
## License
@@ -494,3 +761,9 @@ jobs:
## About the author
- [peaceiris's homepage](https://peaceiris.com/)
<div align="right">
<a href="#table-of-contents">Back to TOC ☝️</a>
</div>

View File

@@ -1,5 +1,5 @@
name: 'Deploy action for GitHub Pages'
description: 'A GitHub Action to deploy your static site to GitHub Pages with Static Site Generator'
name: 'GitHub Pages action'
description: 'GitHub Actions for GitHub Pages 🚀 Deploy static files and publish your site easily. Static-Site-Generators-friendly.'
author: 'peaceiris'
runs:
using: 'docker'
@@ -15,4 +15,8 @@ inputs:
keepFiles:
description: 'If existing files in the publish branch should be not removed before deploying'
required: false
default: 'false'
default: 'false'
forceOrphan:
description: 'Keep only the latest commit on a GitHub Pages branch'
required: false
default: 'false'

View File

@@ -17,29 +17,47 @@ function skip() {
}
# check values
if [ -n "${EXTERNAL_REPOSITORY}" ]; then
PUBLISH_REPOSITORY=${EXTERNAL_REPOSITORY}
else
PUBLISH_REPOSITORY=${GITHUB_REPOSITORY}
fi
print_info "Deploy to ${PUBLISH_REPOSITORY}"
if [ -n "${ACTIONS_DEPLOY_KEY}" ]; then
print_info "setup with ACTIONS_DEPLOY_KEY"
mkdir /root/.ssh
ssh-keyscan -t rsa github.com > /root/.ssh/known_hosts
echo "${ACTIONS_DEPLOY_KEY}" > /root/.ssh/id_rsa
chmod 400 /root/.ssh/id_rsa
if [ -n "${SCRIPT_MODE}" ]; then
print_info "run as SCRIPT_MODE"
SSH_DIR="${HOME}/.ssh"
else
SSH_DIR="/root/.ssh"
fi
mkdir "${SSH_DIR}"
ssh-keyscan -t rsa github.com > "${SSH_DIR}/known_hosts"
echo "${ACTIONS_DEPLOY_KEY}" > "${SSH_DIR}/id_rsa"
chmod 400 "${SSH_DIR}/id_rsa"
remote_repo="git@github.com:${GITHUB_REPOSITORY}.git"
remote_repo="git@github.com:${PUBLISH_REPOSITORY}.git"
elif [ -n "${PERSONAL_TOKEN}" ]; then
print_info "setup with PERSONAL_TOKEN"
remote_repo="https://x-access-token:${PERSONAL_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
remote_repo="https://x-access-token:${PERSONAL_TOKEN}@github.com/${PUBLISH_REPOSITORY}.git"
elif [ -n "${GITHUB_TOKEN}" ]; then
print_info "setup with GITHUB_TOKEN"
print_error "Do not use GITHUB_TOKEN, See #9"
print_error "GITHUB_TOKEN works only private repo, See #9"
remote_repo="https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
if [ -n "${EXTERNAL_REPOSITORY}" ]; then
print_error "can not use GITHUB_TOKEN to deploy to a external repository"
exit 1
fi
remote_repo="https://x-access-token:${GITHUB_TOKEN}@github.com/${PUBLISH_REPOSITORY}.git"
else
print_error "not found ACTIONS_DEPLOY_KEY, PERSONAL_TOKEN, or GITHUB_TOKEN"
@@ -58,8 +76,14 @@ fi
remote_branch="${PUBLISH_BRANCH}"
local_dir="${HOME}/$(tr -cd 'a-f0-9' < /dev/urandom | head -c 32)"
if git clone --depth=1 --single-branch --branch "${remote_branch}" "${remote_repo}" "${local_dir}"; then
local_dir="${HOME}/ghpages_${RANDOM}"
if [[ "${INPUT_FORCEORPHAN}" == "true" ]]; then
print_info "force ophan: ${INPUT_FORCEORPHAN}"
cd "${PUBLISH_DIR}"
git init
git checkout --orphan "${remote_branch}"
elif git clone --depth=1 --single-branch --branch "${remote_branch}" "${remote_repo}" "${local_dir}"; then
cd "${local_dir}"
if [[ ${INPUT_KEEPFILES} == "true" ]]; then
@@ -68,7 +92,7 @@ if git clone --depth=1 --single-branch --branch "${remote_branch}" "${remote_rep
git rm -r --ignore-unmatch '*'
fi
find "${GITHUB_WORKSPACE}/${PUBLISH_DIR}" -maxdepth 1 | \
find "${GITHUB_WORKSPACE}/${PUBLISH_DIR}" -maxdepth 1 -not -name ".git" -not -name ".github" | \
tail -n +2 | \
xargs -I % cp -rf % "${local_dir}/"
else
@@ -92,5 +116,10 @@ else
git commit --allow-empty -m "${COMMIT_MESSAGE}"
fi
git push origin "${remote_branch}"
if [[ ${INPUT_FORCEORPHAN} == "true" ]]; then
git push origin --force "${remote_branch}"
else
git push origin "${remote_branch}"
fi
print_info "${GITHUB_SHA} was successfully deployed"

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

BIN
images/user_repo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB