様々な CIツールの設定方法を試してみた
概要
CI の比較をする機会があり、各種設定ファイルを作って CI を回してみました。
対象
環境
- GitHub の Public Repository
- Go の build/test
設定
CircleCI
料金
実行コンテナ数ベースの月額料金
https://circleci.com/pricing/
補足: β 版ではあるが従量課金制の導入もあり(https://circleci.com/pricing/usage/)
ビルドファイル
.circleci/config.yml
version: 2
jobs:
build:
docker:
- image: circleci/golang:1.12
working_directory: /tmp/app
environment:
TEST_RESULT: /tmp/test-results
steps:
- checkout
- run: mkdir -p ${TEST_RESULT}
- run:
name: Unit Test
command:
PACKAGE_NAMES=$(go list ./... | circleci tests split --split-by=timings --timings-type=classname)
gotestsum --junitfile ${TEST_RESULT}/gotessum-report.xml -- ${PACKAGE_NAMES}
- run: make build
- save_cache:
key: go-mod-v4-{{ checksum "go.mod" }}
paths:
- "/go/pkg/mod"
- store_artifacts:
path: /tmp/test-results
destination: raw-test-output
- store_test_results:
path: /tmp/test-results
workflows:
version: 2
build-workflow:
jobs:
- build
メリット
- サンプルの丁寧なビルドファイルが用意されている
- Docker ベースで実行されている
- GitHub との連携がスムーズ
- GitHub or Bitbucket アカウントで登録する
- OSS の場合は全 4 コンテナを利用可能
デメリット
- 1.0 -> 2.0 への移行が必要
- 1.0 系の記事が多く注意が必要
Travis CI
料金
並行ジョブ数に応じた月額料金
https://travis-ci.com/plans
ビルドファイル
.travis.yml
matrix:
include:
- language: go
go:
- 1.11.x
- 1.12.x
script:
- make test-cover
メリット
- OSS の場合は無料
- 複数のプログラムバージョンに対するテストの実施が簡単(matrix test)
- GitHub との連携がスムーズ
デメリット
- 最低価格が若干高め
- \$129/month
AWS CodeBuild
料金
従量課金制
https://aws.amazon.com/jp/codebuild/pricing/
ビルドファイル
buildspec.yml
version: 0.2
phases:
install:
runtime-versions:
golang: 1.12
commands:
- echo 'Entered install ...'
- apt-get update -y
build:
commands:
- echo 'Entered build ...'
- make build
- make test-cover
artifacts:
files:
- "./ci-test"
- "./coverage.html"
name: ci-test-$(date +%Y-%m-%d)
メリット
- 利用分の従量課金制
- Build 数に応じてスケーリングして実行可能
- GitHub からの WebHook を AWS コンソール上から設定できる
デメリット
- OSS の場合も同様に料金がかかる
Azure Pipelines
料金
ユーザー数ごとの月額料金制
https://azure.microsoft.com/en-us/pricing/details/devops/azure-devops-services/
ビルドファイル
azure-pipelines.yml
trigger:
- master
variables:
GOPATH: "$(system.defaultWorkingDirectory)/gopath"
stages:
- stage: build
jobs:
- job: go
pool:
vmImage: "ubuntu-latest"
steps:
- script: |
go build
displayName: "go build"
- script: |
go test -v -cover -coverprofile=c.out
go tool cover -html=c.out -o coverage.html
displayName: "go test"
- stage: deploy
# exec only master branch
condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))
jobs:
- job: deploy
pool:
vmImage: "ubuntu-latest"
steps:
- script: |
echo 'Deploy....'
displayName: "deploy"
メリット
- OSS の場合は 10 hosts まで無料
- 異なるベースイメージで複数のジョブを同時に実行可能
デメリット
用途別の選択
(ここは主観が主です)
OSS
Azure Pipelines
ベースイメージを分けられるので、複数の環境があるリポジトリの場合に便利のためTravisCI or Circle CI
有料利用
最終的に AWS 上のリソースを作成する場合
-> AWS CodeBuild
料金も安くアクセスキー等を AWS 外に出さなくても良いため
その他
-> Circle CI
参考
Author And Source
この問題について(様々な CIツールの設定方法を試してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/m_green14/items/1cb499fe7fee89dd44e7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .