嘿嘿,你好啊!欢迎光临【运维家】公众号,今天我们要学习的是如何用Jenkins和GitLab在Docker里构建和测试应用程序,搞定CI/CD流程。没错,就是为了让你的代码飞起来!这篇文章可是会给你详细解说哦,别错过啊。
引言
在现代软件开发和运维中,实现持续构建和交付/部署(CI/CD)至关重要。Jenkins和GitLab是目前最受欢迎的两种构建和开发工具,他们通过协同运作,能够构建一套可靠且可重复的开发流程。本文将使用Docker的容器技术来为我们提供一个更加模拟的环境,以便更轻松地进行构建和部署。
要求环境
首先,我们需要准备以下内容:
安装并配置好Docker环境。
安装并配置好Jenkins和GitLab。
以下是步骤:
打开命令行终端,输入以下命令启动Docker。
service docker start
为Jenkins和GitLab分别创建Docker容器。我们将为每个容器分别分配IP地址,以便访问这些应用程序。以下是为Jenkins和GitLab创建容器的命令:
docker run -p 8080:8080 --name jenkins -d jenkins/jenkins
docker run -p 8888:80 --name gitlab -d gitlab/gitlab-ce
一旦容器在Docker中运行,就可以启动容器中的服务。以下是为Jenkins和GitLab启动服务的命令:
docker exec jenkins /etc/init.d/jenkins start
docker exec gitlab /etc/init.d/gitlab start
确保Jenkins和GitLab都运行正常后,我们需要安装必要的插件,以使我们能够使用Docker构建和测试应用程序。
实战案例
在这个案例中,我们设置了一个简单的Python Web应用程序,并使用GitLab存储库和Jenkins构建一个Docker容器。
创建一个存储库并将应用程序源代码上传到GitLab中。确保我们在存储库中具有正确的Dockerfile和Jenkinsfile以进行构建操作和流水线配置。以下是Dockerfile的示例内容:
# Python 3.7镜像,比默认的latest镜像小
FROM python:3.7-slim-buster
COPY . /
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
ENTRYPOINT [ "python", "app.py" ]
在Jenkins中创建一个新的流水线项目,并从GitLab中导入存储库。将容器映像名称提交到GitLab CI文件中。示例内容如下:
image_name: my-app:${CI_COMMIT_SHORT_SHA}
在Jenkinsfile中,我们定义了一个流水线,Jenkins将使用该流水线从源代码中构建一个Docker映像。
pipeline {
agent any
stages {
stage('Building image') {
steps {
script {
docker.withRegistry('http://docker-registry-secret', 'my-registry-not-secret') {
app = docker.build("${env.image_name}")
app.push()
}
}
}
}
stage('Deployment') {
steps {
script {
sh "kubectl set image deploy/my-app my-app=${env.image_name}"
}
}
}
}
}
测试Docker映像是否被成功构建。我们可以通过输入以下命令来查看Docker中的映像:
docker images
以上步骤完成后,我们可以启动Docker容器并测试应用程序。以下是启动容器和查看Web应用程序的命令:
docker run -d -p 8000:8000 my-app:${CI_COMMIT_SHORT_SHA}
curl http://localhost:8000/
如果运行结果正确,则可以将我们的应用程序部署到生产环境中。
文章总结
在这篇文章中,我们介绍了如何在Docker中使用Jenkins和GitLab来实现CI/CD流程。我们学习了如何为Jenkins和GitLab创建Docker容器,安装必要的插件,配置流水线,并使用Docker构建和测试应用程序。最后,我们也讲述了如何将我们的应用程序部署到生产环境中。建议各位读者亲自尝试操作,加深对本文所述内容的理解。
谢谢阅读,欢迎关注分享【运维家】公众号,获取更多技术干货!