Compare commits

...

26 Commits

Author SHA1 Message Date
Shohei Ueda
b263205b1b Release v2.2.0 (#19)
* try to fix: remote repo URL for GITHUB_TOKEN

cf. https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation

* add: PERSONAL_TOKEN
* update: readme about PERSONAL_TOKEN
2019-09-08 04:24:03 +09:00
peaceiris
8fd3a55a6f fix: readme 2019-09-06 01:16:44 +09:00
peaceiris
61579670d5 enhance: readme 2019-09-06 00:50:59 +09:00
peaceiris
809601eb1f update: readme from v2.0.0 to v2.1.0 2019-09-06 00:33:20 +09:00
Shohei Ueda
45f5817ce0 Release v2.1.0 (#14)
* change: base docker image from ubuntu:18.04 to alpine:3.10.2
* update: .hadolint.yaml to ignore DL3018
2019-09-06 00:31:34 +09:00
peaceiris
713b37219b update: .dockerignore 2019-09-05 23:38:50 +09:00
peaceiris
7e5e720d90 fix: action.yml name 2019-09-05 23:10:30 +09:00
Shohei Ueda
9dbd791001 Release v2.0.0 (#10)
Changes for peaceiris/actions-gh-pages

* update: yaml example of GitHub Actions v2 settings for MkDocs, close #8
* revert: support ACTIONS_DEPLOY_KEY (ssh deploy) again
* upgrade: Hugo to v0.58.0 at example yaml
* remove: steps if statement from example yaml, close #12

Changes for this repository

* gha: add lint job (shellcheck and hadolint)
* gha: remove tag filter
* gha: remove steps if statement, close #12
* gha: add action.yml
* fix: FUNDING.yml
2019-09-05 23:07:49 +09:00
peaceiris
500440b181 fix: FUNDING.yml 2019-09-04 22:17:54 +09:00
peaceiris
0e24c54186 add: Docker Hub Build Status badge 2019-09-02 19:23:36 +09:00
peaceiris
3a8415028f add: master branch to GitHub Actions filter 2019-09-02 18:37:30 +09:00
peaceiris
e43f914d03 fix: readme 2019-09-02 18:35:05 +09:00
peaceiris
77991bbc93 add: release docker image with latest tag 2019-09-02 18:28:50 +09:00
Michael Smith
76d9ea1451 Fetch remote before testing whether the publish branch exists (#7)
This re-uses the existing branch rather than always overwriting it with
a new branch with a single commit.

Signed-off-by: Michael Smith <michael.smith@puppet.com>
2019-09-02 17:47:55 +09:00
peaceiris
bb5d194848 rename: example workflow name 2019-08-22 05:02:54 +09:00
peaceiris
82f293b20d rename: workflow name 2019-08-22 04:58:58 +09:00
peaceiris
da8d0ec496 add: GitHub Actions badge 2019-08-22 04:53:47 +09:00
peaceiris
141841e4cd add: docker-image-ci workflow 2019-08-22 04:49:43 +09:00
peaceiris
d357978789 remove: GitHub Actions v1 workflow overview images 2019-08-22 03:41:21 +09:00
peaceiris
6492b522ce migrate: GitHub Actions v2 YAML workflow setting example with hugo 2019-08-22 02:48:35 +09:00
peaceiris
5b4ace2ae6 remove: GitHub Actions v1 workflow setting 2019-08-22 02:45:13 +09:00
Shohei Ueda
5af287f677 release v1.1.0 (#4)
* change: use GITHUB_TOKEN instead of ACTIONS_DEPLOY_KEY

* enhance: entrypoint.sh

* update: readme for v1.1.0 (Fixes #3)

* remove: images/patreon.jpg
2019-08-07 22:43:26 +09:00
peaceiris
1f78e2b780 add: images and is-not-branch-deleted action 2019-06-12 14:14:55 +09:00
peaceiris
a18ce52dfa add: badges to check the latest version of actions 2019-05-27 06:25:57 +09:00
peaceiris
5ff5415c45 update: sample 2019-05-26 22:42:48 +09:00
peaceiris
4ceb783693 release: v1.0.1 2019-05-26 22:41:32 +09:00
10 changed files with 236 additions and 106 deletions

View File

@@ -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
View File

@@ -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

View File

@@ -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 ."
}

47
.github/workflows/docker-image-ci.yml vendored Normal file
View File

@@ -0,0 +1,47 @@
name: docker image ci
on:
push:
branches:
- master
- 'release-v*'
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)
# - 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
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
View File

@@ -0,0 +1,2 @@
ignored:
- DL3018

View File

@@ -1,17 +1,11 @@
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 && \
rm -rf /var/lib/apt/lists/*
ADD entrypoint.sh /entrypoint.sh COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ] ENTRYPOINT [ "/entrypoint.sh" ]

167
README.md
View File

@@ -1,6 +1,8 @@
[![license](https://img.shields.io/github/license/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/blob/master/LICENSE) [![license](https://img.shields.io/github/license/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/blob/master/LICENSE)
[![release](https://img.shields.io/github/release/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/releases/latest) [![release](https://img.shields.io/github/release/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/releases/latest)
[![GitHub release date](https://img.shields.io/github/release-date/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/releases) [![GitHub release date](https://img.shields.io/github/release-date/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/releases)
[![GitHub Actions status](https://github.com/peaceiris/actions-gh-pages/workflows/docker%20image%20ci/badge.svg)](https://github.com/peaceiris/actions-gh-pages/actions)
[![Docker Hub Build Status](https://img.shields.io/docker/cloud/build/peaceiris/gh-pages.svg)](https://hub.docker.com/r/peaceiris/gh-pages)
<img width="400" alt="GitHub Actions for deploying to GitHub Pages with Static Site Generators" src="./images/ogp.svg"> <img width="400" alt="GitHub Actions for deploying to GitHub Pages with Static Site Generators" src="./images/ogp.svg">
@@ -16,13 +18,12 @@ A GitHub Action to deploy your static site to GitHub Pages with [Static Site Gen
## 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,41 +31,82 @@ 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. An example yaml file with Hugo action.
- [peaceiris/actions-hugo: GitHub Actions for Hugo extended](https://github.com/peaceiris/actions-hugo) - [peaceiris/actions-hugo: GitHub Actions for Hugo extended](https://github.com/peaceiris/actions-hugo)
```hcl ![peaceiris/actions-hugo latest version](https://img.shields.io/github/release/peaceiris/actions-hugo.svg?label=peaceiris%2Factions-hugo)
workflow "GitHub Pages" { ![peaceiris/actions-gh-pages latest version](https://img.shields.io/github/release/peaceiris/actions-gh-pages.svg?label=peaceiris%2Factions-gh-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: build
secrets = ["ACTIONS_DEPLOY_KEY"] uses: peaceiris/actions-hugo@v0.58.0
} with:
args: --gc --minify --cleanDestinationDir
- name: deploy
uses: peaceiris/actions-gh-pages@v2.1.0
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./public
```
### 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
```
- [peaceiris/gh-pages - Docker Hub](https://hub.docker.com/r/peaceiris/gh-pages)
```diff
- uses: peaceiris/actions-hugo@v0.58.0
+ uses: docker://peaceiris/gha-hugo:v0.58.0
```
- [peaceiris/gha-hugo - Docker Hub](https://hub.docker.com/r/peaceiris/gha-hugo)
#### `PERSONAL_TOKEN`
[Create 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 }}
```
#### `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 }}
``` ```
@@ -73,48 +115,49 @@ action "deploy" {
### MkDocs ### MkDocs
- [peaceiris/actions-pipenv: GitHub Actions for pipenv](https://github.com/peaceiris/actions-pipenv) ![peaceiris/actions-gh-pages latest version](https://img.shields.io/github/release/peaceiris/actions-gh-pages.svg?label=peaceiris%2Factions-gh-pages)
- [main.workflow - peaceiris/mkdocs-material-boilerplate](https://github.com/peaceiris/mkdocs-material-boilerplate/blob/master/.github/main.workflow)
```hcl ```yaml
workflow "MkDocs workflow" { name: github pages
on = "push"
resolves = ["deploy"]
}
action "branch-filter" { on:
uses = "actions/bin/filter@master" push:
args = "branch master" branches:
} - master
action "pipenv-sync" { jobs:
needs = ["branch-filter"] build-deploy:
uses = "peaceiris/actions-pipenv@3.6" runs-on: ubuntu-18.04
args = "sync" steps:
} - uses: actions/checkout@v1
action "mkdocs-build" { - name: Set up Python
needs = ["pipenv-sync"] uses: actions/setup-python@v1
uses = "peaceiris/actions-pipenv@3.6" with:
args = ["run", "mkdocs", "build", "--config-file", "./mkdocs-sample.yml"] python-version: '3.6'
} architecture: 'x64'
action "deploy" { - name: Install dependencies
needs = ["mkdocs-build"] run: |
uses = "peaceiris/actions-gh-pages@v1.0.0" pip install --upgrade pip
env = { pip install -r ./requirements.txt
PUBLISH_DIR = "./site"
PUBLISH_BRANCH = "gh-pages" - name: Build with MkDocs
} run: mkdocs build
secrets = ["ACTIONS_DEPLOY_KEY"]
} - name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v2.1.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 +166,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>

9
action.yml Normal file
View File

@@ -0,0 +1,9 @@
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'

View File

@@ -1,33 +1,76 @@
#!/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 '*'
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 --allow-empty -m "Automated deployment: $(date -u) ${GITHUB_SHA}"
git commit -m "Automated deployment: ${timestamp} ${GITHUB_SHA}" git push origin "${remote_branch}"
git push origin "${remote_branch}" --force print_info "${GITHUB_SHA} was successfully deployed"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB