关键词:
gitlab 的 CI/CD 配置管理 (二)
标签(空格分隔):运维系列
- 一:gitlab CI/CD 介绍
- 二:配置gitlab的CI/CD 的runner
- 三:代码的MAVEN打包环境
- 四:配置gitlab的CI 文件
- 五:发布项目
一: gitlab CI/CD介绍
1.1 gitlab CI/CD概述
Gitlab是常用的开源git代码管理工具之一,随着发展也推出了ci/cd解决方案.
顾名思义具体来说ci/cd主要完成以下两个工作.
ci(持续构建)
代码提交后触发自动化的单元测试,代码预编译,构建镜像,上传镜像等.
cd(持续发布)
持续发布则指将构建好的程序发布到各种环境,如预发布环境,正式环境.
官网: https://docs.gitlab.com/ee/ci/README.html
1.2 特性
gitlab ci/cd是由独立的runner程序完成,runner采用go语言编写,因此可以很好的进行跨平台,通常可以将runner部署到任何gitlab server之外的服务器,从而避免对gitlab server的影响.
官网:https://docs.gitlab.com/runner/
二:配置gitlab的CI/CD 的runner
2.1 安装gitlab-runner
参考:
https://docs.gitlab.com/runner/install/linux-repository.html
在 CentOS 7 上面的安装
Add GitLab‘s official repository:
# For RHEL/CentOS/Fedora
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
安装runner
# For RHEL/CentOS/Fedora
sudo yum install gitlab-runner
2.2 项目注册到到runner
参考官网:
https://docs.gitlab.com/runner/register/index.html
找到要发布项目的注册信息
Setup a specific Runner manually
安装一个与 GitLab CI 兼容的 Runner (如需了解更多的安装信息,请查看 GitLab Runner)
在 Runner 设置时指定以下 URL: http://172.17.100.11/
在安装过程中使用以下注册令牌: kA5JA5myz4aZR6MRgEBm
启动 Runner!
gitlab-runner register
service gitlab-runner start
chkconfig gitlab-runner on
在gitlab 上面找到runner 将项目添加到runner里面去
这边如果有多个项目都可以添加到这个runner 里面去
##三:代码的MAVEN打包环境
配置 maven
tar -zxvf apache-maven-3.5.3-bin.tar.gz
mv apache-maven-3.5.3 /usr/local/maven
vim /etc/profile
---
在Java环境变量下面加上 maven的环境变量
## maven
export MAVEN_HOME=/usr/local/maven
PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin
---
source /etc/profile
mvn -version
mkdir -p /deploy/solo # 创建 打出solo.war 的目录
cd /root/project/
rm -rf solo
git clone http://172.17.100.11/TL-flyfish/solo.git
尝试使用 命令行的方式编译项目:
首次编译会下载包会很慢
cd solo
mvn clean package
mvn install
mvn install package -Dmaven.test.skip=true
最后会打出solo.war包
表示命令行打包完成
maven 到默认下载的依赖包在/root/.m2/repository
四:配置gitlab的CI 文件
4.1 配置CI 的 运行文件gitlab-ci.yml 打出war包测试
stages:
- build
- run
- deploy
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
cache:
paths:
- .m2/repository/
.solo-build-job: &solo-build-job
script:
- mvn clean package
- mvn install
- mvn install package -Dmaven.test.skip=true
- ls -ld *
solo-build:
when: manual
stage: build
script:
- mvn clean package
- mvn install
- mvn install package -Dmaven.test.skip=true
- cd $CI_PROJECT_DIR/target/
- ls -ld *
执行构建
最后打出solo.war的包
五: 发布项目
5.1: 部署一台tomcat 中间件的服务器
tomcat 服务器 IP: 172.17.100.12
打通172.17.100.11 和172.17.100.12 的无密码登录认证。
下载:tomcat
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
tar -zxvf apache-tomcat-8.5.32.tar.gz
mv apache-tomcat-8.5.32 /usr/local/tomcat
启动tomcat:
cd /usr/local/tomcat/bin
./startup.sh
访问: 172.17.100.12:8080
5.2 在gitlab-ci.yml 增加发布步骤
stages:
- build
- run
- deploy
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
cache:
paths:
- .m2/repository/
.solo-build-job: &solo-build-job
script:
- mvn clean package
- mvn install
- mvn install package -Dmaven.test.skip=true
- ls -ld *
solo-build:
when: manual
stage: build
script:
- sudo rm -rf /deploy/solo/solo.war
- mvn clean package
- mvn install
- mvn install package -Dmaven.test.skip=true
- cd $CI_PROJECT_DIR/target/
- ls -ld *
- cp -ap solo.war /deploy/solo/
solo-run:
when: manual
stage: run
script:
- cd /deploy/solo
- md5sum solo.war
solo-deploy:
when: manual
stage: deploy
script:
- cd /deploy/solo/
- scp solo.war [email protected]:/root
- cd /deploy/script
- sh -x deploy-solo.sh
发布需要配置 一个发布脚本:
在 172.17.100.11 上面写编写脚本:
mkdir /deploy/script -p
---
#!/bin/bash
DATE=`date +%Y-%m-%d-%H-%M`
ssh [email protected] << eof
cd /usr/local/tomcat/bin/
sh -x shutdown.sh
cd /usr/local/tomcat/webapps/
mv solo.war /data/backup/solo.war$DATE
cp /root/solo.war /usr/local/tomcat/webapps/
cd /usr/local/tomcat/bin/
sh -x startup.sh
ps -ef |grep tomcat
eof
---
在 tomcat 服务器上面新建一个solo.war 包的备份目录
172.17.100.12
mkdir -p /data/backup
客户端从git服务器(172.17.100.11) 下载代码
cd /soft
rm -rf *
git clone [email protected]:TL-flyfish/solo-project.git
cd solo-project
cd src/main/resources/
vim latke.properties
---
修改 这个 serverHost 改为 172.17.100.12
serverHost=172.17.100.12
---
提交项目:
cd /soft/solo-project
git add *
git commit -m "add solo"
git push -u origin master
发布项目:
点击执行
开始build
此处报一个 权限不够
是因为默认构建的时候是gitlab-runner 这个用户 去执行这个命令的
所以要为gitlab-runner 用户提权
chmod +x /etc/sudoers
vim /etc/sudoers
gitlab-runner ALL=(ALL) NOPASSWD:ALL
并要 做gitlab-runner 用户与 172.17.100.12 的root的用户的无密钥登录
gitlab-cli.yaml 构建 脚本应该为sudo
stages:
- build
- run
- deploy
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
cache:
paths:
- .m2/repository/
.solo-build-job: &solo-build-job
script:
- mvn clean package
- mvn install
- mvn install package -Dmaven.test.skip=true
- ls -ld *
solo-build:
when: manual
stage: build
script:
- sudo rm -rf /deploy/solo/solo.war
- mvn clean package
- mvn install
- mvn install package -Dmaven.test.skip=true
- cd $CI_PROJECT_DIR/target/
- ls -ld *
- sudo cp -ap solo.war /deploy/solo/
solo-run:
when: manual
stage: run
script:
- cd /deploy/solo
- md5sum solo.war
solo-deploy:
when: manual
stage: deploy
script:
- cd /deploy/solo/
- sudo scp solo.war [email protected]:/root
- cd /deploy/script
- sudo sh -x deploy-solo.sh
从新执行build的构建
执行 步骤 run:
执行步骤:deploy
访问测试:
ci/cd之搭建私有git仓库gitlab(代码片段)
私有仓库GitlabGitlab简介CI/CD安装GitlabGitlab使用Gitlab简介GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab官方文档:... 查看详情
rancher+gitlab+appveyor实现ci/cd流水线(汇总)(代码片段)
rancher+gitlab+appveyor实现CI/CD流水线本文主要是做一些汇总,将近期接触并弄好的一些工具整合起来,弄一套流水线,减轻一定工作压力工具介绍所有的组件都是使用docker跑的,所以一款好用的docker的ui管理工具很重要,那就是ranche... 查看详情
gitlab-ci/cd(代码片段)
Gitlab-Runner自动构建服务器搭建1这里讲到的gitlab仓库指的是https://gitlab.com/,自建gitlab仓库也基本相同。项目的构建打包过程相对比较消耗系统性能,所以gitlab将这部分任务都交给了gitlab-runner来做,因为gitlab-runner可以部署到不同... 查看详情
ci/cd之jenkins+gitlab(代码片段)
文章目录一、Jenkinx+Gitlab持续集成环境概述(1)什么是CI/CD(2)Jenkins概述(3)Gitlab概述(4)Gitlab和Github的区别(5)Jenkins配合Gitlab持续集成系统的工作流程二、部署持续集成环境(1&... 查看详情
ci/cd之jenkins(代码片段)
...nkins安装安装jenkins插件安装中文插件安装流水线插件安装gitlab插件jenkins和gitlab联动jenkins轮询检查gitlab代码变更使用webhook实时检查gitlab代码变更推送dockerfile文件自动构建镜像新增agent节点jenkins用户管理CI/CD简介CI(Continuousintegration... 查看详情
ci/cd之jenkins(代码片段)
...nkins安装安装jenkins插件安装中文插件安装流水线插件安装gitlab插件jenkins和gitlab联动jenkins轮询检查gitlab代码变更使用webhook实时检查gitlab代码变更推送dockerfile文件自动构建镜像新增agent节点jenkins用户管理CI/CD简介CI(Continuousintegration... 查看详情
gitlabci/cd自动部署方案探索
如上图所示,当我们提交代码到GitLab仓库后,满足指定条件后就会触发Pipeline进行自动化构建、测试、发布等。Gitlabgitlab是做代码的版本管理,gitlab本身就用CI/CD的功能,原定是使用gitlab+Jenkins+Docker的流行部署框架的,... 查看详情
基于kubernetes实现ci/cd配置(代码片段)
...I/CD配置一、基本介绍二、基于Kubernetes实现CI/CD配置1.配置GitLab2.配置Jenkins3.实现CI/CD配置4.验证一、基本介绍基于Kubernetes实现CI/CD配置,其实和往常那些CI/CD配置并没有太大区别。都是通过提交代码,拉取代码,构建代... 查看详情
持续集成指南:gitlab的ci/cd工具配置与使用(代码片段)
1前言写代码这项工作,本质就是将工作自动化,减少手工操作提供效率,因为人的本质都是懒狗,程序员也不能例外,为了各种意义的效率提升(懒),我们需要持续集成工具,将代码测试、... 查看详情
还在用jenkins?试试gitlab的ci/cd功能吧(代码片段)
...化打包部署,一般都需要借助Jenkins。不过,现在Gitlab的CI/CD功能也能实现自动化部署,并且操作更加简单。如果你也正在使用Gitlab作为Git仓库的话,不妨试试它的CI/CD功能。一、安装通过Gitlab的CI/CD功能实现自动化... 查看详情
基于kubernetes实现ci/cd配置(代码片段)
...I/CD配置一、基本介绍二、基于Kubernetes实现CI/CD配置1.配置GitLab2.配置Jenkins3.实现CI/CD配置4.验证一、基本介绍基于Kubernetes实现CI/CD配置,其实和往常那些CI/CD配置并没有太大区别。都是通过提交代码,拉取代码,构建代... 查看详情
基于gitlab的ci/cd系统重点记要
参考技术AGitlab是套功能完善的源码管理系统,平时用于公司内部各研发组的源码同步、问题跟踪、开发协同。Gitlab自带的CI/CD功能与Gitlab更简单、灵活的协同工作,也减小了日常维护的压力,因此,本文针对Gitlab的CI/CD功能做的... 查看详情
gitlab的ci/cd初尝试(代码片段)
...解决问题。哎,没办法,为了解决这种问题,我打算看看Gitlab的CI集成,如果能弄上这个那么开发只管提代码就行了,会自动构建环境。我这也是现学现卖,今天照着官网和查资料,刚 查看详情
分享一个ci/cd的自动部署想法(代码片段)
...操作方式是:研发将配置、DB变更文件与代码一起提交到Gitlab仓库。如果检测到Gitlab的commit信息中带JiraI 查看详情
gitlab-ci-runner安装(代码片段)
...,自动化测试(CI)编译测试成功后,部署到线上服务器(CD)gitlab-runner介绍gitlab提供了一个持续集成的服务,如果你在项目仓库里面加入.gitlab-ci.yml文件同时给 查看详情
利用开源软件搭建java工程ci&cd自动化工具链(代码片段)
...致测试不充分,时常做线上BUG修复打造工具链●源码管理Gitlab●持续集成Jenkins●代码扫描SonarQube●接口测试PostMan+NewMan●制品管理ArtifactoryOSS版本(仅支持Maven)●自动部署AnsibleGitLab安装vim/etc/yum.repos.d/gitlab-ce.repo[gitlab-ce]name=gitla... 查看详情
gitlab_ci/cd详细过程(代码片段)
一、GitLabRunner服务器安装Docker和GitLabRunner环境(一)、增加GitlabRunner用户以及Docker用户组增加GitlabRunner用户#增加gitlab-runner用户sudouseradd--comment'GitLabRunner'--create-homegitlab-runner--shell/bin/b 查看详情
gitlab_ci/cd详细过程(代码片段)
一、GitLabRunner服务器安装Docker和GitLabRunner环境(一)、增加GitlabRunner用户以及Docker用户组增加GitlabRunner用户#增加gitlab-runner用户sudouseradd--comment'GitLabRunner'--create-homegitlab-runner--shell/bin/b 查看详情