GitHub Actions 持续集成 - 2. 将工程打包并上传至 Release

本文地址:blog.lucien.ink/archives/493

0. 摘要

之前挖了一个,慢慢补上。

上篇文章介绍了如何自动生成 Release 的内容,本文章旨在介绍如何借助 GitHub Actions 在 Release 时自动上传打包好的工程。

1. 现成的轮子

使用此 Action 可以将特定的文件上传至 release 中。

github.com/JasonEtco/upload-to-release

2. GitHub Actions YML 文件

.github/workflows/upload-to-release.yml

name: Go Release

on:
  release:
    types: [published]

jobs:

  release:
    if: github.repository == 'PasteUs/HelloCI'
    name: Build with go ${{ matrix.go_version }} on ${{ matrix.os }} and upload
    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        go_version: [1.13]
        os: [ubuntu-latest]

    steps:

      - name: Set up Go ${{ matrix.go_version }}
        uses: actions/setup-go@v1
        with:
          go-version: ${{ matrix.go_version }}
        id: go

      - name: Check out code into the Go module directory
        uses: actions/checkout@v1

      - name: Get dependencies
        run: |
          go get -v -t -d ./...
          if [ -f Gopkg.toml ]; then
              curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
              dep ensure
          fi

      - name: Build
        run: |
          go build -v -o main .

      - name: Gzip
        run: |
          mkdir hello-word-${{ matrix.os }}
          cp main hello-word-${{ matrix.os }}
          tar -czvf hello-word-${{ matrix.os }}.tar.gz hello-word-${{ matrix.os }}

      - name: Upload to release
        uses: JasonEtco/upload-to-release@master
        with:
          args: hello-word-${{ matrix.os }}.tar.gz application/octet-stream
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
最后修改:2020 年 02 月 10 日
谢谢老板!