Jenkins实战指南:实现自动化代码拉取和Harbor私有镜像仓库上传
2023-12-28 21:45:29
前两篇中,介绍了如何搭建个人私有镜像仓库Harbor,并编写了一个goweb项目进行打包上传,本文则继续介绍如何利用jenkins 实现自动打包镜像并上传。
搭建jenkins
mkdir jenkins
cd jenkins
vim vim docker-compose.yml
version: "3.1"
services:
jenkins:
image: jenkins/jenkins
container_name: jenkins
ports:
- 8080:8080
- 50000:50000
volumes:
- ./data/:/var/jenkins_home/
- /usr/bin/docker:/usr/bin/docker
- /var/run/docker.sock:/var/run/docker.sock
- /etc/docker/daemon.json:/etc/docker/daemon.json
执行 docker-compose up -d
发现jenkins并没有启动并且执行docker logs输出如下报错:
docker logs fa9f80b44831
------
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
看了下主要是因为data文件没有权限的原因,我直接777大法:
chmod 777 ./data
重新执行docker-compose up -d
记住这一串,后面登陆系统需要用到。
访问ip:8080 , 发现可以启动了。不上技术手段是不行的。
最后,选择默认插件->创建账户。
话说回来,aliyun 2c2g,想玩云原生不太行。
我直接一个重启大法,最终在阿里云控制台进行了重启操作后,恢复正常。
jenkins 拉取 Gitee代码
- 登陆Gitee 创建一个新的仓库
我这边已经创建好了,并上传了代码。
- 进入jenkins容器,生成rsa
docker exec -it jenkins /bin/bash
进入jenkins容器后执行:
ssh-keygen -t rsa -C "xxx@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/var/jenkins_home/.ssh/id_rsa):
/var/jenkins_home/.ssh/id_rsa already exists.
Overwrite (y/n)?
jenkins@fa9f80b44831:/$
一路回车,由于我的生成过,生成的rsa路径为:/var/jenkins_home/.ssh
cat /var/jenkins_home/.ssh/id_rsa.pub
将值复制出来。
- 打开Gitee添加ssh公钥
右上角头像->设置->SSH公钥,将刚才复制出来的值添加上去。
Jenkins 拉取镜像并打包上传Harbor
- 新建任务
具体配置跟我一样即可
2. 使用shell 执行
echo "1. 制作服务镜像"
docker build -t goweb .
echo "2. 登录 harbor 镜像仓库"
docker login -u admin -p Harbor12345 47.xx.xx.171
echo "3. 推送镜像至 harbor 仓库"
docker tag goweb:latest 47.xx.xx.171/library/goweb
docker push 47.94.191.171/library/goweb
- 报错
如果遇到以下报错:
原因:Docker是在root用户下部署的,所以jenkins 没有权限使用Docker
解决:将jenkins加入docker用户组 或者 :直接执行
sudo chmod 666 /var/run/docker.sock
- 构建
点击立即构建
构建成功后,查看Harbor
成功上传!
文章来源:https://blog.csdn.net/efheoihfe/article/details/135277720
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!