GitHub Action
Jekyll Deploy Action
Jekyll
action for deployment.
As we known, GitHub Pages runs in safe
mode and a set of allow-listed plugins. To use the gem in GitHub Pages, you need to build locally or use CI (e.g. travis, github workflow) and deploy to your gh-pages
branch.
Therefore, if you want to make Jekyll site run as if it were local, such as let the custom plugins work properly, this action can be very useful for you, beacause it's really convenient to build and deploy the Jekyll site to Github Pages.
At First, you should add a github workflow file (e.g. .github/workflows/build-jekyll.yml
) in your repository's master
branch as below:
name: Build and Deploy to Github Pages
on:
push:
branches:
- master # Here source code branch is `master`, it could be other branch
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Use GitHub Actions' cache to cache dependencies on servers
- uses: actions/cache@v2
with:
path: vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-gems-
# Use GitHub Deploy Action to build and deploy to Github
- uses: jeffreytse/jekyll-deploy-action@v0.3.0
with:
provider: 'github'
token: ${{ secrets.GITHUB_TOKEN }} # It's your Personal Access Token(PAT)
repository: '' # Default is current repository
branch: 'gh-pages' # Default is gh-pages for github provider
jekyll_src: './' # Default is root directory
jekyll_cfg: '_config.yml' # Default is _config.yml
jekyll_baseurl: '' # Default is according to _config.yml
bundler_ver: '>=0' # Default is latest bundler version
cname: '' # Default is to not use a cname
actor: '' # Default is the GITHUB_ACTOR
pre_build_commands: '' # Installing additional dependencies (Arch Linux)
To schedule a workflow, you can use the POSIX cron syntax in your workflow file. The shortest interval you can run scheduled workflows is once every 5 minutes. For example, this workflow is triggered every hour.
on:
schedule:
- cron: '0 * * * *'
At the start of each workflow run, GitHub automatically creates a unique
GITHUB_TOKEN
secret to use in your workflow. You can use the GITHUB_TOKEN
to authenticate in a workflow run. You can use the GITHUB_TOKEN
by using the
standard syntax for referencing secrets: ${{ secrets.GITHUB_TOKEN }}
. For
more information, you can see here.
If you need a token that requires permissions that aren't available in the
GITHUB_TOKEN
, you can create a Personal Access Token (PAT), and set it as
a secret in your repository for this action to push to the gh-pages
branch:
- Create a Personal Access Token with custom permissions and copy the value.
- Go to your repository’s Settings and then switch to the Secrets tab.
- Create a token named
GH_TOKEN
(important) using the value copied.
In the end, go to your repository’s Settings and scroll down to the GitHub Pages
section, choose the gh-pages
branch as your GitHub Pages source.
Additionally, if you don't have the gh-pages
branch, you can create it as below:
git checkout --orphan gh-pages
git rm -rf .
git commit --allow-empty -m "initial commit"
git push origin gh-pages
💡 Tip: The gh-pages
branch is only for the site static files and the master
branch is for source code.
- Jekyll - A blog-aware static site generator in Ruby.
- actions/checkout - Action for checking out a repo.
- actions/cache - Cache dependencies and build outputs in GitHub Actions.
Issues and Pull Requests are greatly appreciated. If you've never contributed to an open source project before I'm more than happy to walk you through how to create a pull request.
You can start by opening an issue describing the problem that you're looking to resolve and we'll go from there.
This software is licensed under the MIT license © JeffreyTse.