diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..e64b7f85a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.git +.github +LICENSE +README.md +images diff --git a/.github/main.workflow b/.github/main.workflow new file mode 100644 index 000000000..032cfda2e --- /dev/null +++ b/.github/main.workflow @@ -0,0 +1,9 @@ +workflow "Main workflow" { + on = "push" + resolves = ["docker-build"] +} + +action "docker-build" { + uses = "actions/docker/cli@master" + args = "build -t peaceiris/actions-gh-deploy ." +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..6f8b6bb7c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM alpine:3.9 + +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 \ + git \ + openssh-client + +ADD entrypoint.sh /entrypoint.sh +ENTRYPOINT [ "/entrypoint.sh" ] diff --git a/LICENSE b/LICENSE index 82bff4341..11c076936 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 Shohei Ueda +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 diff --git a/README.md b/README.md index ae983c254..fd1b9030f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,73 @@ -# actions-gh-deploy -GitHub Actions for deploying to GitHub Pages with Static Site Generators +[![license](https://img.shields.io/github/license/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/blob/master/LICENSE) +[![release](https://img.shields.io/github/release/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/releases/latest) +[![GitHub release date](https://img.shields.io/github/release-date/peaceiris/actions-gh-pages.svg)](https://github.com/peaceiris/actions-gh-pages/releases) + +GitHub Actions for deploying to GitHub Pages with Static Site Generators + + + +## GitHub Actions for deploying to GitHub Pages + +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/ + + + +## Getting started + +### (1) Add deploy Key + +1. Generate deploy key `ssh-keygen -t rsa -b 4096 -C "your@email.com" -f gh-pages -N ""` +2. Go to "Settings > Deploy Keys" of repository. +3. Add your public key within "Allow write access" option. +4. Go to "Settings > Secrets" of repository. +5. Add your private deploy key as `ACTIONS_DEPLOY_KEY` + +### (2) Create `main.workflow` + +An example with Hugo action. + +- [peaceiris/actions-hugo: GitHub Actions for Hugo extended](https://github.com/peaceiris/actions-hugo) + +```hcl +workflow "GitHub Pages" { + on = "push" + resolves = ["deploy"] +} + +action "is-branch-master" { + uses = "actions/bin/filter@master" + args = "branch master" +} + +action "build" { + needs = "is-branch-master" + uses = "peaceiris/actions-hugo@v0.55.6" + args = ["--gc", "--minify", "--cleanDestinationDir"] +} + +action "deploy" { + needs = "build" + uses = "peaceiris/actions-gh-pages@v1.0.0" + env = { + PUBLISH_DIR = "./public" + PUBLISH_BRANCH = "gh-pages" + } + secrets = ["ACTIONS_DEPLOY_KEY"] +} +``` + + + +## License + +[MIT License - peaceiris/actions-gh-pages] + +[MIT License - peaceiris/actions-gh-pages]: https://github.com/peaceiris/actions-gh-pages/blob/master/LICENSE + + + +## Supprt author + +peaceiris - Patreon diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 000000000..c2cfe807f --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# setup ssh +if [[ -z "${ACTIONS_DEPLOY_KEY}" ]]; then + echo "error: not found ACTIONS_DEPLOY_KEY" + exit 1 +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} +if [[ -z "${PUBLISH_BRANCH}" ]]; then + echo "error: not found PUBLISH_BRANCH" + exit 1 +fi +remote_repo="git@github.com:${GITHUB_REPOSITORY}.git" +remote_branch="${PUBLISH_BRANCH}" +git init +git config user.name "${GITHUB_ACTOR}" +git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" +git remote add origin "${remote_repo}" +git checkout "${remote_branch}" || git checkout --orphan "${remote_branch}" +git add --all +timestamp=$(date -u) +git commit -m "Automated deployment: ${timestamp} ${GITHUB_SHA}" +git push origin "${remote_branch}" --force diff --git a/images/ogp.svg b/images/ogp.svg new file mode 100644 index 000000000..c8476c092 --- /dev/null +++ b/images/ogp.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/images/patreon.jpg b/images/patreon.jpg new file mode 100644 index 000000000..1c680522a Binary files /dev/null and b/images/patreon.jpg differ