ã¯ããã«
ä»äºã§circleciããªãã¨ãªã¼ã使ã£ã¦ãã¾ãã
使ãããªããããªã£ãã®ã§æ¹ãã¦å人ã§ããããã試ãã¦ã¿ãã¡ã¢ã§ãã
ã¢ã¸ã§ã³ã
- CircleCIã¨ã¯
- CIã£ã¦ãªããã
- CircleCIã£ã¦ãªããã
- CircleCIã®ç¹å¾´
- CircleCIã®æé
- CircleCIã«å¿ è¦ãªãã®
- CircleCIã使ã£ã¦ã¿ã
- CircleCI/githubã®é£æºã確èªãã
1. CircleCIã¨ã¯
ããã§ã¯CircleCIã£ã¦ãããªãã®ï¼ã¨ããããããªå 容ãç°¡åã«ã¾ã¨ãã¦ããã¾ãã
CIã£ã¦ãªããã
CI(continuous integration: ç¶ç¶çã¤ã³ãã°ã¬ã¼ã·ã§ã³)ã¨ã¯ãªãããã¨ããã®ã¯ç¥ã£ã¦ãåæã§ããä¸å¿è¼ãã¦ããã¾ãã
å®å®ã®wikipediaããå¼ç¨..
CIï¼è±: continuous integrationï¼ã¨ã¯ã主ã«ããã°ã©ãã¼ã®ã¢ããªã±ã¼ã·ã§ã³ä½ææã®å質æ¹åãç´æã®ç縮ã®ããã®ç¿æ £ã®ãã¨ã§ããã
ã¨ã¯ã¹ããªã¼ã ã»ããã°ã©ãã³ã° (XP) ã®ãã©ã¯ãã£ã¹ã®ä¸ã¤ã§ãç義ã«ã¯ãã«ãããã¹ãã
ã¤ã³ã¹ãã¯ã·ã§ã³ãªã©ãç¶ç¶çã«å®è¡ãã¦ãããã¨ãæå³ãã[1]ã
ç¹ã«ã1990年代å¾å以éã®éçºã«ããã¦ã¯ãç¶ç¶çã¤ã³ãã°ã¬ã¼ã·ã§ã³ããµãã¼ãããã½ããã¦ã§ã¢ã使ç¨ããå¾åãå¼·ã¾ã£ã¦ãããå¼ç¨: wikipedia
ããã¡ãã£ã¨ãããããã説æã¯ä»¥ä¸ã®ã¹ã©ã¤ãã®P6ãããããããã£ãã§ãã
ãã¡ããå¼ç¨ããã¦é ãã¾ãã
- CI(ç¶ç¶çã¤ã³ãã°ã¬ã¼ã·ã§ã³)
- ã³ã³ãã¤ã«/ãã¹ãã¨ãã£ããã«ãå¦çãé »ç¹ã«ç¹°ãè¿ãã㨠ã§åé¡ã®æ©æçºè¦ãå質æ¹åãç®æãææ³
- CIããã¨å¬ãããã¨
- ãã°ã®æ©æçºè¦
- ãã¼ã«ã«ã§ãã¹ããããã®ããã£ããå¿ãã¦ãCIã§ãã¹ããè½ã¡ããã¨ãæ¤ç¥ã§ãã
- ä»®æ³ç°å¢(CirlceCIã®VM)ã¨ããå ±éã®ç°å¢ã§ãã¹ããã§ãã -ãèªåã®ãã¼ã«ã«ç°å¢ã§ã¯ãã¹ããéã£ããã©ã使 ãä»ã®äººã®ç°å¢ã§ã¯ãã¹ããè½ã¡ããã¨ããåé¡ãé²ãããåå ã®è¿½æ±ããããã
å¼ç¨: CircleCIãåæã«ç´¹ä»ã»å®£ä¼ + ãã¾ã [OSC Hokkaido 2015 LT]
CircleCIã£ã¦ãªããã
ã¨ãããã¨ããã°ã¨ãããã§ãããCIãµã¼ãã¹ã§ãã
URLã¯ãã¡ã
https://circleci.com/
Jenkinsã¨ã®æ¯è¼
ä»CIãµã¼ãã¹ã®jenkinsã¨æ¯è¼ãã¦ä¸çªã«ãããã®ã¯ã
Jenkinsã¯èªåã§Jenkinsãµã¼ããç«ã¦ãå¿
è¦ãããã®ã«å¯¾ãã¦
ã¯ã©ã¦ãã®webãµã¼ãã¹ã¨ããã¨ããã§ããããã
CircleCIã¯webãµã¼ãã¹ãªã®ã§ã
ã¢ã«ã¦ã³ãç»é²ãã¦ã¯ã©ã¦ãä¸ã§CIãå®è¡ããå½¢ãåãã¾ãã
CircleCIã¢ã«ã¦ã³ã
ã¢ã«ã¦ã³ãç»é²ã¯githubã¢ã«ã¦ã³ãã¨ã®é£æºï¼ç»é²ï¼ãå¿ é ã«ãªãã¾ãã
CircleCIã®ç¹å¾´
ç¹å¾´ãåæãã¾ã
- ã¯ã©ã¦ãåã®CI webãµã¼ãã¹ã§ãã
- ã¢ã«ã¦ã³ãç»é²ã¯github飿ºå¿ é
- ã³ã³ãã1ã¤ç¡æã2ã¤ç®ä»¥éã¯ææ
- privateãªãã¸ããªã§ãç¡æ
- 並åãã«ãã¯ææ
- CircleCIã®VMã«SSHã§ãã
CircleCIã®æé
æéã¯å
¬å¼ãµã¤ãã®ä»¥ä¸ã®ãã¼ã¸ã§ç¢ºèªã§ãã¾ãã
https://circleci.com/pricing/
ã³ã³ããã1ã¤ããã«ãæéã1,500åï¼25æéï¼ãªãç¡æã§ãã
ã³ã³ããã1ã¤å¢ãããã³ã«$50ã»ã©ãããã¾ããå人ã ã¨$50ãã¾ãã¾ããã¾ãã...
2018/01ç¾å¨ã®æéä½ç³»ã«ã¤ãã¦ãç¡æçã¨æä½ä¾¡æ ¼ã®æ¯è¼ã ãè¼ãã¦ããã¾ã
- | free(1 Container) | 2 Container |
---|---|---|
repos | ç¡é | ç¡é |
users | ç¡é | ç¡é |
build | 1 monthã«1500åã®ãã«ãæé | ç¡é |
container | 1 | 2 |
concurrent build | 1 | 2 |
CircleCIã«å¿ è¦ãªãã®
ãã§ã«ç¹å¾´ã§ãæ¸ãã¦ãã¾ããgithubã¢ã«ã¦ã³ã
ãå¿
è¦ã§ãã
ã§ãããã ãï¼ï¼
2. CircleCIã使ã£ã¦ã¿ã
使ã£ã¦ã¿ãéã®ãªããã§ãã
- â githubä¸ã§ã¢ã«ã¦ã³ããä½ã
- â¡ githubä¸ã§ciããrepository(circleciã§ããããã¸ã§ã¯ã)ã使ãã
- ⢠CircleCIä¸ã§githubã¢ã«ã¦ã³ãã¨é£æºãã
- ⣠ãã¼ã«ã«ã§ãªãã¸ããªã«è¨å®ãã¡ã¤ã«ï¼
.circleci/config.yml
ï¼ãä½ã- ⤠CircleCIä¸ã§buildéå§ãã¦ã¿ã
ã¨ãããã¨ã§ããã®æµãã§ä½¿ã£ã¦ã¿ã¾ãã
â githubä¸ã§ã¢ã«ã¦ã³ããä½ã
çç¥ãã¾ãã
ãããã«ciãããã¨ããããããªãããã¾ãããï¼
â¡ githubä¸ã§ciããrepository(circleciã§ããããã¸ã§ã¯ã)ã使ãã
ä»åã¯ãã®è¨äºç¨ã«ä½ã£ããªãã¸ããªãä¾ã«ä½¿ãã¾ãã
https://github.com/tweeeety/go-test-circleci-sample
ä¸èº«ã¯goã§æ¸ããã½ã¼ã¹ã¨testã§ãã
æ§æ
$ tree . . âââ README.md âââ sample01.go âââ sample01_test.go
sample01.go
package sample01 func HelloWorld(s string) string { return "hello world, " + s }
sample01_test.go
package sample01 import ( "testing" ) func TestHelloWorld(t *testing.T) { actual := HelloWorld("hoge") expected := "hello world, hoge" if actual != expected { t.Errorf("actual %v\nwant %v", actual, expected) } }
⢠CircleCIä¸ã§githubã¢ã«ã¦ã³ãã¨é£æºãã
ããããCircleCIã¨githubã®é£æºã§ãã
å
¬å¼ãã¼ã¸ãåæ²ãã¾ãã
https://circleci.com/
Sign Up
ã¾ãã¯gihubã¢ã«ã¦ã³ããå©ç¨ãã¦Sign Upãã¾ã
ã¡ãã¥ã¼
Pricing
ããè¡ã£ã¦ã¿ã¾ã
freeã§å§ãã¦ã¿ãã®ã§ãã®ã¾ã¾
Sign up
ãã¾ã
Sign Up with GitHub
ããGithubã¢ã«ã¦ã³ãã«ã¦Authorizeãã¾ã
Authorizeãæ±ããããã®ã§
Authorize circleci
ãã¯ãªãã¯ãã¾ãgithubã®ãã¹ã¯ã¼ããå ¥åããã°ç»é²å®äºã§ããç°¡åã§ããï¼ï¼
ç»é²ã§ããã°CircleCIã®Dashboardç»é¢ãéãã¾ã
ciããããã¸ã§ã¯ãã鏿
å©ç¨ã§ããæºåã¯æ´ã£ãã®ã§ãCircleCIä¸ã§ããã¸ã§ã¯ãã鏿ãã¾ãã
CircleCIä¸ã§ã¯PROJECTSã¨ããã¾ããã
githubã®repositoryã®ãã¨ã§ãã
Add projects
ããci対象ã¨ããprojectsãç»é²ãã¾ãciããããã¸ã§ã¯ãã®
Setup project
ã鏿ãã¾ãããã§ciã®æºåãæ´ãã¾ãããä»åã¯è¨å®ã¯ãã®ã¾ã¾é²ã¿ã¾ã
⣠ãã¼ã«ã«ã§ãªãã¸ããªã«è¨å®ãã¡ã¤ã«ï¼.circleci/config.yml
ï¼ãä½ã
æå¾ã«éããç»é¢ã®èª¬æã®éãã
ãªãã¸ããªç´ä¸ã«.circleci/config.yml
ã追å ãã¾ãã
Sample .yml File
ã«ã¯ä»¥ä¸ã®ããã«è¡¨ç¤ºãã¦ããã¦ããã®ã§ãããã³ãã£ã¦ä½ãã¾ãã
# Golang CircleCI 2.0 configuration file # # Check https://circleci.com/docs/2.0/language-go/ for more details version: 2 jobs: build: docker: # specify the version - image: circleci/golang:1.8 # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ # - image: circleci/postgres:9.4 #### TEMPLATE_NOTE: go expects specific checkout path representing url #### expecting it in the form of #### /go/src/github.com/circleci/go-tool #### /go/src/bitbucket.org/circleci/go-tool working_directory: /go/src/github.com/{{ORG_NAME}}/{{REPO_NAME}} steps: - checkout # specify any bash command here prefixed with `run: ` - run: go get -v -t -d ./... - run: go test -v ./...
.circleci/config.ymlã®ä½æ
yamlã¯ã³ãã¼ãã¾ãããworking_directory
ã®ä»åç¨ã«ä½ã£ããªãã¸ããªã«å¤ãã¦ããã¾ãã
working_directory: /go/src/github.com/{{ORG_NAME}}/{{REPO_NAME}} â working_directory: /go/src/github.com/tweeeety/go-test-by-circleci-sample
# ãªãã¸ããªã«ç§»åãã¦ãã¡ã¤ã«ä½æ $ cd [path to repo] $ mkdir .circleci # å 容ã¯ãã®ã¾ãã¾ã³ãã¼ # working_directoryã ãèªåã®ãªãã¸ããªã« $ vim .circleci/config.yml # æ®éã«push $ git add . $ git commit -m 'add .circleci/config.yml' $ git push origin master
⤠CircleCIä¸ã§buildéå§ãã¦ã¿ã
Start building
ãæ¼ãã¨ã追å ããè¨å®ãå
ã«ciã®buildãå®è¡ãã¦ããã¾ãã
CIãåã£ã¦testãæåããã°SUCCESS
ã¨è¡¨ç¤ºãããã®ã確èªã§ããã¨æãã¾ãã
3. CircleCI / githubã®é£æºã確èªãã
githubã¨ã®é£æº
ã確èªãã¦ã¿ã¾ãã
githubä¸ããpull requestãéã£ããciãåããã¿ãããªãã¤ã§ããã
ç¹å¥ãªè¨å®ã¯ããããããã¾ã§ã®è¨å®ã«ã¦ãã§ã«ãããªã£ã¦ãã¾ãã
pullreqä½ã
ç¨æãããªãã¸ããªã«ãããã«pull requestãéã£ã¦ã¿ã¾ãã
$ git checkout -b sample-branch # é©å½ã«ç·¨é $ vim README.md # pull requestéã $ git add . $ git commit -m 'modify readme' $ git push origin sample-branch
ãã®ãã¨ã¯githubä¸ã§pull requestã使ãã¾ãã
CircleCIä¸ã§buildãã¾ãã
pull requestã®ä½æãããªã¬ã¼ã«ãCircleCIä¸ã§buildãåãã¾ã
githubä¸ã«çµæã表示ããã
ã¾ããCircleCIã§buildãã¾ãã£ãã¨åæã«
pull requestä¸ã«ã¯çµæã表示ããã¾ãã
è£è¶³ - buildçµæã®slackéç¥
ãã®è¨äºã§ã¯åºæ¬çãªciã®é£æºã¾ã§ãæ¸ãã¾ããã
ãã®ãã¨ã¯buildçµæãslackã«éç¥ããããããã§ãããã
ãã®è¾ºã¯å¥è¨äºã§æ¸ãã¦ã¿ã¾ããã
ãCircleCIãCircleCI 2.0ããã¯ãããå人ã§ã®ç°¡åãªCIå°å
¥æ¹æ³ - BuildçµæãSlackéç¥
ããã
jenkinsã¨éã£ã¦èªåã§ç«ã¦ãªãã¦è¯ãã®ã§ãµã¯ã£ã¨ã¯ããããã¾ããï¼ï¼¼(ï¼¾oï¼¾)ï¼