Centos7系统下配置Git服务器(7)-- CI/CD Jenkins代码自动上线

0x0 什么是CI/CD?

什么是CI:Continuous Integration,也就是持续集成
什么是CD:Continuous Delivery 和 Continuous Deployment,也就是持续交付、持续部署

持续集成:就是开发提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,测试过程可以确定新代码和原有代码能否正确地集成在一起,如果测试过程有问题,那么将返回代码给开发部门

持续交付:在持续集成的基础上,将集成后的代码部署到更贴近于真实的生产环境中。在贴近真实的生成环境中,可以提高数据支撑,且进一步做测试,如果进一步测试没有问题,那么可以部署到线上的生成环境中

持续部署:是在持续交付的基础上,把部署到生产环境的过程自动化,实现部署无需人工参与,如何在部署的过程中出现问题,将立即回滚代码

0x1 企业案例基于Gitee/GitLab/Git代码仓库的自动化部署

1)主机规划

名称主机规划配置安装软件系统
GitLab192.168.0.1194C 8GGitLab-CECentos7.6 1810
jenkins192.168.0.1134C 4GJenkinsCentos7.6 1810
web01192.168.0.1082C 4GNginxCentos7.6 1810
image.png

2)设置用户组添加用户

Step 1 GitLab创建用户组


image.png

Step 2 添加成员


image.png

Step3 创建新用户


image.png

image.png
image.png

image.png

创建完毕用户修改完毕密码,把用户添加到用户组给与开发权限

Step4 添加到用户群组


image.png

image.png

image.png

添加完毕!

3)创建项目仓库

创建项目仓库


image.png

image.png

image.png

【注意】我们直接从Gitee上找一个开源项目拉下来测试

实际开发中就是自己项目组的项目https://gitee.com/kangjie1209/monitor.git

image.png

image.png

image.png

项目迁移完毕

4)设置分支保护

正常情况下,我们是不允许在master分支上修改内容的,我们只能创建新的分支修改,修改完成后进行合并,这里我们做分支保护的目的是为了让其他用户如dev用户在修改完代码内容之后,发起合并请求,root用户进行审核完成才能进行合并
1、无分支保护情况
我们首先登陆dev用户,要了解dev是开发用户,root是老大,老大一般做审核,拥有最高权限退出root用户.


image.png

dev用户第一登录的时候会被要求修改密码。修改密码后重新登录。


image.png

5)首先创建一个新的分支,在新分支上修改内容(重要内容)

注意这里是在新的分支上操作的。


image.png

创建新的Dev分支

已经到Dev分支进行操作

6)在创建的Dev分支上进行开发,比如 修改代码或添加新的代码(重要内容)

点击项目中的404.html文件,打开现在的编辑器


image.png

修改了404.html文件

7)现在开发完毕请求上线代码,也就是合并分支(重要内容)

Dev用户提交合并分支请求(受保护的分支只能root授权通过才可以)


image.png

image.png

root账号通过合并请求以后合并到主分支

8) 取消受保护的分支设置,Dev开发人员可以自己合并分支

如果发现开发人员不能合并分支(是项目已经受限,需要root用户授权合并,我们也可以设置项目的分支权限)


image.png

image.png

image.png

修改index.html


image.png

image.png

image.png

0x2 Jenkins实现自动部署

Step 1

【实例】从GitLab代码仓库拉取项目到服务器自动构建


创建新任务

创建一个自由风格的项目


image.png

image.png

插件安装在可选插件搜索过滤gitlab 然后勾选插件 Blue Ocean Pipeline Editor以及Ant Plugin 还有Build Timeout等插件

Step 2 源码管理将gitlab仓库和jenkins关联

Jenkins主机的SSH KEY复制到GitLab


image.png

image.png

image.png

Jenkins插件目录
[root@jenkins jenkins]# ll /var/lib/jenkins/plugins

