355 Views
December 10, 24
スライド概要
2024/12/10 Go Connect #4 LT発表資料
Web Application Developer / kintone CERTIFIED App Design Specialist 2020 / kintone CERTIFIED Customization Specialist 2020
GitHub ActionsでGoを ソースコードからインストール 2024年12月10日 Go Connect #4 ライトニングトーク発表資料 松尾篤
松尾 篤 @a-matsuo.bsky.social @matsuo̲atsushi
GoはOSS • BSDスタイルのライセンス • Goのソースコードは公開されている https://go.dev/LICENSE
Goのインストール方法 • 各プラットフォーム向けに用意されてい るビルド済みバイナリをダウンロードす る方法 • ソースコードからインストールする方法 今回はこちらの方法を紹介 ➡
公式ドキュメント • Installing Go from Source https://go.dev/doc/install/source
Goのインストールには Goが必要
Goのインストールには Goが必要
インストールにはGoが必要 • "The Go toolchain is written in Go. To build it, you need a Go compiler installed." https://go.dev/doc/install/source
インストールにはGoが必要 The minimum version of Go required depends on the target version of Go: • Go <= 1.4: a C toolchain. • 1.5 <= Go <= 1.19: a Go 1.4 compiler. • 1.20 <= Go <= 1.21: a Go 1.17 compiler. • 1.22 <= Go <= 1.23: a Go 1.20 compiler. • Going forward, Go version 1.N will require a Go 1.M compiler, where M is N-2 rounded down to an even number. Example: Go 1.24 and 1.25 require Go 1.22.
Docker leの一例 FROM --platform=linux/x86̲64 ubuntu:24.04 RUN apt update && apt install -y curl tar make bash git build-essential WORKDIR /root RUN curl -LO https://go.dev/dl/go1.22.10.linux-amd64.tar.gz && tar -C / tmp -xzf go1.22.10.linux-amd64.tar.gz && rm -f /root/go1.22.10.linuxamd64.tar.gz && mv /tmp/go go1.22 WORKDIR /root/go/src/go.googlesource.com/go RUN git clone https://go.googlesource.com/go goroot && cd goroot && git checkout release-branch.go1.23 && cd src && export GOROOT̲BOOTSTRAP=/root/go1.22 && ./all.bash RUN cp -pr /root/go/src/go.googlesource.com/go/goroot /usr/local/go fi RUN /usr/local/go/bin/go version
GitHubでの活用例 • Docker le 例)https://github.com/emic/fmcsadmin/blob/ 4958fdcc0830802b513ca838da8466c1cfb74852/Docker le • GitHub Actionsのワークフローでコンテナイメージを GitHub Container registryに保存 例)https://github.com/emic/fmcsadmin/blob/ 4958fdcc0830802b513ca838da8466c1cfb74852/.github/work ows/publish.yml#L33-L39 • コンテナイメージをpullしてビルドしたGoを利用(ビルドし たGoでビルドしたGossを使ってCI上でテストを実行) fl fl fi fi 例)https://github.com/emic/fmcsadmin/blob/ 4958fdcc0830802b513ca838da8466c1cfb74852/.github/work ows/go.yml#L55-L64
Demo
setup-go • 通常はGitHub Actionsのワークフロー でGo環境を用意する場合にはsetup-go アクションを使えばOK https://github.com/actions/setup-go
関連リンク • Goのライセンス https://go.dev/LICENSE • Installing Go from Source https://go.dev/doc/install/source • Gossによるサーバー構成のテスト https://www.docswell.com/s/matsuo̲atsushi/ ZP96J1-server-validation-with-goss