Compare commits
118 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b8c0499d1e | ||
|
|
1e0de0fccd | ||
|
|
e376bcf7c0 | ||
|
|
2437fbe949 | ||
|
|
1bf8e45e86 | ||
|
|
26c5cb82dd | ||
|
|
fb16fe135c | ||
|
|
e13d24c2ac | ||
|
|
830cc44454 | ||
|
|
cf4667b165 | ||
|
|
299744c4cc | ||
|
|
817fe3379a | ||
|
|
dbec91074d | ||
|
|
3514e583e0 | ||
|
|
6da534f570 | ||
|
|
0803e7e969 | ||
|
|
14ef8241ef | ||
|
|
7194caacc4 | ||
|
|
93de081763 | ||
|
|
f035f9f5e7 | ||
|
|
9d15cc0dbc | ||
|
|
626ca71936 | ||
|
|
e4b680c116 | ||
|
|
8563c806e5 | ||
|
|
0ce7e18faa | ||
|
|
46649571f8 | ||
|
|
83eaab4031 | ||
|
|
81110be679 | ||
|
|
455788d397 | ||
|
|
8aea3055ca | ||
|
|
1f2f7ef05e | ||
|
|
141d3dbf3a | ||
|
|
c656aacd4e | ||
|
|
34c4d59419 | ||
|
|
db893610ff | ||
|
|
8daaa39070 | ||
|
|
8dc241e75a | ||
|
|
20ef467283 | ||
|
|
49a4a6dfc2 | ||
|
|
74185ffe80 | ||
|
|
097933f4ab | ||
|
|
8972cc626f | ||
|
|
1468ca9775 | ||
|
|
b172208a72 | ||
|
|
645870064d | ||
|
|
8981758aad | ||
|
|
f3c1954c3b | ||
|
|
f47e77b3ef | ||
|
|
0e1d168f48 | ||
|
|
e4df4b2d92 | ||
|
|
d6d7a5601d | ||
|
|
cd78101d9c | ||
|
|
8076e77c01 | ||
|
|
5e8a6ff9d9 | ||
|
|
78a8692f54 | ||
|
|
69067de181 | ||
|
|
7f7794a793 | ||
|
|
e60d374041 | ||
|
|
8191f265b1 | ||
|
|
4eb9565412 | ||
|
|
e5910bfc4f | ||
|
|
09158e35aa | ||
|
|
26405de510 | ||
|
|
855ba06744 | ||
|
|
159b07d518 | ||
|
|
37e4747275 | ||
|
|
ea833f5400 | ||
|
|
3ceceb921f | ||
|
|
9e74ae3f23 | ||
|
|
76490a48db | ||
|
|
c138367a6e | ||
|
|
3e2f32bb1e | ||
|
|
f54520fcda | ||
|
|
83bc08b934 | ||
|
|
380b190669 | ||
|
|
8eedda6921 | ||
|
|
13d694636e | ||
|
|
551961e807 | ||
|
|
3e09c28a79 | ||
|
|
8f168fea5a | ||
|
|
5a72c9206d | ||
|
|
b8dd2848eb | ||
|
|
4530dcd167 | ||
|
|
74f032c7e9 | ||
|
|
0713c6cb9c | ||
|
|
c647ffeac6 | ||
|
|
b16172a44d | ||
|
|
4f0ad674b7 | ||
|
|
16fae5a6db | ||
|
|
e46ccd0122 | ||
|
|
087a904156 | ||
|
|
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 |
10
.dependabot/config.yml
Normal 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
@@ -0,0 +1,3 @@
|
||||
# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
|
||||
|
||||
* @peaceiris
|
||||
9
.github/FUNDING.yml
vendored
@@ -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
@@ -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
@@ -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
@@ -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.
|
||||
35
.github/workflows/docker-image-ci.yml
vendored
@@ -1,47 +1,40 @@
|
||||
name: docker image ci
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize]
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
branches:
|
||||
- master
|
||||
- 'release-v*'
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-18.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- 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)
|
||||
|
||||
# - name: push latest image
|
||||
# if: endsWith(github.ref, 'master')
|
||||
# env:
|
||||
# DOCKER_IMAGE: docker.pkg.github.com/${{ github.repository }}/action:latest
|
||||
# PKG_GITHUB_TOKEN: ${{ secrets.PKG_GITHUB_TOKEN }}
|
||||
# run: |
|
||||
# echo ${PKG_GITHUB_TOKEN} | docker login docker.pkg.github.com -u ${GITHUB_ACTOR} --password-stdin &&
|
||||
# docker push ${DOCKER_IMAGE} &&
|
||||
# docker logout
|
||||
docker build . --file Dockerfile --tag ${DOCKER_IMAGE}
|
||||
|
||||
shellcheck:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- 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
|
||||
- name: hadolint
|
||||
run: |
|
||||
brew install hadolint
|
||||
hadolint ./Dockerfile
|
||||
- uses: actions/checkout@v2
|
||||
- run: brew install hadolint
|
||||
- run: hadolint ./Dockerfile
|
||||
|
||||
16
.github/workflows/purge-readme-image-cache.yml
vendored
Normal 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
@@ -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
@@ -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}"
|
||||
@@ -1,11 +1,10 @@
|
||||
FROM alpine:3.10.2
|
||||
FROM alpine:3.10.3
|
||||
|
||||
RUN apk add --no-cache \
|
||||
bash \
|
||||
git \
|
||||
openssh-client \
|
||||
ca-certificates && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
ca-certificates
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
ENTRYPOINT [ "/entrypoint.sh" ]
|
||||
|
||||
671
README.md
@@ -1,29 +1,103 @@
|
||||
[](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)
|
||||
[](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">
|
||||
|
||||
|
||||
|
||||
## 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 -->
|
||||
|
||||
|
||||
- [Getting started](#getting-started)
|
||||
- [(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)
|
||||
- [⭐️ Deploy to external repository](#%EF%B8%8F-deploy-to-external-repository)
|
||||
- [⭐️ Script mode](#%EF%B8%8F-script-mode)
|
||||
- [Tips and FAQ](#tips-and-faq)
|
||||
- [⭐️ 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](#%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)
|
||||
|
||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||
|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
### (1) Add ssh deploy key
|
||||
### (1) Add SSH deploy key
|
||||
|
||||
Generate your deploy key with the following command.
|
||||
|
||||
```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:
|
||||
# gh-pages.pub (public key)
|
||||
# gh-pages (private key)
|
||||
@@ -34,11 +108,25 @@ Next, Go to **Repository Settings**
|
||||
- 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`
|
||||
|
||||
### (2) Create `.github/workflows/gh-pages.yml`
|
||||
| Add your public key | Success |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
An example yaml file with Hugo action.
|
||||
| Add your private key | Success |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
- [peaceiris/actions-hugo: GitHub Actions for Hugo extended](https://github.com/peaceiris/actions-hugo)
|
||||
### (2) Create your workflow
|
||||
|
||||
Add your workflow setting YAML file `.github/workflows/gh-pages.yml` and push to the default branch.
|
||||
|
||||
#### ⭐️ Repository type - Project
|
||||
|
||||
An example workflow for Hugo.
|
||||
|
||||
- [peaceiris/actions-hugo: GitHub Actions for Hugo](https://github.com/peaceiris/actions-hugo)
|
||||
|
||||
[](https://github.com/peaceiris/actions-hugo)
|
||||
|
||||

|
||||

|
||||
@@ -55,56 +143,268 @@ jobs:
|
||||
build-deploy:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/checkout@v1
|
||||
# with:
|
||||
# submodules: true
|
||||
|
||||
- name: build
|
||||
uses: peaceiris/actions-hugo@v0.58.0
|
||||
- name: Setup Hugo
|
||||
uses: peaceiris/actions-hugo@v2
|
||||
with:
|
||||
args: --gc --minify --cleanDestinationDir
|
||||
hugo-version: '0.59.1'
|
||||
|
||||
- name: deploy
|
||||
uses: peaceiris/actions-gh-pages@v2.1.0
|
||||
- name: Build
|
||||
run: hugo --minify
|
||||
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v2
|
||||
env:
|
||||
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||
PUBLISH_BRANCH: gh-pages
|
||||
PUBLISH_DIR: ./public
|
||||
```
|
||||
|
||||
### Options
|
||||
The above example is for [Project Pages sites]. (`<username>/<project_name>` repository)
|
||||
|
||||
#### Pull action image from Docker Hub
|
||||
| Actions log overview | Build step log |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
| Deploy step log | GitHub Pages log |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
#### ⭐️ 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
|
||||
|
||||

|
||||

|
||||
|
||||
<div align="right">
|
||||
<a href="#table-of-contents">Back to TOC ☝️</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
## 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.1.0
|
||||
+ uses: docker://peaceiris/gh-pages:v2.1.0
|
||||
- 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`
|
||||
|
||||
[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
|
||||
- uses: peaceiris/actions-hugo@v0.58.0
|
||||
+ uses: docker://peaceiris/gha-hugo:v0.58.0
|
||||
- ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||
+ PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
|
||||
```
|
||||
|
||||
- [peaceiris/gha-hugo - Docker Hub](https://hub.docker.com/r/peaceiris/gha-hugo)
|
||||
### ⭐️ `GITHUB_TOKEN`
|
||||
|
||||
### `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]
|
||||
|
||||
> **NOTES**: This action supports `GITHUB_TOKEN` but it has some problems to deploy to GitHub Pages. See #9
|
||||
[Issue #9]: https://github.com/peaceiris/actions-gh-pages/issues/9
|
||||
|
||||
```diff
|
||||
- ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
```
|
||||
|
||||
### ⭐️ 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
|
||||
env:
|
||||
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||
PUBLISH_BRANCH: gh-pages
|
||||
PUBLISH_DIR: ./public
|
||||
with:
|
||||
emptyCommits: false
|
||||
```
|
||||
|
||||
### ⭐️ 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`.
|
||||
|
||||
For example:
|
||||
|
||||
```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:
|
||||
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.6.0
|
||||
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
|
||||
|
||||
### ⭐️ 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.
|
||||
|
||||
- [Use a Custom Domain | Hugo](https://gohugo.io/hosting-and-deployment/hosting-on-github/#use-a-custom-domain)
|
||||
- [Using the Static folder | GatsbyJS](https://www.gatsbyjs.org/docs/static-folder/)
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
Please add `.nojekyll` file to `PUBLISH_DIR`.
|
||||
|
||||
- [Bypassing Jekyll on GitHub Pages - The GitHub Blog](https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/)
|
||||
|
||||
> 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
|
||||
|
||||
### MkDocs
|
||||
### ⭐️ Static Site Generators with Node.js
|
||||
|
||||
[hexo], [gitbook], [vuepress], [react-static], [gridsome], etc.
|
||||
|
||||
[hexo]: https://github.com/hexojs/hexo
|
||||
[gitbook]: https://github.com/GitbookIO/gitbook
|
||||
[vuepress]: https://github.com/vuejs/vuepress
|
||||
[react-static]: https://github.com/react-static/react-static
|
||||
[gridsome]: https://github.com/gridsome/gridsome
|
||||
|
||||
Premise: Dependencies are managed by `package.json` and `package-lock.json`
|
||||
|
||||

|
||||
|
||||
@@ -122,29 +422,332 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- name: Set up Python
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '10.x'
|
||||
|
||||
- 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
|
||||
|
||||
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@v1
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '10.x'
|
||||
|
||||
- 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 format
|
||||
|
||||
- run: npm run test
|
||||
|
||||
- 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
|
||||
|
||||
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@v1
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '10.x'
|
||||
|
||||
- name: Get yarn cache
|
||||
id: yarn-cache
|
||||
run: echo "::set-output name=dir::$(yarn cache dir)"
|
||||
|
||||
- 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-
|
||||
|
||||
- run: yarn install
|
||||
|
||||
- run: yarn build
|
||||
|
||||
- run: yarn export
|
||||
|
||||
- run: touch ./out/.nojekyll
|
||||
|
||||
- name: deploy
|
||||
uses: peaceiris/actions-gh-pages@v2
|
||||
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@v1
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '10.x'
|
||||
|
||||
- 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 test
|
||||
|
||||
- run: npm run generate
|
||||
|
||||
- name: deploy
|
||||
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
|
||||
|
||||
[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: 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 with MkDocs
|
||||
run: mkdocs build
|
||||
- run: mkdocs build
|
||||
|
||||
- name: Deploy to GitHub Pages
|
||||
uses: peaceiris/actions-gh-pages@v2.1.0
|
||||
- name: Deploy
|
||||
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
|
||||
|
||||
@@ -157,3 +760,9 @@ jobs:
|
||||
## About the author
|
||||
|
||||
- [peaceiris's homepage](https://peaceiris.com/)
|
||||
|
||||
|
||||
|
||||
<div align="right">
|
||||
<a href="#table-of-contents">Back to TOC ☝️</a>
|
||||
</div>
|
||||
|
||||
17
action.yml
@@ -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'
|
||||
@@ -7,3 +7,16 @@ runs:
|
||||
branding:
|
||||
icon: 'upload-cloud'
|
||||
color: 'blue'
|
||||
inputs:
|
||||
emptyCommits:
|
||||
description: 'If empty commits should be made to the publication branch'
|
||||
required: false
|
||||
default: 'true'
|
||||
keepFiles:
|
||||
description: 'If existing files in the publish branch should be not removed before deploying'
|
||||
required: false
|
||||
default: 'false'
|
||||
forceOrphan:
|
||||
description: 'Keep only the latest commit on a GitHub Pages branch'
|
||||
required: false
|
||||
default: 'false'
|
||||
|
||||
@@ -11,26 +11,56 @@ function print_info() {
|
||||
echo -e "\e[36mINFO: ${1}\e[m"
|
||||
}
|
||||
|
||||
function skip() {
|
||||
print_info "No changes detected, skipping deployment"
|
||||
exit 0
|
||||
}
|
||||
|
||||
# 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/${PUBLISH_REPOSITORY}.git"
|
||||
|
||||
elif [ -n "${GITHUB_TOKEN}" ]; then
|
||||
|
||||
print_info "setup with GITHUB_TOKEN"
|
||||
print_error "GITHUB_TOKEN works only private repo, See #9"
|
||||
|
||||
remote_repo="https://${GITHUB_ACTOR}:${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 or GITHUB_TOKEN"
|
||||
print_error "not found ACTIONS_DEPLOY_KEY, PERSONAL_TOKEN, or GITHUB_TOKEN"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -46,10 +76,22 @@ 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}"
|
||||
git rm -r '*'
|
||||
|
||||
if [[ ${INPUT_KEEPFILES} == "true" ]]; then
|
||||
print_info "Keeping existing files: ${INPUT_KEEPFILES}"
|
||||
else
|
||||
git rm -r --ignore-unmatch '*'
|
||||
fi
|
||||
|
||||
find "${GITHUB_WORKSPACE}/${PUBLISH_DIR}" -maxdepth 1 | \
|
||||
tail -n +2 | \
|
||||
xargs -I % cp -rf % "${local_dir}/"
|
||||
@@ -65,6 +107,19 @@ git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
|
||||
git remote rm origin || true
|
||||
git remote add origin "${remote_repo}"
|
||||
git add --all
|
||||
git commit --allow-empty -m "Automated deployment: $(date -u) ${GITHUB_SHA}"
|
||||
git push origin "${remote_branch}"
|
||||
|
||||
print_info "Allowing empty commits: ${INPUT_EMPTYCOMMITS}"
|
||||
COMMIT_MESSAGE="Automated deployment: $(date -u) ${GITHUB_SHA}"
|
||||
if [[ ${INPUT_EMPTYCOMMITS} == "false" ]]; then
|
||||
git commit -m "${COMMIT_MESSAGE}" || skip
|
||||
else
|
||||
git commit --allow-empty -m "${COMMIT_MESSAGE}"
|
||||
fi
|
||||
|
||||
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"
|
||||
|
||||
BIN
images/default-branch.jpg
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
images/deploy-keys-1.jpg
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
images/deploy-keys-2.jpg
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
images/log1.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
images/log2.jpg
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
images/log3.jpg
Normal file
|
After Width: | Height: | Size: 151 KiB |
BIN
images/log4.jpg
Normal file
|
After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
BIN
images/secrets-1.jpg
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
images/secrets-2.jpg
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
images/user_repo.jpg
Normal file
|
After Width: | Height: | Size: 54 KiB |