Gitlab+Jenkins构建一个Go项目
部署Go项目简介
对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程:
方案一
• 开发者本地环境需要将环境变量文件改为正式环境配置
• 编译成可执行文件
• 发送给运维
• (运维)将文件覆盖为线上
• (运维)重启进程
(可谓“又臭又长”)
方案二
开发者将代码commit到gitlab上交给运维同学
(运维)pull代码
(运维)编译成可执行文件
(运维)覆盖线上文件
(运维)重启进程
这种对于运维属于重度依赖,而运维同学又需要去关心代码的编译,增加了运维同学的工作了。
以上两种方案都是之前项目中发生过的,对于发版来说可谓是一种“噩梦”,易出错,流程长,运维要是不在根本无法操作。

部署GitLab环境
部署gitlab请看我前面写的文章
https://www.cnblogs.com/you-men/p/13126530.html
部署Jenkins环境
环境清单
* CentOS 7.3
* git-2.9.5.tar.gz
* Jenkins 2.203.war
* apache-tomcat-9.0.12.tar.gz
* jdk-8u151-linux-x64.tar.gz
* apache-maven-3.5.4-bin.tar.gz
初始化
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/backup
curl -o /etc/yum.repos.d/163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo &>/dev/null
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install ntpdate
ntpdate -b ntp1.aliyun.com
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
sed -i '/^GSSAPIAu/ s/yes/no/' /etc/ssh/sshd_config
sed -i '/^#UseDNS/ {s/^#//;s/yes/no/}' /etc/ssh/sshd_config
下载git.tar包安装
# Jenkins支持的git最低版本是1.8,使用rpm安装版本是1.8,这里采用源码安装使用2.9版本
# git官网下载最新版本GIT:
# https://mirrors.edge.kernel.org/pub/software/scm/git/
# 安装git 依赖包
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
rpm -e git --nodeps # 卸载掉老版本git
tar xvf git-2.9.5.tar.gz -C /usr/local/src/
cd /usr/local/src/git-2.9.5/
make prefix=/usr/local/git all
make prefix=/usr/local/git install
# 修改/etc/bashrc配置文件末尾加入下面一行环境变量(建议针对用户生效,否则使用其他用户时候容易出问题)
tail -1 /etc/bashrc
export PATH=$PATH:$HOME/bin:/usr/local/git/bin
source /etc/bashrc
# 测试是否安装成功
git --version
git version 2.9.5
JDK环境部署
# jenkins对jdk版本有要求,不能用jdk9和10,且需要将系统自带的java环境清楚掉
# jdk下载地址
# http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
# 卸载系统自带的java环境
[root@jenkins-8 git-2.9.5]# rpm -qa |grep jdk
[root@jenkins-8 git-2.9.5]# java
bash: java: 未找到命令
# 解压安装jdk
tar xvf jdk-8u151-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv jdk1.8.0_151/ jdk
# 修改/etc/bashrc配置文件,末尾加入下面一行环境变量.
tail -2 /etc/bashrc
JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
source /etc/bashrc
java -version # 尽量不要用openjdk
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
部署jenkins
# war包部署
# cp jenkins.war /usr/local/tomcat/webapps/
# 停掉tomcat在启动一遍
# 将Jenkins的war放到tomcat的webapps下面,重启一下tomcat自己就解压了,但是访问可能有点慢
# 也可以通过jar包直接启动jenkins
java \ -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=12345 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -Djava.rmi.server.hostname="192.168.8.2 " \ -jar jenkins-2.138.3.war &
# 也可以用jenkins的rpm包安装
wget https://pkg.jenkins.io/redhat-stable/jenkins-2.222.1-1.1.noarch.rpm
rpm -ivh jenkins-2.150.1-1.1.noarch.rpm
# Jenkins配置
grep -v "#" /etc/sysconfig/jenkins | grep -v "^$"
JENKINS_HOME="/var/lib/jenkins"
JENKINS_JAVA_CMD=""
JENKINS_USER="root"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname="149.129.38.117" "
JENKINS_PORT="8080"
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""
# 如果启动报错一般是你java不是openjdk的,修改下java路径即可
vim /etc/init.d/jenkins
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
/usr/local/jdk/bin/java # 加上你的Java路径即可
"

cat /root/.jenkins/secrets/initialAdminPassword # 这个密码以后可能会用到最后记下来,这个文件往后初始化就没有了
2775b0adf72e42a5bdea22297b81dd82
# 2> 复制密码上面进入下一步会出现一个页面安装插件图2,
# 我们不弄太复杂,就安装推荐的插件,
# 安装时间较长,请准备良好的网络环境,可能需要翻墙

/# 可能因为网络波动+jenkins源是国外的,会安装失败,重试几次,
# 如果还不行换服务器,比如云服务器,或者换源,图3


至此,就可以开始使用Jenkins了


**
**
创建配置Gitlab项目
新建project

Gitlab仓库添加jenkins主机的公钥

关掉Gitlab默认的Devops管道

创建配置jenkins项目
创建jenkins项目

填写gitlab的git地址

添加jenkins凭据
此处凭据写jenkins的私钥

保存测试jenkins项目拉取

