摘要:介绍在本文中,我们将介绍如何使用,和创建一个简单的持续集成过程。
介绍
在本文中,我们将介绍如何使用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 ├── utilsDockerfile
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 # pushtravis的配置(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上
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27838.html
摘要:简介是目前新兴的开源持续集成构建项目,它与,的很明显的特别在于采用格式,简洁清新独树一帜。目前大多数的项目都已经移入到的构建队列中,据说每天运行超过次完整构建。查看构建情况增加逼格首先要是一个文档。是由提供的真实的构建情况。 Travis简介 Travis CI(continuous integration )是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的特别在于...
摘要:集成测试完成后,由运维同学从发起一个到分支,此时会会运行单元测试,构建镜像,并发布到预发布环境测试人员在预发布环境下再次验证功能,团队做上线前的其他准备工作运维同学合并,将为本次发布的代码及镜像自动打上版本号并书写,同时发布到生产环境。 云原生 (Cloud Native) 是伴随的容器技术发展出现的的一个词,最早出自 Pivotal 公司(即开发了 Spring 的公司)的一本技术小...
摘要:集成测试完成后,由运维同学从发起一个到分支,此时会会运行单元测试,构建镜像,并发布到预发布环境测试人员在预发布环境下再次验证功能,团队做上线前的其他准备工作运维同学合并,将为本次发布的代码及镜像自动打上版本号并书写,同时发布到生产环境。 云原生 (Cloud Native) 是伴随的容器技术发展出现的的一个词,最早出自 Pivotal 公司(即开发了 Spring 的公司)的一本技术小...
摘要:所以一直没能把持续集成搞起来。后来接触到,所以尝试了一下把持续集成搭建在上了,通过下面这几步就可以实现项目有新的提交后自己编译发布测试包到上了。 由于本人精力有限,如果内容有更新可能无法及时更新其他渠道的内容,请移步简书 查看文章 由于之前公司项目一直迭代速度很快,几乎隔几天就需要发布测试包给同事们进行测试,所以希望把打包Apk这个工作交给机器来做,然后就尝试了几种持续集成的方案,最常...
阅读 1207·2023-04-26 01:38
阅读 1430·2021-11-15 11:39
阅读 3234·2021-09-22 15:43
阅读 2584·2019-08-30 15:55
阅读 2017·2019-08-30 14:17
阅读 2831·2019-08-29 14:16
阅读 3037·2019-08-26 18:36
阅读 2590·2019-08-26 12:19