前言此文以node项目为例,目录存在package.json
,其他项目如果参考本教程需自行创建json文件用于记录当前版本。
先来看看actions官方提供的发布demo
1 2 3 4 5 6 7 8 9 10 11 - name: 创建GitHub Release id: create_release uses: actions/create-release@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: tag的名称 release_name: 发布的名字 body: 发布的内容 draft: false prerelease: false
以上几个需要我们自己填写的只有tag_name
、release_name
、body
。因此我们只需要动态获取这三个变量即可实现按照我们的需求进行发布。
获取tag_nametag_name一般指的是版本号,也就是需要在我们的JSON文件中读取的信息。
1 2 3 4 5 6 - name: 读取当前版本号 id: version uses: ashley-taylor/read-json-property-action@v1.0 with: path: ./package.json property: version
path
表示Json文件的路径
property
json文件里的属性名。
所以上述步骤表示读取./package.json
文件里的version
字段,也就是开头JSON示例中1.1.1
值。
获取release_name也就是发布release的名称,一般为xxx-
版本号这样的格式,因此我们可以直接用版本号作为发布名。
获取body由于body的内容较多,因此我们单独创建一个文件用于记录本次发布的内容。
1 2 3 4 5 - name: 读取描述文件 id: description uses: juliangruber/read-file-action@v1 with: path: ./description.txt
这样下来我们的三个字段就全部获取完了。接下来只需要发布即可
发布release1 2 3 4 5 6 7 8 9 10 11 - name: 创建GitHub Release id: create_release uses: actions/create-release@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{steps.version.outputs.value}} release_name: v${{steps.version.outputs.value}} body: ${{steps.description.outputs.content}} draft: false prerelease: false
${{steps.version.outputs.value}}
可以输出获取json文件时读取到的值,${{steps.description.outputs.content}}
可以输出获取文本内容时读取到的值。
完整代码(含NPM包发布)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 name: Node.js Package on: push: branches: - master jobs: publish-npm: runs-on: ubuntu-latest strategy: matrix: node-version: [12. x ] steps: - name: 1 . 检查master分支 uses: actions/checkout@master - name: 2 . 设置Node.js uses: actions/setup-node@master with: node-version: ${{ matrix.node-version }} - name: 3 . 缓存 uses: actions/cache@v2 id: cache-dependencies with: path: node_modules key: ${{runner.OS}}-${{hashFiles('**/yarn.lock')}} - name: 4 . 安装插件 if: steps.cache-dependencies.outputs.cache-hit != 'true' run: | export TZ='Asia/Shanghai' yarn install - name: 5 . 生成文件 run: | export TZ='Asia/Shanghai' node index.js - name: 6 . 读取当前版本号 id: version uses: ashley-taylor/read-json-property-action@v1.0 with: path: ./package.json property: version - name: 7 . 读取描述文件 id: description uses: juliangruber/read-file-action@v1 with: path: ./description.txt - name: 8 . 发布NPM包 run: | npm config set //registry.npmjs.org/:_authToken=$NPM_TOKEN npm publish env: NPM_TOKEN: ${{secrets.NPM_TOKEN}} - name: 9 . 创建GitHub Release id: create_release uses: actions/create-release@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{steps.version.outputs.value}} release_name: v${{steps.version.outputs.value}} body: ${{steps.description.outputs.content}} draft: false prerelease: false - name: 10 . 刷新缓存 run: | curl https://purge.jsdelivr.net/npm/iemotion-pic@latest/dist/name.json