3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Goで作った自作ツールをGithubActionsでクロスプラットフォーム向けに自動リリースするテンプレ

Last updated at Posted at 2020-04-12

Goのクロスコンパイルばり便利

Goの便利な機能の一つにクロスコンパイルがあります。
同OSでの実行ファイルはもちろんのこと、例えばMac上でWindows用のexeファイルを作ったりできます。
GithubActionsと連携することで、さらに楽にクロスプラットフォーム向けに実行ファイルをリリースできるので
やり方を紹介します。

前提

手順

  • プロジェクト直下に以下の.goreleaser.ymlを配置。
.goreleaser.yml
project_name: sample # 任意の名前を設定する
env:
  - GO111MODULE=on
before:
  hooks:
    - go mod tidy
builds:
  - main: .          # mainのディレクトリを指定する
    binary: sample   # 任意の名前を設定する
    goos:
      - windows
      - darwin
      - linux
    goarch:
      - amd64
    env:
      - CGO_ENABLED=0
archives:
  - name_template: '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
    replacements:
      darwin: darwin
      linux: linux
      windows: windows
      386: i386
      amd64: x86_64
    format_overrides:
      - goos: windows
        format: zip
    files:       # zipやtarに実行ファイル以外に含ませたいファイルがあれば設定する
      - config.ini
      - README.md
release:
  prerelease: auto
  • プロジェクト直下に.github/release.ymlを配置する。
.github/release.yml
name: release # 任意の名前を設定する
on:
  push:
    tags:     # 任意のtag この例ではv0.0.0のような形でtagを切るとReleaseされる
    - "v[0-9]+\\.[0-9]+\\.[0-9]+"
jobs:
  goreleaser:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v1
        with:
          fetch-depth: 1
      - name: Setup Go
        uses: actions/setup-go@v1
        with:
          go-version: 1.13
      - name: Run GoReleaser
        uses: goreleaser/goreleaser-action@v1
        with:
          version: latest
          args: release --rm-dist
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  • (上の2ファイルをPushした後)gitコマンドを実行
git tag v0.1.0
git push origin v0.1.0

サンプル

こちら
(release.ymlのパスが.github/workflows/release.ymlになっているけどあまり気にせず)

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?