下面是“自定义 Github Action 库实战详解”的完整攻略。
什么是 Github Action?
Github Action 是 Github 提供的一款自动化工具,通过编写工作流程(workflow),可以实现对项目代码的自动化构建、测试、发布等操作。Github Action 的使用不需要离开 Github 界面,因此非常适合开发者与开源贡献者进行无缝协作。
如何自定义 Github Action 库?
Github 官方提供了大量的官方 Action 库供我们使用,但有时候官方库中并未包含我们需要的特定功能,这时需要我们自己创建和维护一个自定义的 Action 库。
以下是自定义 Github Action 库的步骤:
- 创建一个 public 的 Github 仓库并初始化:
mkdir my-action
cd my-action
git init
touch README.md
- 创建 action 文件夹并在里面编写自己的 action:
mkdir action
cd action
touch sub-action.yml
在 sub-action.yml 文件中编写自己的 action,例如:
name: sub-action
description: My Action.
inputs:
name:
description: 'The name of the resource'
required: true
default: 'World'
runs:
using: 'docker'
image: 'Dockerfile'
args:
- "${{ inputs.name }}"
以上 action 会启动一个 Docker 容器并在容器中运行 Dockerfile,执行 args
中的命令。
- 在主目录下创建 Dockerfile:
touch Dockerfile
在 Dockerfile 中指定自己的运行环境,例如:
FROM node:8-slim
RUN apt-get update && \
apt-get install -y \
curl \
&& rm -rf /var/lib/apt/lists/*
ENV HOME /home/my-action
RUN mkdir -p $HOME
WORKDIR $HOME
COPY . /home/my-action
ENTRYPOINT [ "/bin/bash" ]
- 在主目录下创建 action.yml 文件, 指定自己的 action:
touch action.yml
在 action.yml 文件中指定自己的 action 和需要的 inputs,例如:
name: 'My Action'
description: 'My first action'
inputs:
name:
description: 'The name of the resource'
required: true
default: 'World'
runs:
using: 'docker'
image: 'Dockerfile'
args:
- "${{ inputs.name }}"
- 将代码推送到 Github 仓库:
git add .
git commit -m "first commit"
git remote add origin git@github.com:your-name/my-action.git
git push -u origin master
- 现在可以在自己的项目中使用该 Action 了。在项目的 .github/workflows 文件夹下创建一个文件并指定使用自己的 Action:
name: My Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: My Action
uses: your-name/my-action@master
with:
name: 'Github'
以上示例代码中,name
指定 Github Action 中需要的参数。
示例说明
针对以上步骤,这里提供两个使用示例:
示例1:使用自定义 action 完成项目的 depoly
- 在自己的仓库里新建一个
deploy.yml
文件,指定以下步骤:
name: Deploy
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: '3.x'
- name: Install Dependencies
run: |
pip install -r requirements.txt
- name: Build and Deploy
uses: your-name/my-action@master
with:
name: 'production'
args: |
fab build
fab deploy
以上示例代码中使用到了自定义的 my-action
,该 action 通过 sub-action.yml
启动一个 Docker 容器并在容器中运行 Fabric。
- 提交代码并触发 Action,实现项目的部署。
示例2:使用自定义 action 完成 API 测试
- 在自己的仓库里新建一个
test.yml
文件,指定以下步骤:
name: Test
on:
push:
paths:
- '**.py'
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: '3.x'
- name: Install Dependencies
run: |
pip install -r requirements.txt
pip install pytest
- name: Run Tests
uses: your-name/my-action@master
with:
name: 'test'
args: |
pytest
以上示例代码中,使用到了自定义的 my-action
,该 action 通过 sub-action.yml
启动一个 Docker 容器并在容器中运行 pytest。
- 提交代码并触发 Action,使用自定义的 action 进行 API 测试。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:自定义 Github Action 库实战详解 - Python技术站