ï¼ã¤ã®Jenkinsã®ç°å¢ã§è¤æ°ã®ããã¸ã§ã¯ãã®ãã¹ããå®è¡ããããã¨ã¯ãã¾ã¾ããã¨æããJenkinsä¸ã§åä½ãããã¹ã¦ã®ããã¸ã§ã¯ããåæã«åä½ããããã«Jenkinsç°å¢ãæ´ããã®ã¯é£ãããã¨ããããããããã¸ã§ã¯ãã®ããã«ã©ã¤ãã©ãªã®ãã¼ã¸ã§ã³ãæ´æ°ãããã¨ã§ãå¥ã®ããã¸ã§ã¯ãã®ãã¹ããè½ã¡ãã¨ãã
Ruby ãªã Bundler ãrbenvã使ã£ã¦ç°å¢ãåãæ¿ããã¨ã ããã解決ãããã©ãlibhogeã¿ãããªå ±æã©ã¤ãã©ãªãBundlerãrbenvèªä½ã®æ´æ°ã¨ããã©ããã¦ãå ±æãããé¨åã¯ãã£ã¦ãã ãããæ®æ®µã¯åé¡ã¯ãªãããã¾ãã«å°ãã¨è¨ãæãã ã¨æãã
ããã§ããã¹ããã¨ã«Dockerã®ã³ã³ãããç«ã¡ä¸ãã¦ãã®ä¸ã§ãã¹ããå®è¡ããããã«ããã°ãç°å¢ãç¬ç«ããããã¨ãã§ããã®ã§ãç°å¢ãããããªãããã«ä¸å¯§ã«è¨å®ããã¿ãããªãã¨ã«æ°ã使ããªãã¦ãããªãã®ã§ä¾¿å©ã
miyagawaããã®docker-plenv-vanillaã使ãã¨plenvç°å¢ãã¨ã¨ã®ã£ãDokcer imageãä½ã£ããã§ãããããããæãã§goãåãDocker imageãä½ã£ã¦goã®ãã¹ããåããã¦ã¿ãã®ã§ããç´¹ä»ãã¾ãã
Dockerfile ã«ãªãã以ä¸ã®ããã«æ¸ã
FROM ubuntu RUN apt-get -y update RUN apt-get -y install curl sudo git build-essential RUN mkdir -p /opt/local RUN curl https://go.googlecode.com/files/go1.2.linux-amd64.tar.gz -o /tmp/go.tar.gz RUN tar -C /opt/local -xzf /tmp/go.tar.gz RUN mkdir -p /gobuild/src RUN mkdir -p /gobuild/go/src/example.com/hakobe RUN ln -sf /gobuild/src /gobuild/go/src/example.com/hakobe/goproject RUN echo 'export GOPATH="/gobuild/go"' >> /gobuild/env RUN echo 'export GOROOT="/opt/local/go"' >> /gobuild/env RUN echo 'export PATH="/opt/local/go/bin:$PATH"' >> /gobuild/env
以ä¸ã®ããã«ãã¦imageãä½ãã
$ docker build -t gobuild .
ãã¹ãã¯ä»¥ä¸ã®æ§ãªã¹ã¯ãªãããç¨æãã¦ããã¦å®è¡ãã
docker run \ -name gotest \ -v "/path/to/goproject:/gobuild/src" \ gobuild \ sh -c 'cd /gobuild; . /gobuild/env; go test -v ./...' result="$?" docker rm gotest exit $result
ãã¤ã³ãã¯ä»¥ä¸ã®æ§ãªæãã§ãã
- /path/to/goprojectã«ããã½ã¼ã¹ã³ã¼ãã¯docker run ããã¨ãã« /gobuild/src ã«mountããã
- goãããã±ã¼ã¸åã解決ã§ããããã«ã/gobuild/srcãã /gobuild/go/src/example.com/hakobe/goproject ã«ã·ã³ããªãã¯ãªã³ã¯ãå¼µã£ã¦ãã
- ããã±ã¼ã¸åã go get ã§ããæãã«ãªã£ã¦ããå ´åã¯ããããªãã¨ããå¿ è¦ãªãã¨æã
- ç´æ¥ $GOPATH/src以ä¸ã«mountãã¦ããããããããªã
- goã®å®è¡ç°å¢ã¯ãã¤ããªã®tarballæã£ã¦ãã¦å±éããã°ä½ãã
- å®è¡ç¨ã®ç°å¢å¤æ°ã¯ /gobuild/env ã«ã¨ã£ã¦ããã¦ããã¹ãå®è¡æã« source ãã
- /etc/bashrc? ã¨ãã§åæã«èªã¿è¾¼ã¾ããããã«ãã¨ãã¦ãè¯ããããããªã
- æå¾ã«docker rm ããªãã¨ãã¹ããå®è¡ãããã³ã«ã³ã³ãããmountãããã¾ã¾ã«ãªã
- ã³ã³ããã®mountã¯ã«ã¼ãã«ããã»ã¹ããã£ã¦ãã¦ãã¡ã¢ãªãæ¶è²»ããã®ã§ãã»ãã£ã¦ããã¨Dockerã®ãã¹ããççºãã
- Jenkinsä¸ã§docker buildãã¦ãããããªä½ã ãã©ãå®éã¯docker repositoryã¨ããæ´»ç¨ãããè¯ãã¨æã