skip to content
Wentao Zhang

自定义 action 让其他项目使用

/ 3 min read

自定义 action 让其他项目使用

背景

近期使用 issuesblog,突发奇想能不能将 issues blog 生成概览信息同步到项目的README.md中,再加上刚学了Rust,就准备来实现这个action,这里主要流程就是使用github api获取项目issues,再将issues生成概览信息,action 项目 关于代码实现比较简单,主要是记录怎么才能让其他项目使用。

配置 action.yml

action项目需要在根目录下建立一个action.yml,并且这个项目需要是使用者能访问。

name: 'blog-archive'
description: 'issues blog sync README.md Summary'
branding:
icon: 'activity'
color: 'white'
inputs:
api-github-token:
description: 'github api token'
required: true
default: ''
repo:
description: 'sync github issues repo name'
required: true
default: ''
owner:
description: 'sync github issues repo owner'
required: true
default: ''
git-user-name:
description: 'update user name'
required: true
default: ''
git-user-email:
description: 'update user email'
required: true
default: ''
runs:
using: "composite"
steps:
- run: echo "${{ github.action_path }}" >> $GITHUB_PATH
shell: bash
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Run blog-archive
run: |
cd ${{ github.action_path }}
cargo run -- ${{ inputs.api-github-token }} ${{ inputs.owner }} ${{ inputs.repo }}
ls
pwd
shell: bash
- name: Checkout code
uses: actions/checkout@v2
- name: sync README.md
shell: bash
run: |
pwd
ls
cat ${{ github.action_path }}/output.txt
cat ${{ github.action_path }}/output.txt > README.md
git config user.name ${{ inputs.git-user-name }}
git config user.email ${{ inputs.git-user-email }}
git add README.md
git commit -m "Update README.md with issues blog"
git push
  • 使用其他人的action原理就是把其他的action项目获取到自己项目工作流空间中执行
  • ${{ github.action_path }} 是action项目路径,确定执行文件路径是否正确
  • 其他项目使用只需要引入owner/repo@tag or branch,owner 是用户,repo 是仓库名,@后面可以版本号,也可以是分支,例如刚刚创建的action项目就是zhang-cn/blog-archive@main,在其他项目中action引入使用就可以。