自定义 action 让其他项目使用

47 阅读1分钟

背景

近期使用 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引入使用就可以。