aws ec2 配置jenkins和gitlab
创始人
2024-01-15 09:06:20

环境搭建

下载jenkins的war包,启动jenkisn

nohup java -jar jenkins.war --httpPort=8091 > jenkins.log  2>&1 &

docker安装gitlab

默认情况下,Omnibus GitLab 会自动为初始管理员用户账号 (root) 生成密码,并将其存储到 /etc/gitlab/initial_root_password 至少 24 小时

mkdir /home/ec2-user/gitlab
export GITLAB_HOME=/home/ec2-user/gitlab
sudo docker run --detach \--hostname gitlab.com \--publish 8443:443 --publish 8092:80 --publish 8022:22 \--name gitlab \--restart always \--volume $GITLAB_HOME/config:/etc/gitlab \--volume $GITLAB_HOME/logs:/var/log/gitlab \--volume $GITLAB_HOME/data:/var/opt/gitlab \--shm-size 256m \gitlab/gitlab-ee:latest

初始化过程可能需要很长时间

sudo docker logs -f gitlab

获取密码

sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
TJQ5Bx7yl8a+/JQlhe33hZgrfig+PTUIYaIzjapJ2HA=

部署简单项目

使用idea的springboot initializer创建一个sprintboot项目,https://cloud.tencent.com/developer/article/1594258

创建简单的restapi接口,日后逐步完善

package com.weiz.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@RequestMapping("/hello")public String hello() {return "Hello Spring Boot!";}
}

启动项目

在这里插入图片描述
在gitlab中创建项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j8kgPQai-1666505675600)(assets/image-20221022232639189.png)]

创建完毕之后有详细说明,clone或者加入现有仓库,这里要注意如果修改端口也要添加,例如我是8092

cd existing_repo
git remote add origin http://gitlab.com:8092/root/java-project.git
git branch -M main
git push -uf origin main

在jenkins中创建maven项目,主要配置项目为gitlab仓库名称和maven路径

在这里插入图片描述

在jenkisn机器上安装maven

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hNB9ga5a-1666505675603)(assets/image-20221022235911806.png)]

安装 publish ssh插件,通过ssh连接进行发布,在系统配置下添加SSH Servers作为部署的目标

在Pre Steps阶段自定义执行命令,例如删除之前的部署包

在jenkins的maven项目中配置Post Steps为**Send files or execute commands over SSH**[ ](http://52.81.54.188:8091/job/first/configure#)

点击立即构建可以看到jar包发到目标主机,并执行相应shell命令

在这里插入图片描述

查看部署成功

$ jps
13155 Jps
12772 TestSpringbootCICD-0.0.1-SNAPSHOT.jar
$ curl 127.0.0.1:8080/hello
Hello Spring Boot!

集群和并发构建

jenkins可以配置集群,master通过向节点发送agent配置,将构建任务转移到子节点上

创建节点

在这里插入图片描述

配置节点,这里使用ssh的方式
在这里插入图片描述

节点加入日志

在这里插入图片描述

加入成功

在这里插入图片描述

查看目录

$ tree remoting
remoting
├── jarCache
│   ├── 03
│   │   └── E3B418DE52CE1D126971EC175B672C.jar
│   ├── 08
│   │   └── 82AD55682C95773C875C27C9159397.jar
│   ├── 0F
│   │   └── 3B4B41FA3E95DE9A5D0B01F64C9835.jar
│   ├── 28
│   │   └── B0BD31A429FA04C24972CEC2D8FDDC.jar
│   ├── 52
│   │   └── 0A72C518A90310D212D3EFACFEDA8D.jar
│   ├── 66
│   │   └── 6F8BD601D4FB03360D91033FA9F010.jar
│   ├── B3
│   │   └── 0F63788978A11629EABC8579E5C70F.jar
│   ├── DD
│   │   └── CA0DD5CB00EB03D2A10BDCB467FE34.jar
│   └── FD
│       └── C3016DEDE06111EBD459F70877F57B.jar
└── logs├── remoting.log.0└── remoting.log.0.lck

之后创建的构建,将按照配置选择启动在子节点上

创建简单流水线

在这里插入图片描述

示例pipeline脚本,不是很好写一般也没必要,可以使用流水线片段生成器

pipeline {agent anytools {maven "M3"}stages {stage('Build') {steps {git 'https://github.com/jglick/simple-maven-project-with-tests.git'sh "mvn -Dmaven.test.failure.ignore=true clean package"}
、post {success {junit '**/target/surefire-reports/TEST-*.xml'archiveArtifacts 'target/*.jar'}}}}
}

生成片段

在这里插入图片描述

这里使用publish over ssh,可选的很多

在这里插入图片描述

生成的片段如下,还是比较复杂,按照需要回填到pipeline中即可

sshPublisher(publishers: [sshPublisherDesc(configName: '172.31.26.66', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'nohup jar -jar springboot.jar 2>&1 &', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/home/ec2-user/', remoteDirectorySDF: false, removePrefix: '/home/ec2-user/first', sourceFiles: '**/*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...