jenkins实现html自动化上线

jenkins实现html自动化上线

将此文章写给我最心爱的女孩
docker部署jenkins教程

1.如果是用docker启动的jenkins,那么首先进入jenkins容器

docker exec -it jenkins bash

2.配置免密上传

在jenkins容器里面运行

# 生成密钥 一路默认回车即可
ssh-keygen
# 然后上传发送指定web服务器,会输入一次密码就好了
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.85.140

3.web服务器安装nginx并启动

服务器安装nginx
安装教程

4.编写shell脚本

这个dir的位置不是服务器的位置,可以在jenkins的job里面查看工作空间,所以取前面的jenkins容器路径,容器挂载之后是在/home/jenkins/jenkins_mount里面
在这里插入图片描述

#!/bin/bash
#这个脚本的位置在jenkins的挂载目录下
# /home/jenkins/jenkins_mount:这个是挂载的位置,进去创建一个scripts文件夹 mkdir scripts,将脚本放在这里面
# /home/jenkins/jenkins_mount/scripts
# 还需要在/home/jenkins/jenkins_mount里面创建一个data文件夹,并给777权限,用来存放打包的tar.gz文件
# mkdir data
# chmod 777 data

# 运行脚本需要传递的两个参数 一个是名称 一个是版本
project=$1
tag=$2
# web服务器的ip地址
IP="192.168.85.140"

# 要打包代码的位置
dir="/var/jenkins_home/workspace/HtmlTest"
# 打包命令
tar zcf /var/jenkins_home/data/${project}-${tag}.tar.gz -C ${dir} *

#对web主机操作
# 通过for循环依次发送文件
for n in `echo $IP`
do
scp /var/jenkins_home/data/${project}-${tag}.tar.gz root@${n}:/data
# 连接web服务器操作 创建/code/项目名文件夹,然后解压代码并将代码放在/code里面,然后删除nginx的html里面的东西,通过软连接实现访问html代码
ssh root@$n "mkdir -p /code/${project}-${tag} && \
tar xf /data/${project}-${tag}.tar.gz -C /code/${project}-${tag} && \
rm -rf /usr/local/nginx/html && \
chmod 755 -R /code/ && \
ln -s /code/${project}-${tag} /usr/local/nginx/html"
done

挂载目录

[root@npy jenkins_mount]# ls
com.cloudbees.hudson.plugins.folder.config.AbstractFolderConfiguration.xml  jenkins.plugins.git.GitHooksConfiguration.xml
com.dabsquared.gitlabjenkins.connection.GitLabConnectionConfig.xml          jenkins.security.apitoken.ApiTokenPropertyConfiguration.xml
com.dabsquared.gitlabjenkins.GitLabPushTrigger.xml                          jenkins.security.QueueItemAuthenticatorConfiguration.xml
config.xml                                                                  jenkins.security.ResourceDomainConfiguration.xml
copy_reference_file.log                                                     jenkins.security.UpdateSiteWarningsConfiguration.xml
credentials.xml                                                             jenkins.tasks.filters.EnvVarsFilterGlobalConfiguration.xml
data                                                                        jenkins.telemetry.Correlator.xml
fingerprints                                                                jobs
github-plugin-configuration.xml                                             logs
hudson.maven.MavenModuleSet.xml                                             nodeMonitors.xml
hudson.model.UpdateCenter.xml                                               nodes
hudson.plugins.build_timeout.global.GlobalTimeOutConfiguration.xml          org.jenkinsci.plugins.dockerbuildstep.DockerBuilder.xml
hudson.plugins.build_timeout.operations.BuildStepOperation.xml              org.jenkinsci.plugins.gitclient.GitHostKeyVerificationConfiguration.xml
hudson.plugins.emailext.ExtendedEmailPublisher.xml                          org.jenkinsci.plugins.github_branch_source.GitHubConfiguration.xml
hudson.plugins.git.GitSCM.xml                                               org.jenkinsci.plugins.workflow.flow.GlobalDefaultFlowDurabilityLevel.xml
hudson.plugins.git.GitTool.xml                                              org.jenkinsci.plugins.workflow.libs.GlobalLibraries.xml
hudson.plugins.gradle.injection.InjectionConfig.xml                         plugins
hudson.plugins.timestamper.TimestamperConfig.xml                            queue.xml
hudson.tasks.Mailer.xml                                                     queue.xml.bak
hudson.tasks.Shell.xml                                                      scriptApproval.xml
hudson.triggers.SCMTrigger.xml                                              scripts
identity.key.enc                                                            secret.key
io.jenkins.plugins.junit.storage.JunitTestResultStorageConfiguration.xml    secret.key.not-so-secret
jenkins.fingerprints.GlobalFingerprintConfiguration.xml                     secrets
jenkins.install.InstallUtil.lastExecVersion                                 updates
jenkins.install.UpgradeWizard.state                                         userContent
jenkins.metrics.api.MetricsAccessKey.xml                                    users
jenkins.model.ArtifactManagerConfiguration.xml                              war
jenkins.model.GlobalBuildDiscarderConfiguration.xml                         workflow-libs
jenkins.model.JenkinsLocationConfiguration.xml                              workspace
[root@npy jenkins_mount]# 

5.挂载目录中创建scripts文件夹

然后把shell脚本放进去

mkdir scripts
[root@npy scripts]# ls
auto_update.sh
[root@npy scripts]# pwd
/home/jenkins/jenkins_mount/scripts
[root@npy scripts]# cat auto_update.sh 
#!/bin/bash
#执行脚本默在这个目录下
# cd  /root/.jenkins/workspace/shops/shop

project=$1
tag=$2

IP="192.168.85.140"

# 打包位置
dir="/var/jenkins_home/workspace/HtmlTest"
tar zcf /var/jenkins_home/data/${project}-${tag}.tar.gz -C ${dir} *

#web主机操作
for n in `echo $IP`
do
scp -rp /var/jenkins_home/data/${project}-${tag}.tar.gz root@${n}:/data

ssh root@$n "mkdir -p /code/${project}-${tag} && \
tar xf /data/${project}-${tag}.tar.gz -C /code/${project}-${tag} && \
rm -rf /usr/local/nginx/html && \
chmod 755 -R /code/ && \
ln -s /code/${project}-${tag} /usr/local/nginx/html"
done

6.在挂载目录中创建创建data文件夹

增加权限,以后打包的项目就会放在这个里面

mkdir data
chmod 777 data

7.jenkins构建

进入jenkins界面,点击要配置的项目->配置
在这里插入图片描述
在里面选择shell脚本,然后写运行脚本的命令
再提醒一次,这个根路径是相对于jenkins来说的,上面可以找到根路径
第一个参数香Job名称,第二个参数是版本号,可修改

pwd
tag="v1.0.0"
sh /var/jenkins_home/scripts/auto_update.sh $JOB_BASE_NAME $tag

8.立即构建

构建之后成为绿色的就没问题了
在这里插入图片描述

9.访问

构建之后发送到web服务器的位置,然后输入web服务器的ip以及nginx配置的端口就可以访问了

http://192.168.85.140:80
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值