Compare commits
50 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
47a6d63ea8 | ||
|
|
201f9af234 | ||
|
|
d3bd43b617 | ||
|
|
241ef9fea0 | ||
|
|
dea149a296 | ||
|
|
6f22f8bab3 | ||
|
|
b6f9d57b6e | ||
|
|
926fd81d28 | ||
|
|
c2b05426eb | ||
|
|
a938c00ed3 | ||
|
|
6025194d82 | ||
|
|
6bbc45593f | ||
|
|
423f0009fd | ||
|
|
142a3920a3 | ||
|
|
8cc357e55e | ||
|
|
7115ce79d6 | ||
|
|
00ca533aaa | ||
|
|
1846d9c611 | ||
|
|
5ef51a859a | ||
|
|
27f7912ac1 | ||
|
|
acef980b83 | ||
|
|
e3cf4a5678 | ||
|
|
844594e15d | ||
|
|
568c603f29 | ||
|
|
b263205b1b | ||
|
|
8fd3a55a6f | ||
|
|
61579670d5 | ||
|
|
809601eb1f | ||
|
|
45f5817ce0 | ||
|
|
713b37219b | ||
|
|
7e5e720d90 | ||
|
|
9dbd791001 | ||
|
|
500440b181 | ||
|
|
0e24c54186 | ||
|
|
3a8415028f | ||
|
|
e43f914d03 | ||
|
|
77991bbc93 | ||
|
|
76d9ea1451 | ||
|
|
bb5d194848 | ||
|
|
82f293b20d | ||
|
|
da8d0ec496 | ||
|
|
141841e4cd | ||
|
|
d357978789 | ||
|
|
6492b522ce | ||
|
|
5b4ace2ae6 | ||
|
|
5af287f677 | ||
|
|
1f78e2b780 | ||
|
|
a18ce52dfa | ||
|
|
5ff5415c45 | ||
|
|
4ceb783693 |
@@ -1,5 +1,7 @@
|
|||||||
.git
|
.git
|
||||||
.github
|
.github
|
||||||
|
.hadolint.yaml
|
||||||
LICENSE
|
LICENSE
|
||||||
README.md
|
README.md
|
||||||
|
action.yml
|
||||||
images
|
images
|
||||||
|
|||||||
3
.github/FUNDING.yml
vendored
3
.github/FUNDING.yml
vendored
@@ -1,7 +1,8 @@
|
|||||||
# These are supported funding model platforms
|
# These are supported funding model platforms
|
||||||
|
|
||||||
github: peaceiris
|
# github: peaceiris
|
||||||
patreon: peaceiris
|
patreon: peaceiris
|
||||||
|
issuehunt: peaceiris
|
||||||
open_collective: # Replace with a single Open Collective username
|
open_collective: # Replace with a single Open Collective username
|
||||||
ko_fi: # Replace with a single Ko-fi username
|
ko_fi: # Replace with a single Ko-fi username
|
||||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||||
|
|||||||
9
.github/main.workflow
vendored
9
.github/main.workflow
vendored
@@ -1,9 +0,0 @@
|
|||||||
workflow "Main workflow" {
|
|
||||||
on = "push"
|
|
||||||
resolves = ["docker-build"]
|
|
||||||
}
|
|
||||||
|
|
||||||
action "docker-build" {
|
|
||||||
uses = "actions/docker/cli@master"
|
|
||||||
args = "build -t peaceiris/actions-gh-deploy ."
|
|
||||||
}
|
|
||||||
33
.github/workflows/docker-image-ci.yml
vendored
Normal file
33
.github/workflows/docker-image-ci.yml
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
name: docker image ci
|
||||||
|
|
||||||
|
on: push
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
|
||||||
|
- 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)
|
||||||
|
|
||||||
|
shellcheck:
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
- name: shellcheck
|
||||||
|
run: shellcheck ./entrypoint.sh
|
||||||
|
|
||||||
|
hadolint:
|
||||||
|
runs-on: macOS-10.14
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
- name: hadolint
|
||||||
|
run: |
|
||||||
|
brew install hadolint
|
||||||
|
hadolint ./Dockerfile
|
||||||
2
.hadolint.yaml
Normal file
2
.hadolint.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
ignored:
|
||||||
|
- DL3018
|
||||||
17
Dockerfile
17
Dockerfile
@@ -1,17 +1,10 @@
|
|||||||
FROM alpine:3.9
|
FROM alpine:3.10.2
|
||||||
|
|
||||||
LABEL "com.github.actions.name"="Deploy to GitHub Pages for Static Site Generator"
|
|
||||||
LABEL "com.github.actions.description"="A GitHub Action to deploy your static site to GitHub Pages with Static Site Generator"
|
|
||||||
LABEL "com.github.actions.icon"="upload-cloud"
|
|
||||||
LABEL "com.github.actions.color"="blue"
|
|
||||||
|
|
||||||
LABEL "repository"="https://github.com/peaceiris/actions-gh-pages"
|
|
||||||
LABEL "homepage"="https://github.com/peaceiris/actions-gh-pages"
|
|
||||||
LABEL "maintainer"="peaceiris"
|
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
|
bash \
|
||||||
git \
|
git \
|
||||||
openssh-client
|
openssh-client \
|
||||||
|
ca-certificates
|
||||||
|
|
||||||
ADD entrypoint.sh /entrypoint.sh
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
ENTRYPOINT [ "/entrypoint.sh" ]
|
ENTRYPOINT [ "/entrypoint.sh" ]
|
||||||
|
|||||||
430
README.md
430
README.md
@@ -1,6 +1,8 @@
|
|||||||
[](https://github.com/peaceiris/actions-gh-pages/blob/master/LICENSE)
|
[](https://github.com/peaceiris/actions-gh-pages/blob/master/LICENSE)
|
||||||
[](https://github.com/peaceiris/actions-gh-pages/releases/latest)
|
[](https://github.com/peaceiris/actions-gh-pages/releases/latest)
|
||||||
[](https://github.com/peaceiris/actions-gh-pages/releases)
|
[](https://github.com/peaceiris/actions-gh-pages/releases)
|
||||||
|
[](https://github.com/peaceiris/actions-gh-pages/actions)
|
||||||
|
[](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">
|
<img width="400" alt="GitHub Actions for deploying to GitHub Pages with Static Site Generators" src="./images/ogp.svg">
|
||||||
|
|
||||||
@@ -12,17 +14,41 @@ A GitHub Action to deploy your static site to GitHub Pages with [Static Site Gen
|
|||||||
|
|
||||||
[Static Site Generators]: https://www.staticgen.com/
|
[Static Site Generators]: https://www.staticgen.com/
|
||||||
|
|
||||||
|
<!-- 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)
|
||||||
|
- [:star: Repository type - Project](#star-repository-type---project)
|
||||||
|
- [:star: Repository type - User and Organization](#star-repository-type---user-and-organization)
|
||||||
|
- [Options](#options)
|
||||||
|
- [:star: Pull action image from Docker Hub](#star-pull-action-image-from-docker-hub)
|
||||||
|
- [:star: `PERSONAL_TOKEN`](#star-personal_token)
|
||||||
|
- [:star: `GITHUB_TOKEN`](#star-github_token)
|
||||||
|
- [:star: Suppressing empty commits](#star-suppressing-empty-commits)
|
||||||
|
- [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)
|
||||||
|
- [License](#license)
|
||||||
|
- [About the author](#about-the-author)
|
||||||
|
|
||||||
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
|
|
||||||
### (1) Add deploy Key
|
### (1) Add ssh deploy key
|
||||||
|
|
||||||
Generate deploy key with the following command.
|
Generate your deploy key with the following command.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
ssh-keygen -t rsa -b 4096 -C "your@email.com" -f gh-pages -N ""
|
ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""
|
||||||
|
|
||||||
# You will get 2 files:
|
# You will get 2 files:
|
||||||
# gh-pages.pub (public key)
|
# gh-pages.pub (public key)
|
||||||
# gh-pages (private key)
|
# gh-pages (private key)
|
||||||
@@ -30,91 +56,367 @@ ssh-keygen -t rsa -b 4096 -C "your@email.com" -f gh-pages -N ""
|
|||||||
|
|
||||||
Next, Go to **Repository Settings**
|
Next, Go to **Repository Settings**
|
||||||
|
|
||||||
- Go to **Deploy Keys** and add your public key with the "Allow write access"
|
- Go to **Deploy Keys** and add your public key with the **Allow write access**
|
||||||
- Go to **Secrets** and add your private key as `ACTIONS_DEPLOY_KEY`
|
- Go to **Secrets** and add your private key as `ACTIONS_DEPLOY_KEY`
|
||||||
|
|
||||||
### (2) Create `main.workflow`
|
### (2) Create `.github/workflows/gh-pages.yml`
|
||||||
|
|
||||||
An example with Hugo action.
|
#### :star: Repository type - Project
|
||||||
|
|
||||||
- [peaceiris/actions-hugo: GitHub Actions for Hugo extended](https://github.com/peaceiris/actions-hugo)
|
An example workflow for Hugo.
|
||||||
|
|
||||||
```hcl
|

|
||||||
workflow "GitHub Pages" {
|
|
||||||
on = "push"
|
|
||||||
resolves = ["deploy"]
|
|
||||||
}
|
|
||||||
|
|
||||||
action "is-branch-master" {
|
```yaml
|
||||||
uses = "actions/bin/filter@master"
|
name: github pages
|
||||||
args = "branch master"
|
|
||||||
}
|
|
||||||
|
|
||||||
action "build" {
|
on:
|
||||||
needs = "is-branch-master"
|
push:
|
||||||
uses = "peaceiris/actions-hugo@v0.55.6"
|
branches:
|
||||||
args = ["--gc", "--minify", "--cleanDestinationDir"]
|
- master
|
||||||
}
|
|
||||||
|
|
||||||
action "deploy" {
|
jobs:
|
||||||
needs = "build"
|
build-deploy:
|
||||||
uses = "peaceiris/actions-gh-pages@v1.0.0"
|
runs-on: ubuntu-18.04
|
||||||
env = {
|
steps:
|
||||||
PUBLISH_DIR = "./public"
|
- uses: actions/checkout@master
|
||||||
PUBLISH_BRANCH = "gh-pages"
|
|
||||||
}
|
- name: Install Hugo
|
||||||
secrets = ["ACTIONS_DEPLOY_KEY"]
|
env:
|
||||||
}
|
HUGO_VERSION: '0.58.2'
|
||||||
|
run: |
|
||||||
|
mkdir /tmp/hugo && cd /tmp/hugo
|
||||||
|
curl -L https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-64bit.tar.gz | \
|
||||||
|
tar -xz && \
|
||||||
|
sudo mv ./hugo /usr/local/bin/
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: hugo --gc --minify --cleanDestinationDir
|
||||||
|
|
||||||
|
- name: Deploy
|
||||||
|
uses: peaceiris/actions-gh-pages@v2.3.0
|
||||||
|
env:
|
||||||
|
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||||
|
PUBLISH_BRANCH: gh-pages
|
||||||
|
PUBLISH_DIR: ./public
|
||||||
|
```
|
||||||
|
|
||||||
|
The above example is for [Project Pages sites]. (`<username>/<project_name>` repository)
|
||||||
|
|
||||||
|
#### :star: Repository type - User and Organization
|
||||||
|
|
||||||
|
For [User and Organization Pages sites] (`<username>/<username>.github.io` repository),
|
||||||
|
we have to set `master` branch to `PUBLISH_BRANCH`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- source # default branch
|
||||||
|
|
||||||
|
PUBLISH_BRANCH: master # deploying branch
|
||||||
|
```
|
||||||
|
|
||||||
|
[Project Pages sites]: https://help.github.com/en/articles/user-organization-and-project-pages#project-pages-sites
|
||||||
|
[User and Organization Pages sites]: https://help.github.com/en/articles/user-organization-and-project-pages#user-and-organization-pages-sites
|
||||||
|
|
||||||
|
### Options
|
||||||
|
|
||||||
|
#### :star: 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.0
|
||||||
|
+ uses: docker://peaceiris/gh-pages:v2.3.0
|
||||||
|
```
|
||||||
|
|
||||||
|
- [peaceiris/gh-pages - Docker Hub](https://hub.docker.com/r/peaceiris/gh-pages)
|
||||||
|
|
||||||
|
#### :star: `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`.
|
||||||
|
|
||||||
|
```diff
|
||||||
|
- ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||||
|
+ PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### :star: `GITHUB_TOKEN`
|
||||||
|
|
||||||
|
> **NOTES**: This action supports `GITHUB_TOKEN` but it has some problems to deploy to GitHub Pages. See #9
|
||||||
|
|
||||||
|
```diff
|
||||||
|
- ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||||
|
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### :star: 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]
|
||||||
|
|
||||||
|
[Issue #21]: https://github.com/peaceiris/actions-gh-pages/issues/21
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: deploy
|
||||||
|
uses: peaceiris/actions-gh-pages@v2.3.0
|
||||||
|
env:
|
||||||
|
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||||
|
PUBLISH_BRANCH: gh-pages
|
||||||
|
PUBLISH_DIR: ./public
|
||||||
|
with:
|
||||||
|
emptyCommits: false
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
### MkDocs
|
### Static Site Generators with Node.js
|
||||||
|
|
||||||
- [peaceiris/actions-pipenv: GitHub Actions for pipenv](https://github.com/peaceiris/actions-pipenv)
|
[hexo], [gitbook], [vuepress], [react-static], [gridsome], etc.
|
||||||
- [main.workflow - peaceiris/mkdocs-material-boilerplate](https://github.com/peaceiris/mkdocs-material-boilerplate/blob/master/.github/main.workflow)
|
|
||||||
|
|
||||||
```hcl
|
[hexo]: https://github.com/hexojs/hexo
|
||||||
workflow "MkDocs workflow" {
|
[gitbook]: https://github.com/GitbookIO/gitbook
|
||||||
on = "push"
|
[vuepress]: https://github.com/vuejs/vuepress
|
||||||
resolves = ["deploy"]
|
[react-static]: https://github.com/react-static/react-static
|
||||||
}
|
[gridsome]: https://github.com/gridsome/gridsome
|
||||||
|
|
||||||
action "branch-filter" {
|
Premise: Dependencies are managed by `package.json` and `package-lock.json`
|
||||||
uses = "actions/bin/filter@master"
|
|
||||||
args = "branch master"
|
|
||||||
}
|
|
||||||
|
|
||||||
action "pipenv-sync" {
|

|
||||||
needs = ["branch-filter"]
|
|
||||||
uses = "peaceiris/actions-pipenv@3.6"
|
|
||||||
args = "sync"
|
|
||||||
}
|
|
||||||
|
|
||||||
action "mkdocs-build" {
|
```yaml
|
||||||
needs = ["pipenv-sync"]
|
name: github pages
|
||||||
uses = "peaceiris/actions-pipenv@3.6"
|
|
||||||
args = ["run", "mkdocs", "build", "--config-file", "./mkdocs-sample.yml"]
|
|
||||||
}
|
|
||||||
|
|
||||||
action "deploy" {
|
on:
|
||||||
needs = ["mkdocs-build"]
|
push:
|
||||||
uses = "peaceiris/actions-gh-pages@v1.0.0"
|
branches:
|
||||||
env = {
|
- master
|
||||||
PUBLISH_DIR = "./site"
|
|
||||||
PUBLISH_BRANCH = "gh-pages"
|
jobs:
|
||||||
}
|
build-deploy:
|
||||||
secrets = ["ACTIONS_DEPLOY_KEY"]
|
runs-on: ubuntu-18.04
|
||||||
}
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
|
||||||
|
- name: build
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: '10.16'
|
||||||
|
- run: |
|
||||||
|
npm install
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
- name: deploy
|
||||||
|
uses: peaceiris/actions-gh-pages@v2.3.0
|
||||||
|
env:
|
||||||
|
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||||
|
PUBLISH_BRANCH: gh-pages
|
||||||
|
PUBLISH_DIR: ./public
|
||||||
|
```
|
||||||
|
|
||||||
|
### Gatsby
|
||||||
|
|
||||||
|
An example for [Gatsby] (Gatsby.js) project with [gatsby-starter-blog]
|
||||||
|
|
||||||
|
[Gatsby]: https://github.com/gatsbyjs/gatsby
|
||||||
|
[gatsby-starter-blog]: https://github.com/gatsbyjs/gatsby-starter-blog
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: github pages
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-deploy:
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
|
||||||
|
- name: setup node
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: '10.16'
|
||||||
|
|
||||||
|
- name: install
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: format
|
||||||
|
run: npm run format
|
||||||
|
|
||||||
|
- name: test
|
||||||
|
run: npm run test
|
||||||
|
|
||||||
|
- name: build
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: deploy
|
||||||
|
uses: peaceiris/actions-gh-pages@v2.3.0
|
||||||
|
env:
|
||||||
|
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||||
|
PUBLISH_BRANCH: gh-pages
|
||||||
|
PUBLISH_DIR: ./public
|
||||||
|
```
|
||||||
|
|
||||||
|
### React and Next
|
||||||
|
|
||||||
|
An example for [Next.js] (React.js) project with [create-next-app]
|
||||||
|
|
||||||
|
- cf. [Deploying a Next.js app into GitHub Pages · zeit/next.js Wiki](https://github.com/zeit/next.js/wiki/Deploying-a-Next.js-app-into-GitHub-Pages)
|
||||||
|
|
||||||
|
[Next.js]: https://github.com/zeit/next.js
|
||||||
|
[create-next-app]: https://nextjs.org/docs
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: github pages
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-deploy:
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
|
||||||
|
- name: setup node
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: '10.16'
|
||||||
|
|
||||||
|
- name: install
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: build
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: export
|
||||||
|
run: yarn export
|
||||||
|
|
||||||
|
- name: add nojekyll
|
||||||
|
run: touch ./out/.nojekyll
|
||||||
|
|
||||||
|
- name: deploy
|
||||||
|
uses: peaceiris/actions-gh-pages@v2.3.0
|
||||||
|
env:
|
||||||
|
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||||
|
PUBLISH_BRANCH: gh-pages
|
||||||
|
PUBLISH_DIR: ./out
|
||||||
|
```
|
||||||
|
|
||||||
|
### Vue and Nuxt
|
||||||
|
|
||||||
|
An example for [Nuxt.js] (Vue.js) project with [create-nuxt-app]
|
||||||
|
|
||||||
|
- cf. [GitHub Pages Deployment - Nuxt.js](https://nuxtjs.org/faq/github-pages)
|
||||||
|
|
||||||
|
[Nuxt.js]: https://github.com/nuxt/nuxt.js
|
||||||
|
[create-nuxt-app]: https://github.com/nuxt/create-nuxt-app
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: github pages
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-deploy:
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
|
||||||
|
- name: setup node
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: '10.16'
|
||||||
|
|
||||||
|
- name: install
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: test
|
||||||
|
run: npm test
|
||||||
|
|
||||||
|
- name: generate
|
||||||
|
run: npm run generate
|
||||||
|
|
||||||
|
- name: deploy
|
||||||
|
uses: peaceiris/actions-gh-pages@v2.3.0
|
||||||
|
env:
|
||||||
|
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||||
|
PUBLISH_BRANCH: gh-pages
|
||||||
|
PUBLISH_DIR: ./dist
|
||||||
|
```
|
||||||
|
|
||||||
|
### Static Site Generators with Python
|
||||||
|
|
||||||
|
[pelican], [MkDocs], [sphinx], etc.
|
||||||
|
|
||||||
|
[pelican]: https://github.com/getpelican/pelican
|
||||||
|
[MkDocs]: https://github.com/mkdocs/mkdocs
|
||||||
|
[sphinx]: https://github.com/sphinx-doc/sphinx
|
||||||
|
|
||||||
|
Premise: Dependencies are managed by `requirements.txt`
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: github pages
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-deploy:
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v1
|
||||||
|
with:
|
||||||
|
python-version: '3.6'
|
||||||
|
architecture: 'x64'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
pip install --upgrade pip
|
||||||
|
pip install -r ./requirements.txt
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: mkdocs build
|
||||||
|
|
||||||
|
- name: Deploy
|
||||||
|
uses: peaceiris/actions-gh-pages@v2.3.0
|
||||||
|
env:
|
||||||
|
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||||
|
PUBLISH_BRANCH: gh-pages
|
||||||
|
PUBLISH_DIR: ./site
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
[MIT License - peaceiris/actions-gh-pages]
|
- [MIT License - peaceiris/actions-gh-pages]
|
||||||
|
|
||||||
[MIT License - peaceiris/actions-gh-pages]: https://github.com/peaceiris/actions-gh-pages/blob/master/LICENSE
|
[MIT License - peaceiris/actions-gh-pages]: https://github.com/peaceiris/actions-gh-pages/blob/master/LICENSE
|
||||||
|
|
||||||
@@ -123,5 +425,3 @@ action "deploy" {
|
|||||||
## About the author
|
## About the author
|
||||||
|
|
||||||
- [peaceiris's homepage](https://peaceiris.com/)
|
- [peaceiris's homepage](https://peaceiris.com/)
|
||||||
|
|
||||||
<a href="https://www.patreon.com/peaceiris"><img src="./images/patreon.jpg" alt="peaceiris - Patreon" width="150px"></a>
|
|
||||||
|
|||||||
14
action.yml
Normal file
14
action.yml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
name: 'Deploy action for GitHub Pages'
|
||||||
|
description: 'A GitHub Action to deploy your static site to GitHub Pages with Static Site Generator'
|
||||||
|
author: 'peaceiris'
|
||||||
|
runs:
|
||||||
|
using: 'docker'
|
||||||
|
image: 'Dockerfile'
|
||||||
|
branding:
|
||||||
|
icon: 'upload-cloud'
|
||||||
|
color: 'blue'
|
||||||
|
inputs:
|
||||||
|
emptyCommits:
|
||||||
|
description: 'If empty commits should be made to the publication branch'
|
||||||
|
required: false
|
||||||
|
default: 'true'
|
||||||
@@ -1,33 +1,86 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
# setup ssh
|
set -e
|
||||||
if [ -z "${ACTIONS_DEPLOY_KEY}" ]; then
|
# set -ex
|
||||||
echo "error: not found ACTIONS_DEPLOY_KEY"
|
|
||||||
|
function print_error() {
|
||||||
|
echo -e "\e[31mERROR: ${1}\e[m"
|
||||||
|
}
|
||||||
|
|
||||||
|
function print_info() {
|
||||||
|
echo -e "\e[36mINFO: ${1}\e[m"
|
||||||
|
}
|
||||||
|
|
||||||
|
# check values
|
||||||
|
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
|
||||||
|
|
||||||
|
remote_repo="git@github.com:${GITHUB_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"
|
||||||
|
|
||||||
|
elif [ -n "${GITHUB_TOKEN}" ]; then
|
||||||
|
|
||||||
|
print_info "setup with GITHUB_TOKEN"
|
||||||
|
|
||||||
|
remote_repo="https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
|
||||||
|
|
||||||
|
else
|
||||||
|
print_error "not found ACTIONS_DEPLOY_KEY, PERSONAL_TOKEN, or GITHUB_TOKEN"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
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
|
|
||||||
|
|
||||||
# push to gh-pages branch
|
|
||||||
if [ -z "${PUBLISH_DIR}" ]; then
|
|
||||||
echo "error: not found PUBLISH_DIR"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
cd "${PUBLISH_DIR}" || exit 1
|
|
||||||
if [ -z "${PUBLISH_BRANCH}" ]; then
|
if [ -z "${PUBLISH_BRANCH}" ]; then
|
||||||
echo "error: not found PUBLISH_BRANCH"
|
print_error "not found PUBLISH_BRANCH"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
remote_repo="git@github.com:${GITHUB_REPOSITORY}.git"
|
|
||||||
|
if [ -z "${PUBLISH_DIR}" ]; then
|
||||||
|
print_error "not found PUBLISH_DIR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
remote_branch="${PUBLISH_BRANCH}"
|
remote_branch="${PUBLISH_BRANCH}"
|
||||||
git init
|
|
||||||
|
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
|
||||||
|
cd "${local_dir}"
|
||||||
|
git rm -r --ignore-unmatch '*'
|
||||||
|
find "${GITHUB_WORKSPACE}/${PUBLISH_DIR}" -maxdepth 1 | \
|
||||||
|
tail -n +2 | \
|
||||||
|
xargs -I % cp -rf % "${local_dir}/"
|
||||||
|
else
|
||||||
|
cd "${PUBLISH_DIR}"
|
||||||
|
git init
|
||||||
|
git checkout --orphan "${remote_branch}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# push to publishing branch
|
||||||
git config user.name "${GITHUB_ACTOR}"
|
git config user.name "${GITHUB_ACTOR}"
|
||||||
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
|
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
|
||||||
|
git remote rm origin || true
|
||||||
git remote add origin "${remote_repo}"
|
git remote add origin "${remote_repo}"
|
||||||
git checkout "${remote_branch}" || git checkout --orphan "${remote_branch}"
|
|
||||||
git add --all
|
git add --all
|
||||||
timestamp=$(date -u)
|
|
||||||
git commit -m "Automated deployment: ${timestamp} ${GITHUB_SHA}"
|
print_info "Allowing empty commits: ${INPUT_EMPTYCOMMITS}"
|
||||||
git push origin "${remote_branch}" --force
|
COMMIT_MESSAGE="Automated deployment: $(date -u) ${GITHUB_SHA}"
|
||||||
|
if [[ ${INPUT_EMPTYCOMMITS} == "true" ]]; then
|
||||||
|
git commit --allow-empty -m "${COMMIT_MESSAGE}"
|
||||||
|
else
|
||||||
|
git commit -m "${COMMIT_MESSAGE}" || \
|
||||||
|
print_info "No changes detected, skipping deployment" && \
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
git push origin "${remote_branch}"
|
||||||
|
print_info "${GITHUB_SHA} was successfully deployed"
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.4 KiB |
Reference in New Issue
Block a user