Raspberry Pi上で動かすgolangアプリのGithub Actionsを使ったCI/CD化にむけて、
golangで書いたアプリケーションをRaspberry Pi用にもクロスビルドしてアップロードできるようにしたい。
- golangアプリのクロスビルド
- ビルドした成果物のgithubアップロード
をやってみる。
golangアプリのクロスビルド
Github Actionsでgoのクロスビルドをさせるにはgox使うのが簡単だった。
公式のGo ビルドworkflowにgoxのgo getと、goxを利用したビルドステップを追加すれば良い。
- name: Set up gox
run: go get github.com/mitchellh/gox
- name: Cross build
run: |
gox -osarch="linux/arm linux/amd64 darwin/amd64 windows/amd64" -ldflags "-X main.version=`git rev-parse --short HEAD`" ./cmd/elexporter/
この場合は、ラズパイ向けのlinux/armのほか、macやwindows用にもビルドしている。
ビルドした成果物のgithubアップロード
ビルドしたバイナリなどの成果物をgithub上にアップロードするには、公式のUpload-Artifactアクションを使えば良い。
訂正。このUpload-Artifactアクションではアクション間でファイルを共有したい場合に使うためのもので、
デプロイするさいに外部からダウンロードしたい場合は、Releaseとして成果物をアップロードする必要があったよう。
下記はそのUpload-Artifactアクションの使い方。
上記に引き続き、upload-artifactアクションを使ったアップロードステップを追加。
- name: Upload
uses: actions/upload-artifact@v2
with:
name: elexporter
path: ./elexporter_*
これで、下記のようにGithub Actions結果画面にzipで固められたファイルがアップロードされるようになった。
Github Actions結果画面
コメント
[…] […]