Личный блог с мыслями и наблюдениями

Github Actions и автоматическое создание релизов на Go

Если вам как и мне надоело делать релизы на Github для тех кто хочет попробовать последние изменения в коде, то можно автоматизировать это средствами самого Github, а именно Github Actions.

Следующий код при коммите создаст (или обновит релиз с именем/тэгом latest) и выложит в него собранные бинарники под linux/os x/arm/windows.

name: Release on commit or tag
on:
  push:
    branches:
    - master
    - release/*
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Set up Go 1.13
        uses: actions/setup-go@v1
        with:
          go-version: 1.13

      - name: Check out source code
        uses: actions/checkout@master

      - name: Build OS X binary
        run: GOOS=darwin GOARCH=amd64 go build -o $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-darwin64 -a -ldflags '-s -w' .
        
      - name: Build Linux binary
        run: GOOS=linux GOARCH=amd64 go build -o $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-linux64 -a -ldflags '-s -w' .
     
      - name: Build ARM binary
        run: GOOS=linux GOARCH=arm GOARM=6 go build -o $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-arm -a -ldflags '-s -w' .
        
      - name: Build Windows binary
        run: GOOS=windows GOARCH=amd64 go build -o $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2).exe -a -ldflags '-s -w' .
        
      - name: Install olsu
        run: wget https://github.com/Telling/olsu/releases/download/v0.1.0/olsu-linux-amd64.zip && unzip olsu-linux-amd64.zip && chmod +x olsu-linux-amd64 && pwd && ls -la
        
      - name: Create or update release
        env:
          OLSU_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OLSU_DELETE_RELEASE: yes
        run: ./olsu-linux-amd64 -o $(echo $GITHUB_REPOSITORY | cut -d "/" -f 1) -r $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2) "Latest release" "latest" "Automatic release" $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-darwin64 $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-linux64 $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)-arm $(echo $GITHUB_REPOSITORY | cut -d "/" -f 2).exe
27.09.2019   техническое   github   go