jenkins配置go环境和插件
安装go环境
tar xf go1.15.6.linux-amd64.tar.gz -C /usr/local/
mkdir /home/app
tail -6 /etc/profile
export GOROOT=/usr/local/go
export GOPATH=/home/app
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin
export GOPROXY=https://goproxy.cn
source /etc/profile
GOROOT:Go安装后的根目录,解压的时候解压Go安装包的路径,安装过程中会由安装程序自动写入系统环境变量中。Go语言自带的类库。
GOBIN:Go的二进制文件存放目录。
GOPATH:Go的工作空间(自己定义的goProject目录)工作空间是一个目录层次结构,根目录包含三个子目录:
src:包含Go源文件(例如:.go、.c、.h、.s 等)
pkg:包含包对象,编译好的库文件(例如:.a)
bin:包含可执行命令(为了方便,可以把此目录加入到 系统的 PATH 变量中,在环境变量 PATH 后追加 %GOPATH%\bin)
PATH:需要将%GOBIN% 加在 PATH 变量的最后,方便在命令行下运行。
验证Go结果
go version
go version go1.15.6 linux/amd64
创建go测试代码
[root@jenkins ~]# mkdir /home/app/goproject1/src/test1 -p
1
Gitlab+Jenkins构建一个Go项目的更多相关文章
- jenkins构建一个maven项目[五]
标签(linux): jenkins 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 构建一个maven项目,即为构建java项目.模拟实验之前先把实验代码推送到 ...
- jenkins 构建一个maven项目
1.首先在 全局工具配置 里配置maven的路径信息 这里因为之前已经下载了maven并放在了E盘,因此只需要在 MAVEN_HOME 添加maven文件夹的路径 如若本地还没maven,勾选 “自动 ...
- 使用jenkins构建一个maven项目
1.登陆到jenkins首页,创建项目-->选择maven-->输入项目名称-->选择项目类型 2.进入项目配置:{先写一下项目描述和设置下保留的历史构建,然后向下拉} 找到源吗管理 ...
- jenkins构建一个python项目
Jenkins发布后端python代码 “系统管理”“管理插件”“已安装” 检查是否有“Git plugin”和“Publish Over SSH”两个插件,如果没有,则需点击“可选插件”,找到它 ...
- jenkins构建一个go项目
Jenkins安装 最低配置: 不少于256M内存,不低于1G磁盘,jdk版本>=8 安装jdk1.8 yum install -y java-1.8.0-openjdk wget -O / ...
- 【Jenkins】构建一个maven项目
一 .Ubuntu18.04安装Maven 官方安装文档:http://maven.apache.org/install.html ①去官网下载maven: ②解压到/opt/maven目录(我安装在 ...
- Eclipse的maven构建一个web项目,以构建SpringMVC项目为例
http://www.cnblogs.com/javaTest/archive/2012/04/28/2589574.html springmvc demo实例教程源代码下载:http://zuida ...
- springboot:快速构建一个springboot项目
前言: springboot作为springcloud的基础,springboot的热度一直很高,所以就有了这个springboot系列,花些时间来了解和学习为自己做技术储备,以备不时之需[手动滑稽] ...
- 利用 vue-cli 构建一个 Vue 项目
一.项目初始构建 现在如果要构建一个 Vue 的项目,最方便的方式,莫过于使用官方的 vue-cli . 首先,咱们先来全局安装 vue-cli ,打开命令行工具,输入以下命令: $ npm inst ...
随机推荐
- 知识点回顾——C语言知识点复习梳理,看看你是不是都完全掌握了
前段时间,我分享了关于C语言的一些必备知识点,感兴趣的朋友可以查看我的往期文章,或是关注公众号c语言进阶之路,查看次条文章,或搜索关键字"编程小白基础必备",就能查看相关文章了. ...
- 题解 洛谷 P2612 【[ZJOI2012]波浪】DP+高精
题目描述 题目传送门 分析 因为有绝对值不好处理,所以我们强制从小到大填数 设 \(f[i][j][p][o]\) 为当前填到了第 \(i\) 个数,波动强度为 \(j\),有 \(p\) 个连续段并 ...
- 【鸿蒙应用开发】第三章 “颜控”时代下如何构建UI界面
为什么是第三章,前面两章呢? 原本是以碎片化的方式将HarmonyOS应用开发快速掌握,但是在准备六大布局组合复杂UI界面Demo时,很多组件之前都没有应用.因此准备将知识体系进行细化,以章节的形式希 ...
- KNN 算法-理论篇-如何给电影进行分类
公号:码农充电站pro 主页:https://codeshellme.github.io KNN 算法的全称是K-Nearest Neighbor,中文为K 近邻算法,它是基于距离的一种算法,简单有效 ...
- 音视频入门-18-手动生成一张GIF图片
* 音视频入门文章目录 * GIF 编码知识 GIF 包含的数据块: 文件头(Header) 逻辑屏幕标识符(Logical Screen Descriptor) 全局颜色表(Global Color ...
- HTML5 速览
HTML5 速览 一. HTML5 元素分类 HTML赋值文档内容的结构和含义, 内容呈现由css样式控制 元素选用原则 少亦可为多 标记只应该应内容对语义的需要使用. 有条经验法则是: 问问自己打算 ...
- Python中排序函数sorted和排序方法sort的异同点对比分析
Python中对序列进行排序有两种方法,一种是使用python内置的全局sorted函数,另一种是使用序列内置的sort方法. 一. 两者相同点 在支持sort方法的序列中都可以对序列进行排序: 二者 ...
- 第15.26节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QListWidget详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 列表部件(List Widget)对应类QListWidget,是从QListView派生 ...
- 第14.14节 爬虫实战准备:csdn博文点赞过程http请求和响应信息分析
如果要对csdn博文点赞,首先要登录CSDN,然后打开一篇需要点赞的文章,如<第14.1节 通过Python爬取网页的学习步骤>按<第14.3节 使用google浏览器获取网站访问的 ...
- PyQt(Python+Qt)学习随笔:Qt中的部分类型QString、QList和指针、引用在PyQt中的实现方式
老猿Python博文目录 老猿Python博客地址 在我们查阅Qt的文档资料时,可以看到Qt中的链表使用的是QList,字符串使用的是QString,但老猿在测试时发现这两个类型PyQt不支持,无法找 ...