您可能听说过持续集成和持续交付。这两个术语是顶级公司遵循的标准做法,以使他们的软件发布更小、更快、更可靠。
那么什么是 Github Actions?
它是一个 CI/CD 工具,可以非常轻松地自动化软件工作流程。有几个工具,如 Jenkins、CircleCI、TeamCity、TravisCI,可以帮助您自动化您的工作流程,但是在 Github 上为您的存储库设置 Github Actions 非常容易。我们将在本文中讨论如何开始使用它。
入门
当您在 Github 上打开存储库时,您现在将看到一个名为“Actions”的新选项卡。由于我们还没有任何操作设置,因此页面看起来与此类似。
我们将首先创建一个常用于配置的YAML文件。我们可以通过单击“操作”选项卡中的“自行设置工作流程”链接(参见上面的屏幕截图)或在您最喜欢的 IDE 中创建一个文件来执行此操作。我们首先必须在存储库的根目录中创建.github/workflows文件夹,在该文件夹中,我们将创建一个名为first-workflow.yml 的文件。
在这个文件中,我们将定义我们需要执行的操作。我们将定义 3 个操作,包括运行单元测试、构建 apk 文件以及将 apk 文件上传到 Github 服务器。
现在打开first-workflow.yml 并粘贴以下代码
# This is a basic workflow to help you get started with Actions
name: Android CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
test:
name: Run Unit Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Unit tests
run: bash ./gradlew test --stacktrace
build:
name: Generate APK
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build Debug APK
run: bash ./gradlew :app:assembleDebug
- name: Upload APK
uses: actions/upload-artifact@v2
with:
name: App
path: ${{ github.workspace }}/app/build/outputs/apk/debug/app-debug.apk
我们将一一介绍每一行的含义。
首先,我们用以下行命名我们的工作流程。
name: Android CI
我们可以在.github/workflows 目录中有多个工作流文件,每个工作流在不同的容器上并行运行。
接下来,我们通过以下几行提供有关何时触发此工作流的信息
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
在这里,我们定义当一些提交被推送到主分支或当对主分支提出一些拉取请求时,这个工作流应该运行。
现在我们定义工作。顾名思义,作业将执行一些操作。我们定义了 2 个工作,即测试和构建
让我们看看第一份工作:测试
test:
name: Run Unit Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Unit tests
run: bash ./gradlew test --stacktrace
我们将此作业命名为“运行单元测试”,键名: . 在此之后,我们定义该作业将在哪个虚拟机中运行。我们可以从“ubuntu”、“windows”或“macOS”中选择一个虚拟机。这里选择在最新版本的 Ubuntu(基于 Linux 的操作系统)上运行此作业,并带有关键运行。
现在我们使用步骤定义要在此作业中执行的步骤:
-
第一步检查我们已定义操作的存储库。
-
在第二步中,我们设置 Java 版本 8 来运行单元测试。我们通过actions/setup-java@v1来做到这一点。这是 Github 服务器用来为我们设置 Java 环境的预定义操作。
-
在第三步中,我们使用 gradle wrapper 命令行工具使用run: action 运行测试。
现在,当您提交此文件并将其推送到主分支时,您可以看到工作流开始运行,如果您的所有单元测试都通过了,那么您应该会看到类似这样的内容。
万岁!!!您的第一个工作流程已启动并正在运行。
现在让我们看看第二个工作:构建
build:
name: Generate APK
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build Debug APK
run: bash ./gradlew :app:assembleDebug
- name: Upload APK
uses: actions/upload-artifact@v2
with:
name: App
path: ${{ github.workspace }}/app/build/outputs/apk/debug/app-debug.apk
它以作业名称“Generate APK”开头,我们定义它在哪个虚拟机上运行,就像我们为测试作业所做的那样。
现在我们定义步骤:
-
检查存储库并设置 java 的方式与我们之前所做的相同。我们再次定义了它,因为该作业将在与第一个并行的不同容器中运行。
-
现在我们使用 gradle wrapper 命令行工具使用run: action 构建 APK。
-
接下来,我们使用预定义的操作actions/upload-artifact@v2上传 APK 。在这里,我们定义将在 Artifacts Github 页面上显示的工件的名称以及在上述步骤中生成 APK 的路径。
提交此文件并将其推送到 master 分支后,工作流将开始执行,在构建和上传 APK 后,您会看到类似这样的内容。
为了查看和下载生成和上传的 APK,我们可以单击工作流名称(在我们的例子中是“Android CI”)。我们应该看到以下屏幕。
我们可以在 Artifacts 标题下看到名为“App”的链接。如果我们单击它,则会下载一个包含 APK 的 zip 文件。
而已。您以一种非常简单的方式定义了 CI/CD 流程,这将使您的软件开发更快、更可靠。
我希望你已经学会了如何设置和使用 Github Actions。
作者:Nitesh Tarani
链接:https://blog.mindorks.com/github-actions-for-android
网友评论