在本章节中,我们将详细介绍如何使用 GitHub Actions 来自动化构建、测试和部署你的 Ruby 应用程序。通过本章的学习,你将能够理解 GitHub Actions 的基本概念,并掌握如何配置和自定义工作流来满足特定需求。
准备工作
创建一个新的 GitHub 仓库
首先,你需要一个 GitHub 账户,并且需要创建一个新的仓库。这可以是一个公开的或私有的仓库,取决于你的项目需求。
初始化本地项目
在你的本地机器上初始化一个新的 Git 仓库:
mkdir my-ruby-app cd my-ruby-app git init
然后,添加一个简单的 Gemfile 文件来管理依赖项:
source 'https://rubygems.org' gem 'rails', '~> 6.0'
安装这些依赖项:
bundle install
GitHub Actions 基础
什么是 GitHub Actions?
GitHub Actions 是一个持续集成和持续部署 (CI/CD) 工具,它允许你在代码推送到 GitHub 仓库时自动执行一系列任务。你可以为不同的事件(如推送、拉取请求等)定义工作流。
工作流文件
工作流文件是定义工作流的 YAML 文件,通常存储在仓库的 .github/workflows/ 目录下。例如,你可以创建一个名为 ruby.yml 的文件来定义你的 Ruby 项目的工作流。
创建第一个工作流
添加工作流文件
在你的项目根目录下创建 .github/workflows/ruby.yml 文件,并添加以下内容:
// www.javascriptcn.com code example
name: Ruby CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
- name: Install dependencies
run: bundle install --jobs 4 --retry 3
- name: Run tests
run: bundle exec rspec解释工作流文件
- name: 定义了工作流的名称。
- on: 指定了触发工作流的事件。在这个例子中,我们选择了
push和pull_request事件,当它们发生在main分支上时触发。 - jobs: 定义了一系列需要执行的任务。每个任务都是一个独立的单元,可以并行或顺序运行。
- steps: 每个任务可以包含多个步骤,每个步骤都是一个具体的动作。
配置环境变量
有时,你可能希望在工作流中使用环境变量。GitHub Actions 支持设置环境变量,这些变量可以在整个工作流中访问。
设置环境变量
在 .github/workflows/ruby.yml 文件中,你可以添加环境变量:
env: RAILS_ENV: test
使用环境变量
你可以在步骤中引用这些环境变量:
- name: Run tests
run: bundle exec rspec --environment ${{ env.RAILS_ENV }}自定义构建矩阵
如果你的项目需要在多个 Ruby 版本或操作系统上进行测试,可以使用构建矩阵功能。
定义构建矩阵
修改 ruby.yml 文件以包含构建矩阵:
// www.javascriptcn.com code example
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
ruby-version: [2.6, 2.7]
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version }}
- name: Install dependencies
run: bundle install --jobs 4 --retry 3
- name: Run tests
run: bundle exec rspec在这个例子中,我们将针对两种不同的 Ruby 版本运行测试,确保我们的应用程序在不同版本上都能正常工作。
结语
通过以上步骤,你应该已经掌握了如何配置和定制 GitHub Actions 来自动化 Ruby 项目的构建、测试和部署流程。接下来,你可以根据自己的项目需求进一步探索更多高级特性,比如使用自定义容器、多阶段构建等。
继续深入学习 GitHub Actions 的其他功能,以提高你的自动化能力,并使你的开发流程更加高效和可靠。