Compare commits
3 Commits
v2
...
v2.4.0-rc0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51a5b047a7 | ||
|
|
649380ea44 | ||
|
|
493f73c406 |
@@ -1,10 +0,0 @@
|
||||
version: 1
|
||||
update_configs:
|
||||
- package_manager: "docker"
|
||||
directory: "/"
|
||||
update_schedule: "weekly"
|
||||
default_labels:
|
||||
- "dependencies"
|
||||
- "docker"
|
||||
commit_message:
|
||||
prefix: "deps"
|
||||
3
.github/CODEOWNERS
vendored
3
.github/CODEOWNERS
vendored
@@ -1,3 +0,0 @@
|
||||
# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
|
||||
|
||||
* @peaceiris
|
||||
9
.github/FUNDING.yml
vendored
Normal file
9
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
# 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
31
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,31 +0,0 @@
|
||||
---
|
||||
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
8
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,8 +0,0 @@
|
||||
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
20
.github/ISSUE_TEMPLATE/proposal.md
vendored
@@ -1,20 +0,0 @@
|
||||
---
|
||||
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.
|
||||
30
.github/workflows/docker-image-ci.yml
vendored
30
.github/workflows/docker-image-ci.yml
vendored
@@ -3,38 +3,40 @@ 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@v2
|
||||
- uses: actions/checkout@master
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: build
|
||||
env:
|
||||
DOCKER_IMAGE: docker.pkg.github.com/${{ github.repository }}/action:latest
|
||||
run: |
|
||||
docker build . --file Dockerfile --tag ${DOCKER_IMAGE}
|
||||
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@v2
|
||||
|
||||
- uses: actions/checkout@master
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: shellcheck
|
||||
run: shellcheck ./entrypoint.sh
|
||||
|
||||
hadolint:
|
||||
runs-on: macos-latest
|
||||
runs-on: macOS-10.14
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: brew install hadolint
|
||||
- run: hadolint ./Dockerfile
|
||||
- uses: actions/checkout@master
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: hadolint
|
||||
run: |
|
||||
brew install hadolint
|
||||
hadolint ./Dockerfile
|
||||
|
||||
16
.github/workflows/purge-readme-image-cache.yml
vendored
16
.github/workflows/purge-readme-image-cache.yml
vendored
@@ -1,16 +0,0 @@
|
||||
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
17
.github/workflows/stale.yml
vendored
@@ -1,17 +0,0 @@
|
||||
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
24
.github/workflows/update-major-tag.yml
vendored
@@ -1,24 +0,0 @@
|
||||
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,4 +1,4 @@
|
||||
FROM alpine:3.11.3
|
||||
FROM alpine:3.10.2
|
||||
|
||||
RUN apk add --no-cache \
|
||||
bash \
|
||||
|
||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Shohei Ueda (peaceiris)
|
||||
Copyright (c) 2019 Shohei Ueda (peaceiris)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
595
README.md
595
README.md
@@ -1,93 +1,43 @@
|
||||
[](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 GitHub Pages
|
||||
## GitHub Actions for deploying to GitHub Pages
|
||||
|
||||
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.)
|
||||
A GitHub Action to deploy your static site to GitHub Pages with [Static Site Generators] (Hugo, MkDocs, Gatsby, GitBook, 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 your workflow](#2-create-your-workflow)
|
||||
- [(1) Add ssh deploy key](#1-add-ssh-deploy-key)
|
||||
- [(2) Create `.github/workflows/gh-pages.yml`](#2-create-githubworkflowsgh-pagesyml)
|
||||
- [⭐️ 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)
|
||||
- [⭐️ Force orphan](#%EF%B8%8F-force-orphan)
|
||||
- [⭐️ Set Git username and email](#%EF%B8%8F-set-git-username-and-email)
|
||||
- [⭐️ Set custom commit message](#%EF%B8%8F-set-custom-commit-message)
|
||||
- [⭐️ Create Git tag](#%EF%B8%8F-create-git-tag)
|
||||
- [⭐️ Script mode](#%EF%B8%8F-script-mode)
|
||||
- [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)
|
||||
- [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)
|
||||
- [How to add `CNAME`](#how-to-add-cname)
|
||||
- [Deployment completed but you cannot read](#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)
|
||||
- [⭐️ Elm](#%EF%B8%8F-elm)
|
||||
- [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)
|
||||
|
||||
@@ -97,7 +47,7 @@ Do you want to skip the docker build step? OK, the script mode is available.
|
||||
|
||||
## Getting started
|
||||
|
||||
### (1) Add SSH deploy key
|
||||
### (1) Add ssh deploy key
|
||||
|
||||
Generate your deploy key with the following command.
|
||||
|
||||
@@ -121,9 +71,7 @@ Next, Go to **Repository Settings**
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
### (2) Create your workflow
|
||||
|
||||
Add your workflow setting YAML file `.github/workflows/gh-pages.yml` and push to the default branch.
|
||||
### (2) Create `.github/workflows/gh-pages.yml`
|
||||
|
||||
#### ⭐️ Repository type - Project
|
||||
|
||||
@@ -148,20 +96,20 @@ jobs:
|
||||
build-deploy:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@master
|
||||
# with:
|
||||
# submodules: true
|
||||
|
||||
- name: Setup Hugo
|
||||
uses: peaceiris/actions-hugo@v2
|
||||
uses: peaceiris/actions-hugo@v2.2.0
|
||||
with:
|
||||
hugo-version: '0.59.1'
|
||||
hugo-version: '0.58.3'
|
||||
|
||||
- name: Build
|
||||
run: hugo --minify
|
||||
run: hugo --gc --minify --cleanDestinationDir
|
||||
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v2
|
||||
uses: peaceiris/actions-gh-pages@v2.3.2
|
||||
env:
|
||||
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||
PUBLISH_BRANCH: gh-pages
|
||||
@@ -196,29 +144,22 @@ 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
|
||||
|
||||

|
||||

|
||||
|
||||
<div align="right">
|
||||
<a href="#table-of-contents">Back to TOC ☝️</a>
|
||||
</div>
|
||||
### Options
|
||||
|
||||
|
||||
|
||||
## Options
|
||||
|
||||
### ⭐️ Pull action image from Docker Hub
|
||||
#### ⭐️ 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
|
||||
+ uses: docker://peaceiris/gh-pages:v2
|
||||
- uses: peaceiris/actions-gh-pages@v2.3.2
|
||||
+ uses: docker://peaceiris/gh-pages:v2.3.2
|
||||
```
|
||||
|
||||
- [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`.
|
||||
|
||||
@@ -227,9 +168,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**: `GITHUB_TOKEN` works only on a **private** repository.
|
||||
> **NOTES**: Do not use `GITHUB_TOKEN`.
|
||||
>
|
||||
> This action supports `GITHUB_TOKEN` but it has some problems to deploy to GitHub Pages. GitHub team is investigating that. See [Issue #9]
|
||||
|
||||
@@ -240,7 +181,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]
|
||||
|
||||
@@ -250,7 +191,7 @@ For example:
|
||||
|
||||
```yaml
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v2
|
||||
uses: peaceiris/actions-gh-pages@v2.3.2
|
||||
env:
|
||||
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||
PUBLISH_BRANCH: gh-pages
|
||||
@@ -259,7 +200,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`.
|
||||
|
||||
@@ -267,7 +208,7 @@ For example:
|
||||
|
||||
```yaml
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v2
|
||||
uses: peaceiris/actions-gh-pages@v2.3.2
|
||||
env:
|
||||
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||
PUBLISH_BRANCH: gh-pages
|
||||
@@ -276,171 +217,11 @@ 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
|
||||
```
|
||||
|
||||
### ⭐️ Set Git username and email
|
||||
|
||||
Set custom `git config user.name` and `git config user.email`.
|
||||
A commit is always created with the same user.
|
||||
|
||||
```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:
|
||||
username: "iris"
|
||||
useremail: "iris@peaceiris.com"
|
||||
```
|
||||
|
||||
### ⭐️ Set custom commit message
|
||||
|
||||
Set custom commit message.
|
||||
When we create a commit with a message `docs: Update some post`, a deployment commit will be generated with a message `docs: Update some post ${GITHUB_SHA}`.
|
||||
|
||||
```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:
|
||||
commitMessage: ${{ github.event.head_commit.message }}
|
||||
```
|
||||
|
||||
### ⭐️ Create Git tag
|
||||
|
||||
Here is an example workflow.
|
||||
|
||||
```yaml
|
||||
name: github pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- 'v*.*.*'
|
||||
|
||||
jobs:
|
||||
build-deploy:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Some build
|
||||
|
||||
- name: Prepare tag
|
||||
id: prepare_tag
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
run: |
|
||||
TAG_NAME="${GITHUB_REF##refs/tags/}"
|
||||
echo "::set-output name=tag_name::${TAG_NAME}"
|
||||
echo "::set-output name=deploy_tag_name::deploy-${TAG_NAME}"
|
||||
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v2
|
||||
env:
|
||||
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||
PUBLISH_BRANCH: gh-pages
|
||||
PUBLISH_DIR: ./public
|
||||
with:
|
||||
tagName: ${{ steps.prepare_tag.outputs.deploy_tag_name }}
|
||||
tagMessage: 'Deployment ${{ steps.prepare_tag.outputs.tag_name }}'
|
||||
```
|
||||
|
||||
Commands on a local machine.
|
||||
|
||||
```console
|
||||
$ # On the master branch
|
||||
$ git tag -a "v1.2.3" -m "Release v1.2.3"
|
||||
$ git push origin "v1.2.3"
|
||||
|
||||
$ # After deployment
|
||||
$ git fetch origin
|
||||
$ git tag
|
||||
deploy-v1.2.3 # Tag on the gh-pages branch
|
||||
v1.2.3 # Tag on the master branch
|
||||
```
|
||||
|
||||
We can set `tagOverwrite` option to `true` for overwriting a tag.
|
||||
|
||||
### ⭐️ 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`
|
||||
### How to add `CNAME`
|
||||
|
||||
Most of the Static Site Generators support `CNAME` as a static file.
|
||||
|
||||
@@ -449,18 +230,7 @@ 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.
|
||||
|
||||
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
|
||||
### 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.
|
||||
@@ -470,26 +240,11 @@ 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.
|
||||
|
||||
@@ -515,34 +270,25 @@ jobs:
|
||||
build-deploy:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@master
|
||||
|
||||
- name: Setup Node
|
||||
- name: build
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '10.x'
|
||||
node-version: '10.16'
|
||||
- run: |
|
||||
npm install
|
||||
npm run build
|
||||
|
||||
- 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
|
||||
- name: deploy
|
||||
uses: peaceiris/actions-gh-pages@v2.3.2
|
||||
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]
|
||||
|
||||
@@ -563,38 +309,34 @@ jobs:
|
||||
build-deploy:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@master
|
||||
|
||||
- name: Setup Node
|
||||
- name: setup node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '10.x'
|
||||
node-version: '10.16'
|
||||
|
||||
- name: Cache dependencies
|
||||
uses: actions/cache@v1
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-
|
||||
- name: install
|
||||
run: npm install
|
||||
|
||||
- run: npm ci
|
||||
- name: format
|
||||
run: npm run format
|
||||
|
||||
- run: npm run format
|
||||
- name: test
|
||||
run: npm run test
|
||||
|
||||
- run: npm run test
|
||||
- name: build
|
||||
run: npm run build
|
||||
|
||||
- run: npm run build
|
||||
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v2
|
||||
- name: deploy
|
||||
uses: peaceiris/actions-gh-pages@v2.3.2
|
||||
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]
|
||||
|
||||
@@ -617,42 +359,34 @@ jobs:
|
||||
build-deploy:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@master
|
||||
|
||||
- name: Setup Node
|
||||
- name: setup node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '10.x'
|
||||
node-version: '10.16'
|
||||
|
||||
- name: Get yarn cache
|
||||
id: yarn-cache
|
||||
run: echo "::set-output name=dir::$(yarn cache dir)"
|
||||
- name: install
|
||||
run: yarn install
|
||||
|
||||
- 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: build
|
||||
run: yarn build
|
||||
|
||||
- run: yarn install
|
||||
- name: export
|
||||
run: yarn export
|
||||
|
||||
- run: yarn build
|
||||
|
||||
- run: yarn export
|
||||
|
||||
- run: touch ./out/.nojekyll
|
||||
- name: add nojekyll
|
||||
run: touch ./out/.nojekyll
|
||||
|
||||
- name: deploy
|
||||
uses: peaceiris/actions-gh-pages@v2
|
||||
uses: peaceiris/actions-gh-pages@v2.3.2
|
||||
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]
|
||||
|
||||
@@ -675,36 +409,31 @@ jobs:
|
||||
build-deploy:
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@master
|
||||
|
||||
- name: Setup Node
|
||||
- name: setup node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '10.x'
|
||||
node-version: '10.16'
|
||||
|
||||
- name: Cache dependencies
|
||||
uses: actions/cache@v1
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-
|
||||
- name: install
|
||||
run: npm install
|
||||
|
||||
- run: npm ci
|
||||
- name: test
|
||||
run: npm test
|
||||
|
||||
- run: npm test
|
||||
|
||||
- run: npm run generate
|
||||
- name: generate
|
||||
run: npm run generate
|
||||
|
||||
- name: deploy
|
||||
uses: peaceiris/actions-gh-pages@v2
|
||||
uses: peaceiris/actions-gh-pages@v2.3.2
|
||||
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.
|
||||
|
||||
@@ -730,161 +459,29 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- name: Setup Python
|
||||
- name: Set up 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: |
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install -r ./requirements.txt
|
||||
pip install --upgrade pip
|
||||
pip install -r ./requirements.txt
|
||||
|
||||
- run: mkdocs build
|
||||
- name: Build
|
||||
run: mkdocs build
|
||||
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v2
|
||||
uses: peaceiris/actions-gh-pages@v2.3.2
|
||||
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
|
||||
```
|
||||
|
||||
### ⭐️ Elm
|
||||
|
||||
An exapmle workflow for [Elm] with [justgook/setup-elm].
|
||||
|
||||
[Elm]: https://elm-lang.org
|
||||
[justgook/setup-elm]: https://github.com/justgook/setup-elm
|
||||
|
||||
```yaml
|
||||
name: github pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
build-deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Setup Elm
|
||||
uses: justgook/setup-elm@v1
|
||||
|
||||
- name: Make
|
||||
run: elm make --optimize src/Main.elm
|
||||
|
||||
- name: Move files
|
||||
run: |
|
||||
mkdir ./public
|
||||
mv ./index.html ./public/
|
||||
# If you have non-minimal setup with some assets and separate html/js files,
|
||||
# provide --output=<output-file> option for `elm make` and remove this step
|
||||
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v2
|
||||
env:
|
||||
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||
PUBLISH_BRANCH: gh-pages
|
||||
PUBLISH_DIR: ./public
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
@@ -897,9 +494,3 @@ jobs:
|
||||
## About the author
|
||||
|
||||
- [peaceiris's homepage](https://peaceiris.com/)
|
||||
|
||||
|
||||
|
||||
<div align="right">
|
||||
<a href="#table-of-contents">Back to TOC ☝️</a>
|
||||
</div>
|
||||
|
||||
29
action.yml
29
action.yml
@@ -1,5 +1,5 @@
|
||||
name: 'GitHub Pages action'
|
||||
description: 'GitHub Actions for GitHub Pages 🚀 Deploy static files and publish your site easily. Static-Site-Generators-friendly.'
|
||||
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'
|
||||
@@ -15,27 +15,4 @@ inputs:
|
||||
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'
|
||||
username:
|
||||
description: 'Set Git user.name'
|
||||
required: false
|
||||
useremail:
|
||||
description: 'Set Git user.email'
|
||||
required: false
|
||||
commitMessage:
|
||||
description: 'Set custom commit message'
|
||||
required: false
|
||||
tagName:
|
||||
description: 'Set tag name'
|
||||
required: false
|
||||
tagMessage:
|
||||
description: 'Set tag message'
|
||||
required: false
|
||||
tagOverwrite:
|
||||
description: 'Enable overwriting tag'
|
||||
required: false
|
||||
default: false
|
||||
default: 'false'
|
||||
@@ -17,47 +17,29 @@ 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"
|
||||
|
||||
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"
|
||||
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:${PUBLISH_REPOSITORY}.git"
|
||||
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/${PUBLISH_REPOSITORY}.git"
|
||||
remote_repo="https://x-access-token:${PERSONAL_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
|
||||
|
||||
elif [ -n "${GITHUB_TOKEN}" ]; then
|
||||
|
||||
print_info "setup with GITHUB_TOKEN"
|
||||
print_error "GITHUB_TOKEN works only private repo, See #9"
|
||||
print_error "Do not use GITHUB_TOKEN, See #9"
|
||||
|
||||
if [ -n "${EXTERNAL_REPOSITORY}" ]; then
|
||||
print_error "can not use GITHUB_TOKEN to deploy to an external repository"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
remote_repo="https://x-access-token:${GITHUB_TOKEN}@github.com/${PUBLISH_REPOSITORY}.git"
|
||||
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"
|
||||
@@ -76,14 +58,8 @@ fi
|
||||
|
||||
remote_branch="${PUBLISH_BRANCH}"
|
||||
|
||||
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
|
||||
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}"
|
||||
|
||||
if [[ ${INPUT_KEEPFILES} == "true" ]]; then
|
||||
@@ -92,7 +68,7 @@ elif git clone --depth=1 --single-branch --branch "${remote_branch}" "${remote_r
|
||||
git rm -r --ignore-unmatch '*'
|
||||
fi
|
||||
|
||||
find "${GITHUB_WORKSPACE}/${PUBLISH_DIR}" -maxdepth 1 -not -name ".git" -not -name ".github" | \
|
||||
find "${GITHUB_WORKSPACE}/${PUBLISH_DIR}" -maxdepth 1 | \
|
||||
tail -n +2 | \
|
||||
xargs -I % cp -rf % "${local_dir}/"
|
||||
else
|
||||
@@ -102,62 +78,19 @@ else
|
||||
fi
|
||||
|
||||
# push to publishing branch
|
||||
if [[ -n "${INPUT_USERNAME}" ]]; then
|
||||
git config user.name "${INPUT_USERNAME}"
|
||||
else
|
||||
git config user.name "${GITHUB_ACTOR}"
|
||||
fi
|
||||
if [[ -n "${INPUT_USEREMAIL}" ]]; then
|
||||
git config user.email "${INPUT_USEREMAIL}"
|
||||
else
|
||||
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
|
||||
fi
|
||||
git config user.name "${GITHUB_ACTOR}"
|
||||
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
|
||||
git remote rm origin || true
|
||||
git remote add origin "${remote_repo}"
|
||||
git add --all
|
||||
|
||||
print_info "Allowing empty commits: ${INPUT_EMPTYCOMMITS}"
|
||||
|
||||
if [ -n "${INPUT_COMMITMESSAGE}" ]; then
|
||||
BASE_COMMIT_MESSAGE="${INPUT_COMMITMESSAGE}"
|
||||
else
|
||||
BASE_COMMIT_MESSAGE="Automated deployment: $(date -u)"
|
||||
fi
|
||||
|
||||
if [ -n "${EXTERNAL_REPOSITORY}" ]; then
|
||||
COMMIT_MESSAGE="${BASE_COMMIT_MESSAGE} ${GITHUB_REPOSITORY}@${GITHUB_SHA}"
|
||||
else
|
||||
COMMIT_MESSAGE="${BASE_COMMIT_MESSAGE} ${GITHUB_SHA}"
|
||||
fi
|
||||
|
||||
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
|
||||
|
||||
if [[ -n "${INPUT_TAGNAME}" ]]; then
|
||||
print_info "Tag name: ${INPUT_TAGNAME}"
|
||||
print_info "Tag message: ${INPUT_TAGMESSAGE}"
|
||||
print_info "Tag overwrite: ${INPUT_TAGOVERWRITE}"
|
||||
if [[ -n "${INPUT_TAGMESSAGE}" ]]; then
|
||||
GIT_TAG_MESSAGE="${INPUT_TAGMESSAGE}"
|
||||
else
|
||||
GIT_TAG_MESSAGE="Deployment ${INPUT_TAGNAME}"
|
||||
fi
|
||||
if [[ "${INPUT_TAGOVERWRITE}" == "true" ]]; then
|
||||
GIT_TAG_OPTION="--force"
|
||||
else
|
||||
GIT_TAG_OPTION=""
|
||||
fi
|
||||
git tag "${GIT_TAG_OPTION}" -a "${INPUT_TAGNAME}" -m "${GIT_TAG_MESSAGE}"
|
||||
git push "${GIT_TAG_OPTION}" origin "${INPUT_TAGNAME}"
|
||||
fi
|
||||
|
||||
git push origin "${remote_branch}"
|
||||
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 |
Binary file not shown.
|
Before Width: | Height: | Size: 54 KiB |
Reference in New Issue
Block a user