持续开发与管理
持续集成(Continuous Integration,CI)倡导开发团队定期进行集成验证。集成通过自动化的构建来完成,包括自动编译、发布和测试,从而尽快地发现错误。
持续集成的特点包括:
- 鼓励自动化的周期性的过程,从检出代码、编译构建、运行测试、结果记录、测试统计都自动完成的,减少人工干预;
- 需要有持续集成系统的支持,包括代码托管机制支持,以及集成服务器等。
持续交付(Continuous Delivery,CD)是经典的敏捷软件开发方法的自然延伸,它强调产品在修改后到部署上线的流程要敏捷化、自动化。甚至一些较小的改变也要尽早地部署上线。
1 Jenkins 及官方镜像
Jenkins 是一个得到广泛应用的持续集成和持续交付的工具。作为开源软件项目,它旨在提供一个开放易用的持续集成平台。Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,并用图表的形式形象地展示项目构建的趋势和稳定性。Jenkins特点包括安装配置简单,支持详细的测试报表、分布式构建等。
Jenkins自2.0版本推出了“Pipeline as Code”,帮助Jenkins实现对CI和CD更好的支持,通过Pipeline,将原本独立运行的多个任务连接起来,可以实现十分复杂的发布流程。
Jenkins官方在DockerHub上提供了全功能的基于官方发布版的Docker 镜像。可以方便地使用docker run指令一键部署Jenkins服务。
$ docker run -p 8080:8080 -p 5000:5000 jenkins
运行的容器中,数据会存储在工作目录/var/jenkins_home 中,这包括jenkins 中所有的数据,如插件和配置信息等。如果需要数据持久化,可以使用数据卷机制
$ docker run -p 8080:8080 -p 5000:5000 -v /data:/var/jenkins_home jenkins
以上指令会将Jenkins数据存储于宿主机的/data 目录(需要确保/data 目录对于容器内的Jenkins 用户是可访问的)下。当然也可以使用数据卷容器:
$ docker run --name myjenkins -p 8080:8080 -p 5000:5000 -v /var/jenkins_home jenkins
2 GitLab 及其官方镜像
GitLab是一款非常强大的开源源码管理系统。它支持基于Git的源码管理、代码评审、isuue跟踪、活动管理、wiki页面、持续集成和测试等功能。基于GitLab,用户可以自己搭建一套类似于Github的开发协同平台。
GitLab 官方提供了社区版本(GitLab CE)的DockerHub 镜像,可以直接使用docker run 指令运行:
$ docker run --name my-gitlab \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 23:23 \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
3 相关资源
Jenkins相关资源如下:
Jenkins 官网:https://jenkins.io
Jenkins 官方仓库: https://github.com/jenkinsci/jenkins
Jenkins 官方镜像:https://hub.docker.com/r/jenkinsci/jenkins
Jenkins 官方镜像仓库:https://github.com/jenkinsci/docker
GitLab 相关资源如下:
GitLab官网:https://github.com/gitlabhq/gitlabhq
GitLab 官方镜像:https://hub.docker.com/r/gitlab/gitlab-ce/