Open3

AWS CodeBuild で Go プロジェクトの CI をする

zztkmzztkm

AWS CodeBuild で Go のプロジェクトの CI をやったので、記録する。

利用する Docker イメージ

CodeBuild は公式でいくつかの Docker イメージを提供していて、今回はその中から Amazon Linux 2023 を採用。採用理由は、本番環境が al2 だったから。

環境イメージに aws/codebuild/amazonlinux2-aarch64-standard:3.0 を設定すればOK

Buildspec

Point

  • Go 1.21.0 は公式イメージにインストールされていないので自分でインストールする必要がある
version: 0.2

env:
  variables:
    GOLANG_21_VERSION: "1.21.0"
phases:
  install:
    # runtime-versions:
    #   golang: 1.20
    commands:
      - wget https://go.dev/dl/go${GOLANG_21_VERSION}.linux-arm64.tar.gz -O /tmp/golang.tar.gz
      - tar -xzf /tmp/golang.tar.gz -C /tmp
      - mv /tmp/go /usr/local/go21
      - rm -rf /usr/local/go
      - ln -s /usr/local/go21 /usr/local/go
  build:
    commands:
      - make build
      - make lint
      - make test

install phase は 公式 Docker イメージの Dockerfile を参考にした(チェックサムの検証は省いたが、やった方が良いです...)。

参考情報

zztkmzztkm

Go 1.20 の場合

  • Go 1.20 & aws/codebuild/amazonlinux2-aarch64-standard:3.0 環境の場合も、Buildspec の工夫が必要。
  • Go 1.20 の symlink が間違っているので Buildspec 内ではりなおす
version: 0.2

phases:
  install:
    commands:
      - rm -rf /usr/local/go
      - ln -s /usr/local/go20 /usr/local/go
  build:
    commands:
      - make build
      - make lint
      - make test

修正するPRはすでに上がっているので待ち
https://github.com/aws/aws-codebuild-docker-images/pull/655