win10 修改gitlab账号_玩转gitlab + jenkins
1.相关概念
互联网软件的开发和发布,已经形成了一套标准流程,假如把开发工作流程分为以下几个阶段:编码 --> 构建 --> 集成 --> 测试 --> 交付 --> 部署
持续集成(CI)上面整个流程中最重要的组成部分就是持续集成(Continuous integration,简称CI)。持续集成指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。它的好处主要有两个:
- 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;
- 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
持续交付
持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。
持续部署(CD)
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。持续部署的前提是能自动化完成测试、构建、部署等步骤
1.客户端发起代码push到gitlab上
2.gitlab配置了webhook的东西,它可以出发jenkins的构建
jenkins做的事情就比较多
3.1 构建代码
3.2 静态分析
3.3 单元测试
3.4 build镜像
3.5 推送push镜像仓库
3.6 调用k8s的apik8s拉取镜像仓库的进行部署。
2. Jenkins介绍及相关软件的安装
Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。
开源的java语言开发持续集成工具,支持CI,CD;
易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理;
消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告;
分布式构建:支持Jenkins能够让多台计算机一起构建/测试;
文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等;
丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。
2.1Jenkins的安装
一定要看官网官网
Jenkis依赖Java,但是需要注意的是java9是不可以使用的,所以我们需要安装Java8,在安装Java8的时候,又出现一个坑,Oracle需要登录才可以下载sdk,如果不想登录的话,可以使用sudo apt-get install oracle-java8-installer来安装。
下面开始安装Jenkins。
- 添加key
- wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
- 修改/etc/apt/sources.list:
- 添加下面的源:
deb https://pkg.jenkins.io/debian-stable binary/
3 apt的方式安装
`sudo apt-get update
sudo apt-get install jenkins`
如果我们需要修改端口的话,以Ubuntu 18.04为例:vim /etc/default/jenkins,在这个地方把8080改成相应的端口即可。然后注意把Jenkins重新启动,/etc/init.d/jenkins restart。然后我们需要获取密钥,在Jenkins初始化的时候会需要,cat /var/lib/jenkins/secrets/initialAdminPassword,我们把密钥复制。在浏览器输入http://ip:port即可。接下来是傻瓜式操作。在我配置完成之后,遇到了一个坑爹的问题,浏览器变成了白屏,最后的解决方案是重新启动Jenkins服务,重启解决一切问题啊。
- jar包的方式安装
- 或者可以直接下在jar包,
- 我们有多种方法启动,我们选择使用jar包的方法,
java -jar jenkins.war --httpPort=31000
然后操作方法同上。
- docker jenkins安装
我使用的这一中。
docker官网
使用dockers拉去镜像,docker pull jenkins ,经过等待后,我们使用docker images查看下载的镜像。
也可以使用docker来启动:
docker run -p 8080:8080 -p 50000:50000 -d -v /your/home:/var/jenkins_home jenkins
我们来看看各个参数的含义:
-d: 后台运行容器,并返回容器ID;
-p 8080:8080 将镜像的8080端口映射到服务器的8080端口; 50000:50000 将镜像的50000端口映射到服务器的50000端口;
-v jenkins:/your/home:/var/jenkins_home,jenkins工作目录和宿主机目录进行映射,必须保证当前用户具有your/home访问权限。
除此之外,我们还可能遇到这样的权限问题,
原因是Jenkins镜像内部使用的用户是jenkons,但是我启动容器时的账号是root,导致没有权限操作内部目录,我们可以稍微改一下上面的命令:
docker run -p 8080:8080 -p 50000:50000 -d -v /your/home:/var/jenkins_home -u 0 jenkins
这样就可以成功启动了,该命令的作用是覆盖掉用户jenkons微root。
也可以使用
docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home jenkins 。
这个和前面不太一样,生成的密钥在docker容器中,使用docker ps -a,查看当前运行的容器,在使用docker exec -it 76b66ca806f7 /bin/bash ,记得替换为自己的容器id。
在容器中执行cat /var/jenkins_home/secrets/initialAdminPassword,获得相应密钥即可进行初始化,同上。
其实Jenkins的插件的安装还是有很多的坑的,主要的原因还是在于网络的原因,我们可以把把源替换为清华的源。
在系统管理---》插件管理-》高级 里面进行设置。
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
此外,我还遇到一个坑爹的问题,服务器的访问特别的缓慢,配置文件根本打不开,我一度怀疑是网络的问题,切换微我的手机流量,问题依然无法解决,我甚至把改容器给删除,镜像重新下载,还是无法解决问题,直到最后我发现容器的状态是unhealthy,我使用docker logs contained --tail 100, 查看了docker的日志。这样就很明确了,硬盘空间不够啦。
下面,我使用df -xh命令查看当前硬盘的使用率,很明显,就是这个问题。
我的解决思路是把docker的镜像和容器给迁移到其他富余的空间,如下:
1.停止docker服务。systemctl stop docker
2.创建一个目录用于保存docker的镜像和容器,mkdir -p /opt/docker/lib
3.迁移/var/lib/docker到上面的目录中,rsync -avz /var/lib/docker /opt/docker/lib
4.配置docker的配置文件,Ubuntu下的docker配置文件在,/lib/systemd/system/docker.service,修改
ExecStart=/usr/bin/dockerd --graph=/opt/docker/lib/docker
5.重写加载docker
systemctl daemon-reload systemctl restart docker systemctl enable docker
- 查看是否成功
- docker info
deal。。。。
docker images查看镜像,docker ps -a 查看容器。
- 收尾
- 如果没有任何问题,就可以把/var/lib/docker删除即可。
2.2 docker gitlab的安装
写在前面:在安装之前,我们需要弄明白一件事情,搞明白gitlab和GitHub的区别,多余的废话不说,主要体现在github相当于我们需要把代码部署到别人的服务器上,而我们可以使用gitlab在我们自己的服务器上搭建一个git环境,代码也可以放在我们自己的服务器上,这样我们即享受了git的方便,也保护了代码的安全。
先参考官网:gitlab docker官网
使用 docker pull gitlab/gitlab-ce 来安装。
接下来使用
sudo docker run --detach --hostname gitlab.example.com --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --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
不幸的是,服务器报了下面的错误,大意是说,服务器端口22被占用了。
使用lsof -i:22查看:
知道了问题,解决起来也不难,我们把端口映射修改一下即可,即
sudo docker run --detach --hostname gitlab.example.com --publish 443:443 --publish 80:80 --publish 2222:22 --name gitlab --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
下面这个表是gitlab的映射关系
我们可以修改gitlab的配置
docker exec -it gitlab /bin/bash
然后修改/etc/gitlab/gitlab.rb即可,
sudo docker run --detach --hostname gitlab.example.com --env GITLAB_OMNIBUS_CONFIG="external_url 'http://my.domain.com/'; gitlab_rails['lfs_enabled'] = true;" --publish 443:443 --publish 80:80 --publish 2222:22 --name gitlab --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
最后
sudo docker restart gitlab
接下来我们可以在浏览器打开gitlab,输入http://ip:port,这里port因为是80,所以可以省略。然后是让设置新的密码。再然后就要登录,登录的时候千万要注意,这个地方不是输入你在gitlab官方上的用户名和密码,用户名应该是root,密码是刚才设置的。
小贴士:如果你不幸的忘记了密码,自然是有办法补救的。
重置密码 ,我们需要进入到gitlab容器中,注意必须是root账户,然后
gitlab-rails console production ,注意这个过程需要花费时间,耐心等待即可,
完成之后,我们可以使用两种方式来找到用户名或者邮箱,user = User.where(id: 1).first 或者是
user = User.find_by(email: 'admin@local.host') 。最后我们修改密码即可,
user.password = 'secret_pass'
user.password_confirmation = 'secret_pass'
不要忘记保存哦。
user.save!
退出控制台,重新登录即可。
好的,我们回到前面,登录到http://ip:port之后,我们创建组,创建用户,把用户添加到组里面,创建项目,这些比较简单,不在贴出来了。
在项目创建好之后,我遇到了这么一个问题,说是我没有配置ssh,所以不能通过ssh的方式来获取代码,这个很简单,配置下ssh就可以了。
此外,我们还可以配置我们服务器的IP地址。操作如下,打开vim /etc/gitlab/gitlab.rb文件,将external_url = 'http://git.example.com'修改成自己的HostName。
接下来我们可以配置邮件服务器,需要安装邮件服务,apt-get install postfix,apt-get install mailutils,安装完成后可以进行测试
echo "Test mail from postfix" | mail -s "Test Postfix" @qq.com
到这里,我们就完成了公司级别的gitlab服务器的搭建。
3. jenkins实战
3.1 流水线
Jenkinsfile 。
声明式流水线:
Jenkinsfile (Declarative Pipeline)pipeline { agent any //在任何可用的代理上,执行流水线或它的任何阶段。 stages { stage('Build') { steps { // } } stage('Test') { steps { // } } stage('Deploy') { steps { // } } }}
脚本化流水线:
enkinsfile (Scripted Pipeline)node { stage('Build') { // } stage('Test') { // } stage('Deploy') { // }}
win10 修改gitlab账号_玩转gitlab + jenkins相关推荐
- gitlab贡献率_如何为GitLab做贡献
gitlab贡献率 我认为许多人都熟悉GitLab(公司或软件). 许多人可能没有意识到,GitLab还是一个开源社区,它始于我们的共同创始人Dmitriy Zaporozhet在2011年的第一次提 ...
- win10创建新账户_玩转Win10时间线技巧汇总
微软从Win10 1803开始引入了Timeline时间线功能,我们可以方便地找回浏览网页或打开文件的历史记录,并且在使用微软账户登录后,能够在不同的设备之间同步历史记录.MS酋长撰写本文来汇总一下W ...
- python京东注册账号_玩转京东支付(python)
说明 做了微信.支付宝和京东支付之后,发现,最扯蛋的支付,肯定是京东支付,要完整开发京东支付,必须要看完京东支付开发者文档的官网每一个角落,绝对不能凭你的任何经验去猜测有些流程,比如公私钥加解密(不看 ...
- GitLab账号初始密码忘记了, 如何重置?
如果GitLab对接了类似于LDAP这种统一用户管理系统,可以直接在LDAP中修改. 前两天在通过Terraform 部署的GitLab实例中, 初始的账号密码文件/etc/gitlab/initia ...
- git 本地如何配置多平台账号|本地 git 账号关联远程 github/gitlab/gitee
一.问题产生背景 工作用的公司 gitlab 账号,自己平常学习用的 github 账号,又只有一个电脑,公司账号当然不能用于github,所以需要分别配置两套密钥,分别用于自己搞事情研究和公司搬砖使 ...
- win10改计算机用户名,win10系统修改本地账号用户名的操作方法
很多小伙伴都遇到过对win10系统修改本地账号用户名进行设置的困惑吧,一些朋友看过网上对win10系统修改本地账号用户名设置的零散处理方法,并没有完完全全明白win10系统修改本地账号用户名的操作方法 ...
- gitlab使用_使用 Docker 部署 Gitlab
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,具有wiki和issue跟踪功能. GitLab是当前应用非常广泛的源代码管理系统. 1. ...
- git管理账户忘记了_强制找回GitLab管理员账户密码的方法
01. 概述 如果gitlab的密码忘记了,由于没有邮箱服务支持,所以可以通过后台直接操作git-shell,先找回管理员的密码.操作步骤如下 02. 环境 使用docker部署的gitlab,因此需 ...
- gitlab 端口_安装Gitlab-注意端口
文档本身并没有什么特殊,安装也很简单,只是修改端口这里如果有需要的可以看一下 安装Gitlab [root@deploy ~]# sudo yum -y install gitlab-ce 默认端口是 ...
最新文章
- forget word a out 1
- 硬核!一套基于SpringBoot + Vue 的开源物联网智能家居系统!
- Unet项目解析(7): 模型编译-优化函数、损失函数、指标列表
- python矩阵教程_numpy教程:矩阵matrix及其运算
- 计算机维修与维护入门,计算机组装与维护基础知识
- 企业域名备案流程_2021境外投资备案申报流程(办理企业境外投资证书注意事项)...
- 手机长时间不用自动断网_WiFi动不动就自动断网?都怪手机的默认设置!点这里一键修改...
- 如何把一个数据库的数据copy到另外一个数据库
- 快速开发框架介绍-懂你的RUOYI
- RS485通讯上下拉电阻的选择
- PC机组成——主板、芯片组与BIOS
- Cookie的SameSite属性
- Variation information(信息差异指标)
- 哪里买. com最便宜?
- 如何使用 Java 将 PDF 转换为文本 (TXT)
- 第三届太原理工大学程序设计竞赛新生赛(未完结)
- vue.js毕业设计,基于vue.js前后端分离教室预约系统(H5移动项目) 开题报告
- 百度官方:网站优化中死链处理指南与总结
- 随感——冬天走了、微软社区精英会议
- 虚拟私有云(Virtual Private Cloud,VPC)
热门文章
- 因未发项目奖金,一名程序员决定删代码泄愤
- 每日一皮:和女朋友争吵与阅读软件许可协议之间的共同点...
- 自己动手,丰衣足食:从零开始写个 IDEA 插件,要啥功能就做啥!
- java类功能说明注释添加,IDEA添加Java类注释模版的方法
- JAVA静态方法是否可以被继承 6,JAVA静态方法是否可以被继承?
- Tensor for ‘out‘ is on CPU, Tensor for argument #1 ‘self‘ is on CPU
- python操作gif
- dlib win32
- OSError: [WinError 126] 找不到指定的模块
- opencv通道拆分与合并:split和merge