GitHub Actions 是 GitHub 提供的一项功能,它使开发人员能够在其代码存储库中自动化地执行各种任务。无论是自动构建和测试代码,还是自动部署应用程序,GitHub Actions 都可以帮助开发团队提高效率,降低错误率。在本文中,我们将深入了解 GitHub Actions 的概念、常见用例和示例,并提供相关参考文档。
GitHub Actions 概念和术语
- Workflow(工作流程):工作流程是一组自动化任务的过程。它可以在 GitHub 存储库中触发和运行,允许开发人员根据需求定义代码的自动化流程。
- Action(动作):动作是执行特定任务的脚本或命令。它可以是单个任务或一组任务的集合,用于在工作流程中执行特定的操作,如构建、测试、部署等。
- Event(事件):事件是指 GitHub 存储库中发生的特定活动,例如推送代码、创建拉取请求、发布版本等。这些事件可以作为工作流程的触发器,当事件发生时,相应的工作流程将被触发执行。
- Runner(运行器):运行器是用于执行工作流程中任务的虚拟环境或物理机器。GitHub 提供了托管的运行器,也支持自托管的运行器,开发人员可以根据需要选择合适的运行器来执行他们的工作流程。
常见用例和示例
自动构建和测试
这是一个常见的用例,当代码推送到存储库时,自动触发工作流程来构建和测试代码。
name: Build and Test
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Build
run: make build
- name: Test
run: make test
自动部署到服务器
另一个常见的用例是当发布新版本时,自动将应用程序部署到服务器。
name: Deploy
on:
release:
types: [published]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Deploy to server
uses: easingthemes/ssh-deploy@v2
with:
server_ip: ${{ secrets.SERVER_IP }}
server_port: ${{ secrets.SERVER_PORT }}
username: ${{ secrets.SERVER_USERNAME }}
password: ${{ secrets.SERVER_PASSWORD }}
source: 'dist/'
target: '/var/www/myapp'
推送到 Amazon ECR 和 Alibaba Cloud Container Registry (ACR)
这个示例展示了如何将代码构建成 Docker 镜像,推送到 Amazon ECR 和 Alibaba Cloud Container Registry (ACR)。
name: Push to ECR and ACR
on:
push:
branches:
- main
jobs:
push_to_ecr:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
with:
registry: ${{ secrets.AWS_REGISTRY_URL }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Build and push Docker image
id: build-image
run: |
docker build -t ${{ secrets.AWS_REGISTRY_URL }}/my-image .
docker push ${{ secrets.AWS_REGISTRY_URL }}/my-image
push_to_acr:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Login to Alibaba Cloud
uses: aliyun/login-action@v1
with:
access-key-id: ${{ secrets.ALIYUN_ACCESS_KEY_ID }}
access-key-secret: ${{ secrets.ALIYUN_ACCESS_KEY_SECRET }}
region: ${{ secrets.ALIYUN_REGION }}
- name: Build and push Docker image
id: build-image-acr
run: |
docker build -t ${{ secrets.ACR_REGISTRY_URL }}/my-image .
docker login -u ${{ secrets.ACR_REGISTRY_USERNAME }} -p ${{ secrets.ACR_REGISTRY_PASSWORD }} ${{ secrets.ACR_REGISTRY_URL }}
docker push ${{ secrets.ACR_REGISTRY_URL }}/my-image
参考文档
- GitHub Actions 官方文档
- GitHub Marketplace
- 加速工作流程:使用缓存
以上是 GitHub Actions 的概念、常见用例和示例。通过利用这一功能,开发团队可以实现更高效的开发流程,提高代码质量和部署速度。如果您对 GitHub Actions 有任何疑问,请随时向我们提问!