[root@jenkins home]# ll /var/lib/jenkins/plugins
total 120424
drwxr-xr-x. 7 jenkins jenkins      124 Jan 20 06:30 ace-editor
-rw-r--r--. 1 jenkins jenkins  4279042 Jan 20 06:29 ace-editor.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 ant
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 antisamy-markup-formatter
-rw-r--r--. 1 jenkins jenkins   107210 Jan 20 06:29 antisamy-markup-formatter.jpi
-rw-r--r--. 1 jenkins jenkins    82963 Jan 20 06:29 ant.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 apache-httpcomponents-client-4-api
-rw-r--r--. 1 jenkins jenkins  1761975 Jan 20 06:30 apache-httpcomponents-client-4-api.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 authentication-tokens
-rw-r--r--. 1 jenkins jenkins    14638 Jan 20 06:30 authentication-tokens.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-autofavorite
-rw-r--r--. 1 root    root       60849 Jan 20 09:23 blueocean-autofavorite.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-bitbucket-pipeline
-rw-r--r--. 1 root    root     2449153 Jan 20 09:23 blueocean-bitbucket-pipeline.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-commons
-rw-r--r--. 1 root    root       85384 Jan 20 09:23 blueocean-commons.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-config
-rw-r--r--. 1 root    root       61305 Jan 20 09:23 blueocean-config.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-core-js
-rw-r--r--. 1 root    root     1075851 Jan 20 09:23 blueocean-core-js.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-dashboard
-rw-r--r--. 1 root    root     2744727 Jan 20 09:23 blueocean-dashboard.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-display-url
-rw-r--r--. 1 root    root      648567 Jan 20 09:23 blueocean-display-url.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-events
-rw-r--r--. 1 root    root     5171819 Jan 20 09:23 blueocean-events.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-github-pipeline
-rw-r--r--. 1 root    root      116890 Jan 20 09:23 blueocean-github-pipeline.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-git-pipeline
-rw-r--r--. 1 root    root      835954 Jan 20 09:23 blueocean-git-pipeline.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-i18n
-rw-r--r--. 1 root    root       14963 Jan 20 09:23 blueocean-i18n.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-jira
-rw-r--r--. 1 root    root       28715 Jan 20 09:23 blueocean-jira.jpi
-rw-r--r--. 1 root    root       69904 Jan 20 09:23 blueocean.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-jwt
-rw-r--r--. 1 root    root      777943 Jan 20 09:23 blueocean-jwt.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-personalization
-rw-r--r--. 1 root    root      703909 Jan 20 09:23 blueocean-personalization.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-pipeline-api-impl
-rw-r--r--. 1 root    root      238422 Jan 20 09:23 blueocean-pipeline-api-impl.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-pipeline-editor
-rw-r--r--. 1 root    root     1641653 Jan 20 09:23 blueocean-pipeline-editor.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-pipeline-scm-api
-rw-r--r--. 1 root    root      301729 Jan 20 09:23 blueocean-pipeline-scm-api.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 blueocean-rest
drwxr-xr-x. 6 root    root          85 Jan 20 09:23 blueocean-rest-impl
-rw-r--r--. 1 root    root     1071360 Jan 20 09:23 blueocean-rest-impl.jpi
-rw-r--r--. 1 root    root      102278 Jan 20 09:23 blueocean-rest.jpi
drwxr-xr-x. 6 root    root          85 Jan 20 09:23 blueocean-web
-rw-r--r--. 1 root    root     1411835 Jan 20 09:23 blueocean-web.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 bouncycastle-api
-rw-r--r--. 1 jenkins jenkins  4885133 Jan 20 06:29 bouncycastle-api.jpi
drwxr-xr-x. 5 jenkins jenkins       70 Jan 20 06:30 branch-api
-rw-r--r--. 1 jenkins jenkins   308984 Jan 20 06:30 branch-api.jpi
drwxr-xr-x. 4 jenkins jenkins      204 Jan 20 06:29 build-timeout
-rw-r--r--. 1 jenkins jenkins    95728 Jan 20 06:29 build-timeout.jpi
drwxr-xr-x. 5 root    root          70 Jan 20 09:23 cloudbees-bitbucket-branch-source
-rw-r--r--. 1 root    root      403277 Jan 20 09:23 cloudbees-bitbucket-branch-source.jpi
drwxr-xr-x. 5 jenkins jenkins       70 Jan 20 06:29 cloudbees-folder
-rw-r--r--. 1 jenkins jenkins   219708 Jan 20 06:29 cloudbees-folder.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 command-launcher
-rw-r--r--. 1 jenkins jenkins    38820 Jan 20 06:29 command-launcher.jpi
drwxr-xr-x. 6 jenkins jenkins       82 Jan 20 06:29 credentials
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 credentials-binding
-rw-r--r--. 1 jenkins jenkins    80803 Jan 20 06:29 credentials-binding.jpi
-rw-r--r--. 1 jenkins jenkins   971342 Jan 20 06:29 credentials.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 display-url-api
-rw-r--r--. 1 jenkins jenkins    27121 Jan 20 06:30 display-url-api.jpi
drwxr-xr-x. 5 jenkins jenkins       70 Jan 20 06:30 docker-commons
-rw-r--r--. 1 jenkins jenkins    91018 Jan 20 06:30 docker-commons.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 docker-workflow
-rw-r--r--. 1 jenkins jenkins    82951 Jan 20 06:30 docker-workflow.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 durable-task
-rw-r--r--. 1 jenkins jenkins  5283231 Jan 20 06:29 durable-task.jpi
drwxr-xr-x. 7 jenkins jenkins       97 Jan 20 06:30 email-ext
-rw-r--r--. 1 jenkins jenkins   796637 Jan 20 06:30 email-ext.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 favorite
-rw-r--r--. 1 root    root       34106 Jan 20 09:23 favorite.jpi
drwxr-xr-x. 5 jenkins jenkins      176 Jan 20 06:30 git
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 git-client
-rw-r--r--. 1 jenkins jenkins  8503329 Jan 20 06:30 git-client.jpi
drwxr-xr-x. 7 jenkins jenkins      106 Jan 20 06:30 github
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 github-api
-rw-r--r--. 1 jenkins jenkins  1168178 Jan 20 06:30 github-api.jpi
drwxr-xr-x. 5 jenkins jenkins       98 Jan 20 06:30 github-branch-source
-rw-r--r--. 1 jenkins jenkins   280664 Jan 20 06:30 github-branch-source.jpi
-rw-r--r--. 1 jenkins jenkins  2124964 Jan 20 06:30 github.jpi
-rw-r--r--. 1 jenkins jenkins   902751 Jan 20 06:30 git.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:31 gitlab-hook
-rw-r--r--. 1 root    root     1114041 Jan 20 09:00 gitlab-hook.jpi
drwxr-xr-x. 5 root    root          86 Jan 20 09:31 gitlab-oauth
-rw-r--r--. 1 root    root     1615322 Jan 20 08:59 gitlab-oauth.jpi
drwxr-xr-x. 6 root    root          82 Jan 20 09:31 gitlab-plugin
-rw-r--r--. 1 root    root     8456411 Jan 20 08:59 gitlab-plugin.jpi
drwxr-xr-x. 5 jenkins jenkins       70 Jan 20 06:30 git-server
-rw-r--r--. 1 jenkins jenkins    30408 Jan 20 06:30 git-server.jpi
drwxr-xr-x. 5 jenkins jenkins      169 Jan 20 06:30 gradle
-rw-r--r--. 1 jenkins jenkins    58363 Jan 20 06:30 gradle.jpi
drwxr-xr-x. 5 jenkins jenkins       73 Jan 20 06:30 handlebars
-rw-r--r--. 1 jenkins jenkins    67784 Jan 20 06:30 handlebars.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 handy-uri-templates-2-api
-rw-r--r--. 1 root    root      594612 Jan 20 09:23 handy-uri-templates-2-api.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 htmlpublisher
-rw-r--r--. 1 root    root       71528 Jan 20 09:23 htmlpublisher.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 jackson2-api
-rw-r--r--. 1 jenkins jenkins  1972400 Jan 20 06:30 jackson2-api.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 jdk-tool
-rw-r--r--. 1 jenkins jenkins    69922 Jan 20 06:29 jdk-tool.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 jenkins-design-language
-rw-r--r--. 1 root    root     2363785 Jan 20 09:23 jenkins-design-language.jpi
drwxr-xr-x. 4 root    root         258 Jan 20 09:23 jira
-rw-r--r--. 1 root    root     4542959 Jan 20 09:23 jira.jpi
drwxr-xr-x. 5 jenkins jenkins       73 Jan 20 06:30 jquery-detached
-rw-r--r--. 1 jenkins jenkins   211945 Jan 20 06:30 jquery-detached.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 jsch
-rw-r--r--. 1 jenkins jenkins   279709 Jan 20 06:30 jsch.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 junit
-rw-r--r--. 1 jenkins jenkins   361632 Jan 20 06:29 junit.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 ldap
-rw-r--r--. 1 jenkins jenkins   130445 Jan 20 06:30 ldap.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 localization-support
-rw-r--r--. 1 jenkins jenkins    23848 Jan 20 06:30 localization-support.jpi
drwxr-xr-x. 5 jenkins jenkins       70 Jan 20 06:30 localization-zh-cn
-rw-r--r--. 1 jenkins jenkins   542952 Jan 20 06:30 localization-zh-cn.jpi
drwxr-xr-x. 5 jenkins jenkins       67 Jan 20 06:30 lockable-resources
-rw-r--r--. 1 jenkins jenkins    74635 Jan 20 06:30 lockable-resources.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 mailer
-rw-r--r--. 1 jenkins jenkins   126236 Jan 20 06:30 mailer.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 mapdb-api
-rw-r--r--. 1 jenkins jenkins   396306 Jan 20 06:30 mapdb-api.jpi
drwxr-xr-x. 5 jenkins jenkins       70 Jan 20 06:30 matrix-auth
-rw-r--r--. 1 jenkins jenkins   128779 Jan 20 06:30 matrix-auth.jpi
drwxr-xr-x. 6 jenkins jenkins       82 Jan 20 06:29 matrix-project
-rw-r--r--. 1 jenkins jenkins   230120 Jan 20 06:29 matrix-project.jpi
drwxr-xr-x. 5 root    root          70 Jan 20 09:23 mercurial
-rw-r--r--. 1 root    root      225189 Jan 20 09:23 mercurial.jpi
drwxr-xr-x. 5 jenkins jenkins       73 Jan 20 06:30 momentjs
-rw-r--r--. 1 jenkins jenkins    37051 Jan 20 06:30 momentjs.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pam-auth
-rw-r--r--. 1 jenkins jenkins  1504184 Jan 20 06:30 pam-auth.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pipeline-build-step
-rw-r--r--. 1 jenkins jenkins    34632 Jan 20 06:30 pipeline-build-step.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pipeline-github-lib
-rw-r--r--. 1 jenkins jenkins     8479 Jan 20 06:30 pipeline-github-lib.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pipeline-graph-analysis
-rw-r--r--. 1 jenkins jenkins    20613 Jan 20 06:30 pipeline-graph-analysis.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pipeline-input-step
-rw-r--r--. 1 jenkins jenkins    30501 Jan 20 06:30 pipeline-input-step.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pipeline-milestone-step
-rw-r--r--. 1 jenkins jenkins    18994 Jan 20 06:30 pipeline-milestone-step.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pipeline-model-api
-rw-r--r--. 1 jenkins jenkins  2436323 Jan 20 06:30 pipeline-model-api.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pipeline-model-declarative-agent
-rw-r--r--. 1 jenkins jenkins     6319 Jan 20 06:30 pipeline-model-declarative-agent.jpi
drwxr-xr-x. 5 jenkins jenkins       70 Jan 20 06:30 pipeline-model-definition
-rw-r--r--. 1 jenkins jenkins  1490265 Jan 20 06:30 pipeline-model-definition.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pipeline-model-extensions
-rw-r--r--. 1 jenkins jenkins    38764 Jan 20 06:30 pipeline-model-extensions.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pipeline-rest-api
-rw-r--r--. 1 jenkins jenkins   145776 Jan 20 06:30 pipeline-rest-api.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pipeline-stage-step
-rw-r--r--. 1 jenkins jenkins    19872 Jan 20 06:30 pipeline-stage-step.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 pipeline-stage-tags-metadata
-rw-r--r--. 1 jenkins jenkins    10708 Jan 20 06:30 pipeline-stage-tags-metadata.jpi
drwxr-xr-x. 7 jenkins jenkins      100 Jan 20 06:30 pipeline-stage-view
-rw-r--r--. 1 jenkins jenkins   201594 Jan 20 06:30 pipeline-stage-view.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 plain-credentials
-rw-r--r--. 1 jenkins jenkins    17459 Jan 20 06:29 plain-credentials.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 pubsub-light
-rw-r--r--. 1 root    root       33985 Jan 20 09:23 pubsub-light.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 resource-disposer
-rw-r--r--. 1 jenkins jenkins    21791 Jan 20 06:29 resource-disposer.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:31 ruby-runtime
-rw-r--r--. 1 root    root    19016644 Jan 20 08:59 ruby-runtime.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 scm-api
-rw-r--r--. 1 jenkins jenkins   218705 Jan 20 06:29 scm-api.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 script-security
-rw-r--r--. 1 jenkins jenkins  1004965 Jan 20 06:29 script-security.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 sse-gateway
-rw-r--r--. 1 root    root      213569 Jan 20 09:23 sse-gateway.jpi
drwxr-xr-x. 5 jenkins jenkins       70 Jan 20 06:29 ssh-credentials
-rw-r--r--. 1 jenkins jenkins    65885 Jan 20 06:29 ssh-credentials.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 ssh-slaves
-rw-r--r--. 1 jenkins jenkins   179773 Jan 20 06:30 ssh-slaves.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 structs
-rw-r--r--. 1 jenkins jenkins    44501 Jan 20 06:29 structs.jpi
drwxr-xr-x. 4 jenkins jenkins      275 Jan 20 06:30 subversion
-rw-r--r--. 1 jenkins jenkins  7350139 Jan 20 06:30 subversion.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 timestamper
-rw-r--r--. 1 jenkins jenkins    82494 Jan 20 06:29 timestamper.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 token-macro
-rw-r--r--. 1 jenkins jenkins   654142 Jan 20 06:29 token-macro.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 trilead-api
-rw-r--r--. 1 jenkins jenkins   384303 Jan 20 06:29 trilead-api.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:23 variant
-rw-r--r--. 1 root    root       10252 Jan 20 09:23 variant.jpi
drwxr-xr-x. 4 root    root          56 Jan 20 09:31 windows-slaves
-rw-r--r--. 1 root    root      470244 Jan 20 08:59 windows-slaves.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 workflow-aggregator
-rw-r--r--. 1 jenkins jenkins     8655 Jan 20 06:30 workflow-aggregator.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 workflow-api
-rw-r--r--. 1 jenkins jenkins   155980 Jan 20 06:29 workflow-api.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 workflow-basic-steps
-rw-r--r--. 1 jenkins jenkins   147305 Jan 20 06:30 workflow-basic-steps.jpi
drwxr-xr-x. 6 jenkins jenkins       86 Jan 20 06:30 workflow-cps
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 workflow-cps-global-lib
-rw-r--r--. 1 jenkins jenkins  3435811 Jan 20 06:30 workflow-cps-global-lib.jpi
-rw-r--r--. 1 jenkins jenkins   597525 Jan 20 06:30 workflow-cps.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 workflow-durable-task-step
-rw-r--r--. 1 jenkins jenkins    99500 Jan 20 06:29 workflow-durable-task-step.jpi
drwxr-xr-x. 5 jenkins jenkins       70 Jan 20 06:30 workflow-job
-rw-r--r--. 1 jenkins jenkins   111555 Jan 20 06:30 workflow-job.jpi
drwxr-xr-x. 5 jenkins jenkins       70 Jan 20 06:30 workflow-multibranch
-rw-r--r--. 1 jenkins jenkins    85719 Jan 20 06:30 workflow-multibranch.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:30 workflow-scm-step
-rw-r--r--. 1 jenkins jenkins    15370 Jan 20 06:30 workflow-scm-step.jpi
drwxr-xr-x. 4 jenkins jenkins       56 Jan 20 06:29 workflow-step-api
-rw-r--r--. 1 jenkins jenkins    75642 Jan 20 06:29 workflow-step-api.jpi
drwxr-xr-x. 5 jenkins jenkins       70 Jan 20 06:29 workflow-support
-rw-r--r--. 1 jenkins jenkins   380755 Jan 20 06:29 workflow-support.jpi
drwxr-xr-x. 5 jenkins jenkins       68 Jan 20 06:29 ws-cleanup
-rw-r--r--. 1 jenkins jenkins  6349503 Jan 20 06:29 ws-cleanup.jpi

