CircleCI

使用 CircleCI(一种持续集成和交付工具)可以快速构建、测试和部署由 Jekyll 生成的网站。CircleCI 支持 GitHubBitbucket,你可以免费使用开源或私有存储库来开始使用。

1. 在 CircleCI 上关注你的项目

要在 CircleCI 上开始构建你的项目,你只需从 CircleCI 网站“关注”你的项目

  1. 访问“添加项目”页面
  2. 从左侧的 GitHub 或 Bitbucket 选项卡中,选择一个用户或组织。
  3. 在列表中找到你的项目,然后单击右侧的“构建项目”。
  4. 第一个构建将自动开始。你可以通过在存储库的根目录中创建一个 .circleci/config.yml 文件来开始告诉 CircleCI 如何构建你的项目。

2. 依赖项

管理 Jekyll 项目(使用或不使用 CircleCI)依赖项的最简单方法是通过 Gemfile。你希望在 Gemfile 中拥有 Jekyll、任何 Jekyll 插件、HTML 校对器以及你正在使用的任何其他 gem。别忘了对 Gemfile.lock 进行版本控制。这是一个示例 Gemfile

source 'https://rubygems.org.cn'

ruby '2.7.4'

gem "jekyll"
gem "html-proofer"
    - step:
       run: bundle install

3. 测试

可以运行的最基本测试是查看 jekyll build 是否真的有效。这是一个障碍,如果你要在生成的网站上运行其他测试,它是一个依赖项。因此,我们将在 dependencies 阶段通过 Bundler 运行 Jekyll。

    - step:
        run: bundle exec jekyll build

HTML 校对器

在构建你的网站后,运行测试来检查有效的 HTML、损坏的链接等非常有用。市面上有几种工具,但 HTML 校对器 在 Jekyll 用户中很受欢迎。我们将在 test 阶段使用一些首选标志运行它。查看 html-proofer 自述文件 了解所有可用标志,或在本地运行 htmlproofer --help

    - step:
        run: bundle exec htmlproofer ./_site --check-html --disable-external

完整的示例 .circleci/config.yml 文件

下面的示例 .circleci/config.yml 演示了如何将 Jekyll 项目部署到 AWS。要使其正常工作,您首先需要设置 S3_BUCKET_NAME 环境变量

workflows:
  test-deploy:
    jobs:
      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: master
version: 2.1
jobs:
  build:
    docker:
      - image: cimg/ruby:2.7.4
    environment:
      BUNDLE_PATH: ~/repo/vendor/bundle
    steps:
      - checkout
      - restore_cache:
          keys:
            - rubygems-v1-{{ checksum "Gemfile.lock" }}
            - rubygems-v1-fallback
      - run:
          name: Bundle Install
          command: bundle check || bundle install
      - save_cache:
          key: rubygems-v1-{{ checksum "Gemfile.lock" }}
          paths:
            - vendor/bundle
      - run:
          name: Jekyll build
          command: bundle exec jekyll build
      - run:
          name: HTMLProofer tests
          command: |
            bundle exec htmlproofer ./_site \
              --allow-hash-href \
              --check-favicon  \
              --check-html \
              --disable-external
      - persist_to_workspace:
          root: ./
          paths:
            - _site
  deploy:
    docker:
      - image: cimg/python:3.9.1
    environment:
      S3_BUCKET_NAME: <<YOUR BUCKET NAME HERE>>
    steps:
      - attach_workspace:
          at: ./
      - run:
          name: Install AWS CLI
          command: pip install awscli --upgrade --user
      - run:
          name: Upload to s3
          command: ~/.local/bin/aws s3 sync ./_site s3://$S3_BUCKET_NAME/ --delete --acl public-read

问题?

本指南全部开源。如果您有修复,请继续 编辑,如果您遇到问题需要帮助,请 寻求帮助。CircleCI 还有一个 在线社区 提供帮助。