October 30, 2023
2 minutes read
You’ve built an amazing Jekyll website, and now you want to share it with the world using GitHub Pages. However, GitHub Pages operates in safe
mode, which means it doesn’t support custom plugins out of the box. But don’t worry, we’ve got you covered! In this guide, we’ll walk you through using GitHub Actions and the Jekyll Deploy Action
to deploy your Jekyll site with custom plugins to GitHub Pages.
The Jekyll Deploy Action simplifies the process of building and deploying your Jekyll site to GitHub Pages. It’s a handy tool that ensures your custom plugins work seamlessly.
You can find the repository for the Jekyll Deploy Action
here.
Before setting up the GitHub Action workflow, let’s make sure you have the prerequisites in place:
Separate Branch: Create a new branch, which we’ll call gh-pages, separate from your main repository. We’ll use this branch to deploy your site to GitHub Pages.
Now, let’s set up the GitHub Action workflow to automate your deployment. Follow these steps:
Create a Workflow File: Inside your repository’s main branch, create a directory named ``.github/workflows`.
Add Configuration: In this directory, create a file named jekyll.yml. Paste the following code into this file:
name: Build and Deploy to Github Pages
on:
push:
branches:
- main # Here source code branch is `main`, it could be other branch
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# Use GitHub Actions' cache to cache dependencies on servers
- uses: actions/cache@v3
with:
path: vendor/bundle
key: $-gems-$
restore-keys: |
$-gems-
# Use GitHub Deploy Action to build and deploy to Github
# For latest version: `jeffreytse/jekyll-deploy-action@master`
- uses: jeffreytse/jekyll-deploy-action@v0.5.0
with:
provider: 'github' # Default is github
token: $ # It's your Personal Access Token(PAT)
ssh_private_key: '' # It's your SSH private key (SSH approach)
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)
The code above is sourced from the jekyll-deploy-action repository for reference.
Now, whenever you push changes to the main branch, the GitHub Action workflow will automatically build your site and make it available on the gh-pages
branch. You can then follow the same steps you did previously to deploy your website to GitHub Pages.
That’s it! Your website is now deployed with custom plugins, and you’re ready to celebrate your success. 🎉
Happy coding!