{"id":13610622,"url":"https://github.com/jeffreytse/jekyll-deploy-action","last_synced_at":"2025-10-02T16:31:19.964Z","repository":{"id":39993282,"uuid":"276317898","full_name":"jeffreytse/jekyll-deploy-action","owner":"jeffreytse","description":"🪂 A Github Action to deploy the Jekyll site conveniently for GitHub Pages.","archived":false,"fork":false,"pushed_at":"2024-04-05T07:24:20.000Z","size":94,"stargazers_count":322,"open_issues_count":8,"forks_count":43,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-11T09:43:57.238Z","etag":null,"topics":["actions","actionscript","awesome","ci","configuration","deploy","deployment","gh-pages","gihub-actions","github-page","github-workflow","jekyll","jekyll-site","recommend","schedule","site","ssh","workflow"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeffreytse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"jeffreytse","patreon":"jeffreytse","open_collective":null,"ko_fi":"jeffreytse","tidelift":null,"community_bridge":null,"liberapay":"jeffreytse","issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-07-01T08:12:45.000Z","updated_at":"2024-06-10T02:58:24.312Z","dependencies_parsed_at":"2024-01-14T04:58:35.969Z","dependency_job_id":"233f570c-b950-414d-87e1-d8e79b4b0a04","html_url":"https://github.com/jeffreytse/jekyll-deploy-action","commit_stats":{"total_commits":89,"total_committers":7,"mean_commits":"12.714285714285714","dds":0.1797752808988764,"last_synced_commit":"dd7b7d7d3b4fe5588d134ea90b1bc09f516a41a1"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffreytse%2Fjekyll-deploy-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffreytse%2Fjekyll-deploy-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffreytse%2Fjekyll-deploy-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffreytse%2Fjekyll-deploy-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeffreytse","download_url":"https://codeload.github.com/jeffreytse/jekyll-deploy-action/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":215005238,"owners_count":15814971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actions","actionscript","awesome","ci","configuration","deploy","deployment","gh-pages","gihub-actions","github-page","github-workflow","jekyll","jekyll-site","recommend","schedule","site","ssh","workflow"],"created_at":"2024-08-01T19:01:46.389Z","updated_at":"2025-10-02T16:31:14.908Z","avatar_url":"https://github.com/jeffreytse.png","language":"Shell","funding_links":["https://github.com/sponsors/jeffreytse","https://patreon.com/jeffreytse","https://ko-fi.com/jeffreytse","https://liberapay.com/jeffreytse"],"categories":["Installation","Shell","Upload \u0026 Deploy"],"sub_categories":["Additions for Unlimited GitHub Pages"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cbr\u003e\n\n  \u003ca href=\"https://github.com/jeffreytse/jekyll-deploy-action\"\u003e\n    \u003cimg alt=\"jekyll-theme-yat →~ jekyll\" src=\"https://user-images.githubusercontent.com/9413601/107134556-211ea280-692e-11eb-9d13-afb253db5c67.png\" width=\"600\"\u003e\n  \u003c/a\u003e\n\n  \u003cp\u003e🪂 A GitHub Action to deploy the Jekyll site conveniently for GitHub Pages.\u003c/p\u003e\n\n  \u003cbr\u003e\n\n  \u003ch1\u003e JEKYLL DEPLOY ACTION \u003c/h1\u003e\n\n\u003c/div\u003e\n\n\u003ch4 align=\"center\"\u003e\n  \u003ca href=\"https://jekyllrb.com/\" target=\"_blank\"\u003e\u003ccode\u003eJekyll\u003c/code\u003e\u003c/a\u003e action for deployment.\n\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n\n  \u003ca href=\"https://jeffreytse.github.io/jekyll-deploy-action\"\u003e\n    \u003cimg src=\"https://github.com/jeffreytse/jekyll-deploy-action/workflows/Tests/badge.svg\"\n      alt=\"Tests\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://github.com/jeffreytse/jekyll-deploy-action/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/jeffreytse/jekyll-deploy-action?color=brightgreen\"\n      alt=\"Release Version\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-brightgreen.svg\"\n  alt=\"License: MIT\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://liberapay.com/jeffreytse\"\u003e\n  \u003cimg src=\"http://img.shields.io/liberapay/goal/jeffreytse.svg?logo=liberapay\"\n  alt=\"Donate (Liberapay)\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://patreon.com/jeffreytse\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/support-patreon-F96854.svg?style=flat-square\"\n  alt=\"Donate (Patreon)\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://ko-fi.com/jeffreytse\"\u003e\n  \u003cimg height=\"20\" src=\"https://www.ko-fi.com/img/githubbutton_sm.svg\"\n  alt=\"Donate (Ko-fi)\" /\u003e\n  \u003c/a\u003e\n\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003csub\u003eBuilt with ❤︎ by\n  \u003ca href=\"https://jeffreytse.net\"\u003ejeffreytse\u003c/a\u003e and\n  \u003ca href=\"https://github.com/jeffreytse/jekyll-deploy-action/graphs/contributors\"\u003econtributors \u003c/a\u003e\n\u003c/div\u003e\n\n## ✨ Story\n\nAs we known, GitHub Pages runs in `safe` mode and a [set of allow-listed plugins](https://pages.github.com/versions/). To use the gem in GitHub Pages, you need to build locally or use CI (e.g. [travis](https://travis-ci.org/), [github workflow](https://help.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow)) and deploy to your `gh-pages` branch.\n\n**Therefore, if you want to make Jekyll site run as if it were local, such as let\nthe custom plugins work properly, this action can be very useful for you,\nbeacause it's really convenient to build and deploy the Jekyll site to Github\nPages.**\n\n## 📚 Usage\n\nAt First, you should add a github workflow file (e.g. `.github/workflows/build-jekyll.yml`) in your repository's `master` branch as below:\n\n```yml\nname: Build and Deploy to Github Pages\n\non:\n  push:\n    branches:\n      - master  # Here source code branch is `master`, it could be other branch\n\njobs:\n  build_and_deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      # Use GitHub Actions' cache to cache dependencies on servers\n      - uses: actions/cache@v4\n        with:\n          path: |\n            .asdf/**\n            vendor/bundle\n          key: ${{ runner.os }}-cache-${{ hashFiles('**/cache.key') }}\n          restore-keys: |\n            ${{ runner.os }}-cache-\n\n      # Use GitHub Deploy Action to build and deploy to Github\n      # For latest version: `jeffreytse/jekyll-deploy-action@master`\n      - uses: jeffreytse/jekyll-deploy-action@v0.6.0\n        with:\n          provider: 'github'         # Default is github\n          token: ${{ secrets.GITHUB_TOKEN }} # It's your Personal Access Token(PAT)\n          ssh_private_key: ''        # It's your SSH private key (SSH approach)\n          repository: ''             # Default is current repository\n          branch: 'gh-pages'         # Default is gh-pages for github provider\n          jekyll_src: './'           # Default is root directory\n          jekyll_cfg: '_config.yml'  # Default is _config.yml\n          jekyll_baseurl: ''         # Default is according to _config.yml\n          ruby_ver: ''               # Default is 3.2.0 version\n          bundler_ver: ''            # Default is compatible bundler version (~\u003e2.5.0)\n          cname: ''                  # Default is to not use a cname\n          actor: ''                  # Default is the GITHUB_ACTOR\n          pre_build_commands: ''     # Installing additional dependencies (Arch Linux)\n```\n\nNow this action supports the following providers:\n\n- [x] `github`: To publish the site to GitHub.\n- [x] `test`: To check if build passes on pull requests without publishing the site.\n- [ ] `ssh`: To publish the site into any server which supports SSH protocol.\n- ...\n\nTo schedule a workflow, you can use the POSIX cron syntax in your workflow file.\nThe shortest interval you can run scheduled workflows is once every 5 minutes.\nFor example, this workflow is triggered every hour.\n\n```yml\non:\n  schedule:\n    - cron:  '0 * * * *'\n```\n\nAt the start of each workflow run, GitHub automatically creates a unique\n`GITHUB_TOKEN` secret to use in your workflow. You can use the `GITHUB_TOKEN`\nto authenticate in a workflow run. You can use the `GITHUB_TOKEN` by using the\nstandard syntax for referencing secrets: `${{ secrets.GITHUB_TOKEN }}`. For\nmore information, you can see [here](https://docs.github.com/en/actions/security-guides/automatic-token-authentication).\n\nIf you need a token that requires permissions that aren't available in the\n`GITHUB_TOKEN`, you can create a Personal Access Token (PAT), and set it as\na secret in your repository for this action to push to the `gh-pages` branch:\n\n- Create a [Personal Access Token](https://github.com/settings/tokens) with custom permissions and copy the value.\n- Go to your repository’s Settings and then switch to the Secrets tab.\n- Create a token named `GH_TOKEN` (important) using the value copied.\n\nIn the end, go to your repository’s Settings and scroll down to the GitHub Pages\n section, choose the `gh-pages` branch as your GitHub Pages source.\n\nAdditionally, if you don't have the `gh-pages` branch, you can create it as below:\n\n```bash\ngit checkout --orphan gh-pages\ngit rm -rf .\ngit commit --allow-empty -m \"initial commit\"\ngit push origin gh-pages\n```\n\n**💡 Tip:** The `gh-pages` branch is only for the site static files and the `master` branch is for source code.\n\n## ✨ FAQ\n\nIf you use [jekyll-last-modified-at](https://github.com/gjtorikian/jekyll-last-modified-at) plugin, you can configure the checkout action to fetch all commit history so that plugin could use the last Git commit date to determine a page's last modified date.\n\n```yaml\n- uses: actions/checkout@v3\n  with:\n    # The checkout action doesn't provide a way to get all commit history for a single branch\n    # So we use the magic number 2147483647 here which means infinite depth for git fetch\n    # See https://github.com/actions/checkout/issues/520, https://stackoverflow.com/a/6802238\n    fetch-depth: 2147483647\n```\n\nIf your site building needs some specific environments, here are some recipes\nfor you:\n\n```yaml\n# NodeJS\npre_build_commands: pacman -S --noconfirm nodejs npm\n\n# Python\npre_build_commands: pacman -S --noconfirm python\n\n# Gem RMagick\npre_build_commands: pacman -S --noconfirm imagemagick\n\n# Jekyll-Picture-Tag\npre_build_commands: pacman -S --noconfirm libvips lcms2 openjpeg2 libpng libwebp libheif imagemagick openslide libjxl poppler-glib\n```\n\nIf you prefer to deploy your site in SSH approach for better stability, you can\nalso creates a unique `SSH_PRIVATE_KEY` secret to use in your workflow:\n\n```yml\nssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}\n```\n\n__Note:__ SSH approach has higher priority than HTTP approach when you provide\nboth at the same time.\n\n## 🌱 Credits\n\n- [Jekyll](https://github.com/jekyll/jekyll) - A blog-aware static site generator in Ruby.\n- [actions/checkout](https://github.com/actions/checkout) - Action for checking out a repo.\n- [actions/cache](https://github.com/actions/cache) - Cache dependencies and build outputs in GitHub Actions.\n\n## ✍️  Contributing\n\nIssues 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.\n\nYou can start by [opening an issue](https://github.com/jeffreytse/jekyll-deploy-action/issues/new) describing the problem that you're looking to resolve and we'll go from there.\n\n## 🌈 License\n\nThis software is licensed under the [MIT license](https://opensource.org/licenses/mit-license.php) © JeffreyTse.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffreytse%2Fjekyll-deploy-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeffreytse%2Fjekyll-deploy-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffreytse%2Fjekyll-deploy-action/lists"}