Step3 继续设置构建环境Webhooks


image.png

image.png

image.png

设置配置到GitLab中


image.png

添加报错 是因为我们这里没有开启内网服务
image.png

image.png

添加成功!

Step4 添加构建在Jenkins服务器上构建脚本

cd /home/script/
vim do.sh
#!/bin/sh
DATE=$(date +%Y-%m-%d-%H-%M-%S)
CODE_DIR="/var/lib/jenkins/workspace/Jenkins-Test/"
WEB_DIR="/var/www/"
IP=192.168.0.108
get_code_tar(){
        cd $CODE_DIR && tar zcf /opt/web-$DATE.tar.gz ./*
}
scp_code_web(){
        scp /opt/web-$DATE.tar.gz $IP:$WEB_DIR
}
code_tarxf(){
        ssh $IP "cd $WEB_DIR &&mkdir web-$DATE && tar xf web-$DATE.tar.gz -C web-$DATE"
}
ln_html(){
         ssh $IP "cd $WEB_DIR && rm -rf html && ln -s web-$DATE html"
}
main(){
        get_code_tar;
        scp_code_web;
        code_tarxf;
        ln_html;
}
main

Step5 Jenkins要推送到Web服务器 设置免密登录

[root@jenkins .ssh]# ssh-copy-id -i root@192.168.0.108
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.0.108 (192.168.0.108)' can't be established.
ECDSA key fingerprint is SHA256:1GMXKe1kJLq7jEyAGkQYWoVpa2/H53bfRLInTWPCcDY.
ECDSA key fingerprint is MD5:61:6e:10:be:6b:99:8e:02:f7:8a:07:94:1f:27:fa:0e.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.108's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.0.108'"
and check to make sure that only the key(s) you wanted were added.

[root@jenkins .ssh]# ssh 'root@192.168.0.108'
Last login: Mon Jan 20 10:19:29 2020 from 192.168.0.103
[root@web01 ~]# exit
logout
Connection to 192.168.0.108 closed.

0x3 web服务器Apache2.4.6

[root@web01 ~]# yum -y install httpd
[root@web01 ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Aug  8 2019 11:41:18
[root@web01 ~]# sudo firewall-cmd --permanent --zone=public --add-service=http
success
[root@web01 ~]# sudo firewall-cmd --permanent --zone=public --add-service=https
success
[root@web01 ~]# sudo firewall-cmd --reload
success
[root@web01 ~]#

出现测试页面


image.png

0x4 在GitLab服务器上修改代码会触发Jenkins,推送到Web服务器

image.png
image.png
image.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络安全-李彦亮(本人)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值