CI和CD是软件开发中持续集成和持续交付的缩写。
CI代表持续集成(Continuous Integration),是一种实践,旨在通过自动化构建、测试和代码静态分析等过程,频繁地将代码变更合并到共享存储库中。其目的是快速发现和修复代码问题,确保开发团队对软件产品持续交付。其中,持续指的是在整个开发周期中经常性地进行集成。
CD代表持续交付(Continuous Delivery)和持续部署(Continuous Deployment)。持续交付是一种实践,它将 CI 的结果自动发布到一个暂存区域中,等待进一步的人工测试和批准,然后再将其发布到生产环境中。而持续部署则是将所有 CI 和 CD 步骤无缝集成在一起,以自动化地发布代码到生产环境中。
使用第三方云产品:如阿里云的云效、腾讯云的CODING DevOps
下面就以云效介绍为主,云效是阿里云提供的免费企业管理平台,其中可用的应用有项目协作、代码仓库、流水线管理、制品仓库、测试管理
链接:https://accountid-devops.aliyun.com/
进入链接首次会让新建企业(一般是管理员去创建企业,成员只是跟据管理员发来的邀请链接加入),
以下重点介绍代码管理、流水线、制品管理
代码仓库中重点介绍代码检测,就是对提交的代码进行检测,检测不通过就不进行提交
检测规则可以多选
配置好检测方案后就可以进行检测任务的创建了,就可以配置代码仓库的关联触发。也可以导入其他的代码仓库地址
流水线就是控制代码自动化部署的配置,能实现CI/CD的持续集成发布的功能,在流水线中可以自动配置代码的检测
在新建的流水线中可选部署的方案
选择自己适用的部署方案,进行每个任务的编辑
源头可以分为现有的代码仓库的地址。和已经有的制品源地址。也可以是某流水线的源头
制品是向服务器发送的部署包,是压缩文件的类型,方便文件传输,方便代码的回滚和管理
Jenkins是一种开源的自动化服务器软件,最初是Hudson项目的分支。它提供了构建、测试和部署软件项目的持续集成(CI)和持续交付(CD)功能。
Jenkins可以自动化执行各种任务,如构建代码、运行测试、检查代码质量等。通过使用丰富的插件生态系统,Jenkins能够与许多其他工具和技术集成,包括Docker、Git、GitHub、SVN、Maven等等。
GitLab是一个基于Git版本控制系统的、用于存储和管理代码的Web托管服务。它提供了代码仓库管理、问题追踪、CI/CD等一系列软件开发所需的功能。
#配置阿里云仓库
wget http://mirrors.aliyun.com/repo/Centos-7.repo
mv Centos-7.repo /etc/yum.repos.d/
yum install -y epel-release
#安装gitlab所需组件
yum -y install curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python.x86_64
#默认,使用postfx发送邮件
systemctl enable postfix --now
#从本地下载gitlab包
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
#或者配置yum仓库
vim /etc/yum.repo.d/gitlab.repo
[gitlab]
name=gitlab
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
repo_gpgcheck=0
enabled=1
gpgcheck=0
yun -y install gitlab-ce
#我选择的从本地下载,上传
#解包
rpm -ivh gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm
警告:gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID f27eab47: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:gitlab-ce-15.9.4-ce.0.el7 ################################# [100%]
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=15-9
#安装完成后修改访问地址
vim /etc/gitlab/gitlab.rb
....
external_url 'http://192.168.100.10'
....
#修改完后重置gitlab(时间较长,5分钟左右)
gitlab-ctl reconfigure
#到最后看到gitlab Reconfigured!就OK了
#浏览器访问时内存要大于4G,不然内存不足会报501,另外注意防火墙规则
#初始密码在/etc/gitlab/initial_root_password
cat /etc/gitlab/initial_root_password
[root@localhost ~]# cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: 0kevvItShgNxHYdvPywLB1hBDTtidJf7TWAlXvymKkU=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
Password后边的是初始密码
#初始化密码
gitlab-rake "gitlab:password:reset[root]"
[root@localhost bin]# gitlab-rake "gitlab:password:reset[root]"
Enter password:
Confirm password:
Password successfully updated for user with username root.
#密码必须8个以上的字符,最好为字母+数字
or
# 进入控制台
gitlab-rails console -e production
# 查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# 修改密码为lyh20030930
user.password='lyh20030930'
user.password_confirmation = 'lyh20030930'
# 保存
user.save!
#退出
exit