内容简介:在本文中,我们将介绍如何使用Github,Travis-CI和Docker Hub创建一个简单的持续集成过程。这次使用的一个项目是自己写的一个爬虫小程序(
介绍
在本文中,我们将介绍如何使用Github,Travis-CI和Docker Hub创建一个简单的持续集成过程。
项目
这次使用的一个项目是自己写的一个爬虫小程序( https://github.com/Han-Ya-Jun...
项目目录
news_watch_notice ├── cmd //main ├── conf ├── dis ├── Dockerfile ├── Makefile ├── pkg ├── qrcode ├── .travis.yml ├── README.md ├── vendor ├── utils
Dockerfile
FROM alpine:3.6 MAINTAINER hanyajun0123@gmail.com RUN apk update && apk add curl bash tree tzdata \ && cp -r -f /usr/share/zoneinfo/Hongkong /etc/localtime ADD news_watch_notice /usr/bin/ ADD news_watch_notice.sha /usr/bin/ CMD ["news_watch_notice"]
makefile
TARGET=news_watch_notice PKG=$(TARGET) TAG=latest IMAGE_PREFIX?=hanyajun IMAGE_PREFIX_PRD=hanyajun TARGET_IMAGE_DEV=$(IMAGE_PREFIX)/$(TARGET):$(TAG) TARGET_IMAGE_PRD=$(IMAGE_PREFIX_PRD)/$(TARGET):$(TAG) all: image $(TARGET): CGO_ENABLED=0 go build -o dist/$(TARGET) $(PKG)/cmd gitlog: target: mkdir -p dist git log | head -n 1 > dist/news_watch_notice.sha docker run --rm -i -v `pwd`:/go/src/$(PKG) \ -w /go/src/$(PKG) golang:1.11.5 \ make $(TARGET) image-dev: target cd dist && cp ../Dockerfile ./ && \ docker build -t $(TARGET_IMAGE_DEV) . push-dev: docker push $(TARGET_IMAGE_DEV) image-prd: target cd dist && cp ../Dockerfile ./ && \ docker build -t $(TARGET_IMAGE_PRD) . push-prd: docker push $(TARGET_IMAGE_PRD) clean: rm -rf dist .PHONY: image target clean push $(TARGET)
.travis.yml
language: go go: # 语言版本号 - "1.11.5" # 默认使用最新版本,注意,需要 "1.10" 版本的时候必须表示为字符串形式,如果写成 1.10 则会使用 1.1 版本;x表示对应前缀的最新版本 services: - docker #需要的 docker 环境 install: - make image-dev #build script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - make push-dev # push
travis的配置( https://travis-ci.org)
打开项目ci开关
设置docker hub的用户和密码环境变量(push需要登录认证)
DOCKER_PASSWORD DOCKER_USERNAME
提交项目代码触发ci
部分ci日志
docker_mtu docker stop/waiting docker start/running, process 3638 services 0.02s$ sudo service docker start start: Job is already running: docker Updating gimme git.checkout 0.85s$ git clone --depth=50 --branch=master https://github.com/Han-Ya-Jun/news_watch_notice.git Han-Ya-Jun/news_watch_notice Cloning into 'Han-Ya-Jun/news_watch_notice'... $ cd Han-Ya-Jun/news_watch_notice $ git checkout -qf e05633a1c6e0c3289c85aedf28461b718fe1af13 $ travis_export_go 1.11.5 github.com/Han-Ya-Jun/news_watch_notice Setting environment variables from repository settings $ export DOCKER_PASSWORD=[secure] $ export DOCKER_USERNAME=[secure] $ export GOBIN=$GOPATH/src/bin 6.93s$ travis_setup_go go version go1.11.5 linux/amd64 $ export GOPATH="/home/travis/gopath" $ export PATH="/home/travis/gopath/bin:/home/travis/.gimme/versions/go1.11.5.linux.amd64/bin:/home/travis/bin:/home/travis/bin:/home/travis/.local/bin:/opt/pyenv/shims:/home/travis/.phpenv/shims:/home/travis/perl5/perlbrew/bin:/home/travis/.nvm/versions/node/v8.9.1/bin:/home/travis/.kiex/elixirs/elixir-1.4.5/bin:/home/travis/.kiex/bin:/home/travis/.rvm/gems/ruby-2.4.1/bin:/home/travis/.rvm/gems/ruby-2.4.1@global/bin:/home/travis/.rvm/rubies/ruby-2.4.1/bin:/home/travis/gopath/bin:/home/travis/.gimme/versions/go1.7.4.linux.amd64/bin:/usr/local/phantomjs/bin:/usr/local/phantomjs:/usr/local/neo4j-3.2.7/bin:/usr/local/maven-3.5.2/bin:/usr/local/cmake-3.9.2/bin:/usr/local/clang-5.0.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/travis/.rvm/bin:/home/travis/.phpenv/bin:/opt/pyenv/bin:/home/travis/.yarn/bin" $ export GO111MODULE="auto" $ gimme version v1.5.3 $ go version go version go1.11.5 linux/amd64 go.env $ go env GOARCH="amd64" GOBIN="/home/travis/gopath/src/bin" GOCACHE="/home/travis/.cache/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="/home/travis/gopath" GOPROXY="" GORACE="" GOROOT="/home/travis/.gimme/versions/go1.11.5.linux.amd64" GOTMPDIR="" GOTOOLDIR="/home/travis/.gimme/versions/go1.11.5.linux.amd64/pkg/tool/linux_amd64" GCCGO="gccgo" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build083711362=/tmp/go-build -gno-record-gcc-switches" install 43.66s$ make image-dev mkdir -p dist git log | head -n 1 > dist/news_watch_notice.sha docker run --rm -i -v `pwd`:/go/src/news_watch_notice \ -w /go/src/news_watch_notice golang:1.11.5 \ make news_watch_notice Unable to find image 'golang:1.11.5' locally 1.11.5: Pulling from library/golang 22dbe790f715: Pulling fs layer 0250231711a0: Pulling fs layer 6fba9447437b: Pulling fs layer c2b4d327b352: Pulling fs layer 619f4932b7ea: Pulling fs layer e2fd6cbd3c6f: Pulling fs layer 1d96446d2b20: Pulling fs layer c2b4d327b352: Waiting e2fd6cbd3c6f: Waiting 1d96446d2b20: Waiting 619f4932b7ea: Waiting 6fba9447437b: Verifying Checksum 6fba9447437b: Download complete 0250231711a0: Download complete 22dbe790f715: Verifying Checksum 22dbe790f715: Download complete c2b4d327b352: Verifying Checksum c2b4d327b352: Download complete 619f4932b7ea: Verifying Checksum 619f4932b7ea: Download complete 1d96446d2b20: Verifying Checksum 1d96446d2b20: Download complete e2fd6cbd3c6f: Verifying Checksum e2fd6cbd3c6f: Download complete 22dbe790f715: Pull complete 0250231711a0: Pull complete 6fba9447437b: Pull complete c2b4d327b352: Pull complete 619f4932b7ea: Pull complete e2fd6cbd3c6f: Pull complete 1d96446d2b20: Pull complete Digest: sha256:342872745847966ab630e9cc5b6980ed3fe7f4e3ea44b10efac995575730c9b8 Status: Downloaded newer image for golang:1.11.5 CGO_ENABLED=0 go build -o dist/news_watch_notice news_watch_notice/cmd cd dist && cp ../Dockerfile ./ && \ docker build -t [secure]/news_watch_notice:latest . Sending build context to Docker daemon 14.78MB Step 1/6 : FROM alpine:3.6 3.6: Pulling from library/alpine 5a3ea8efae5d: Pulling fs layer 5a3ea8efae5d: Verifying Checksum 5a3ea8efae5d: Download complete 5a3ea8efae5d: Pull complete Digest: sha256:ee0c0e7b6b20b175f5ffb1bbd48b41d94891b0b1074f2721acb008aafdf25417 Status: Downloaded newer image for alpine:3.6 ---> 43773d1dba76 Step 2/6 : MAINTAINER [secure]0123@gmail.com ---> Running in 1f4d4d0db1cb ---> 0eadcccd5d22 Removing intermediate container 1f4d4d0db1cb Step 3/6 : RUN apk update && apk add curl bash tree tzdata && cp -r -f /usr/share/zoneinfo/Hongkong /etc/localtime ---> Running in 7f859dd06afc fetch http://dl-cdn.alpinelinux.org/alpine/v3.6/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.6/community/x86_64/APKINDEX.tar.gz v3.6.5-39-gbdcdc921e8 [http://dl-cdn.alpinelinux.org/alpine/v3.6/main] v3.6.5-34-gf0ba0b43d5 [http://dl-cdn.alpinelinux.org/alpine/v3.6/community] OK: 8442 distinct packages available (1/11) Installing ncurses-terminfo-base (6.0_p20171125-r1) (2/11) Installing ncurses-terminfo (6.0_p20171125-r1) (3/11) Installing ncurses-libs (6.0_p20171125-r1) (4/11) Installing readline (6.3.008-r5) (5/11) Installing bash (4.3.48-r1) Executing bash-4.3.48-r1.post-install (6/11) Installing ca-certificates (20161130-r2) (7/11) Installing libssh2 (1.8.2-r0) (8/11) Installing libcurl (7.61.1-r2) (9/11) Installing curl (7.61.1-r2) (10/11) Installing tree (1.7.0-r0) (11/11) Installing tzdata (2019a-r0) Executing busybox-1.26.2-r11.trigger Executing ca-certificates-20161130-r2.trigger OK: 17 MiB in 24 packages ---> f923b8dbfbf2 Removing intermediate container 7f859dd06afc Step 4/6 : ADD news_watch_notice /usr/bin/ ---> a855f5307179 Step 5/6 : ADD news_watch_notice.sha /usr/bin/ ---> 9014ba35ce0f Step 6/6 : CMD news_watch_notice ---> Running in 109449b18721 ---> acb6623feb46 Removing intermediate container 109449b18721 Successfully built acb6623feb46 Successfully tagged [secure]/news_watch_notice:latest 0.49s$ echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin Login Succeeded The command "echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin" exited with 0. 5.21s$ make push-dev docker push [secure]/news_watch_notice:latest The push refers to a repository [docker.io/[secure]/news_watch_notice] c0546ad83870: Preparing 869b27ab7e53: Preparing 47b50a8202a0: Preparing 721384ec99e5: Preparing 721384ec99e5: Layer already exists c0546ad83870: Pushed 47b50a8202a0: Pushed 869b27ab7e53: Pushed latest: digest: sha256:74a706f3f8b5b2ead4a7722ca72d8f1eaa450801847662402e4e3e34f4d73158 size: 1157 The command "make push-dev" exited with 0.
成功将项目打包成image并推送到docker hub上
以上所述就是小编给大家介绍的《github上Go项目使用Travis CI和Docker Hub实现持续集成》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- SpringBoot集成Quartz实现定时任务
- Jenkins + DockerSwarm 实现弹性伸缩持续集成
- 用Testcontainers实现SpringBoot+Docker集成测试
- 使用 Camel 实现分布式企业应用集成
- Spring Boot集成MyBatis实现通用Mapper
- Spring Boot 集成 Flyway 实现数据库版本控制
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Numerical Linear Algebra
Lloyd N. Trefethen、David Bau III / SIAM: Society for Industrial and Applied Mathematics / 1997-06-01 / USD 61.00
Numerical Linear Algebra is a concise, insightful, and elegant introduction to the field of numerical linear algebra.一起来看看 《Numerical Linear Algebra》 这本书的介绍吧!