当前位置: 首页 > news >正文

闽候县建设局网站/优化推广公司哪家好

闽候县建设局网站,优化推广公司哪家好,wordpress tag分类,南京网站托管网络营销外包博客地址:yeqown.github.com 起因 因为生产需要最近又重新折腾了一下Jenkins和docker。主要目的是想自动编译,打包,部署一些Golang的HttpServer。于是决定使用Jenkins来做这个持续集成的载体,选择Jenkins出于两点原因:…

博客地址:yeqown.github.com


起因

因为生产需要最近又重新折腾了一下Jenkins和docker。主要目的是想自动编译,打包,部署一些Golang的HttpServer。于是决定使用Jenkins来做这个持续集成的载体,选择Jenkins出于两点原因:

1. 以前就使用过,上手会更快
2. 社区比较成熟,插件和文档丰富


安装Docker和Pull Jenkins镜像

这一步,作为前置条件且不是本文主要要描述的步骤,因此略去。网上也有很多参考资料~


Jenkins & docker-compose配置

为了方便我才用了docker-compose这个工具,docker-compose 基础可以参见我的docker-compose上手。这里直接上配置:

version: '2'services:jenkins:container_name: jenkins-ltsports:- 9001:8080- 50000:50000image: jenkins/jenkins:ltsvolumes:- /home/worker/jenkins/jenkins_home:/var/jenkins_home

配置也是官方的示例配置。

Note: 将宿主机的/home/worker/jenkins/jenkins_home挂载为容器的/var/jenkins_home目录。这样做的目的是,如果容器被不小心删除也不至于Jenkins的数据丢失。

到这里,我们只需要执行docker-compose up -d便可以将Jenkins容器跑起来了,再配置一下Nginx,便可以直接访问到Jenkins页面了,并进行初始化。

我的目录结构如下:

➜  jenkins ll
total 8.0K
-rw-rw-r--  1 worker worker  220 May  2 17:19 docker-compose.yml
drwxrwxr-x 19 worker worker 4.0K May  3 15:53 jenkins_home
➜  jenkins pwd
/home/worker/jenkins
➜  jenkins docker-compose up -d # 运行

Publish Over SSH配置

Publish Over SSH配置,由于我们是通过docker运行的Jenkins,因此要特别配置一下SSH,方便Jenkins部署项目。这里先列出步骤:

  1. 安装Publish Over SSH
  2. 容器内ssh-keygen
  3. 配置Publish Over SSH
  4. 配置Git仓库部署公钥 #这一步相当于拉取代码的Credentials

Golang Build-env

因为默认的Jenkins镜像是不带有Go的编译工具的,所以我们很有必要安装一个Go插件Go-Plugin-Jenkins
具体步骤如下:

  1. 安装JenkinsGo插件
  2. 在全局工具配置中,安装Go
  3. 在对应任务配置-> 构建环境项,选择Go版本

这一步的详细步骤可以在参考文献第一条中查询Setup Go Build Environment

Note: 官方文档中说全局配置Go是在系统设置中进行的,但是我用的Jenkins ver. 2.107.2,这一项配置是在全局工具配置中。

如何打包部署

编写一个makefile来打包项目,通过scp来分发部署服务,这也是配置Publish Over SSH的目的。

由于Jenkins镜像不带有make相关工具(甚至Vim也没有),所以需要安装Make及其相关工具。与此同时,如果项目使用了相关的依赖管理工具,因此还有必要去配置相关的GO环境变量。其中Go的安装路径在:
/var/jenkins_home/tools/org.jenkinsci.plugins.golang.GolangInstallation/$GOVERSION中。

这里贴上我的Makefile

# To test, build, deploy offline-tasks
#   -: ignore this commnad error
#   @: no display current commnad to std output# Commnads declare
GOCMD=go
GOTEST=$(GOCMD) test
GOBUILD=$(GOCMD) build# Params define
MAIN_PATH=../main
PACKAGE_PATH=../package
PACKAGE_BIN_PATH=../package/bin
BIN=offline-tasks
FILENAME=offline-tasks.tar.gz# Deploy Params
DEV_HOST=zy-dev
DEV_TAR_PATH=/home/worker/project/offline-tasksPROD_HOST=zy-pro2
PROD_TAR_PATH=/home/worker/project/offline-tasksdefault: build packtest: # testing- $(GOTEST) ../... -vbuild: # buildingmkdir $(PACKAGE_PATH)mkdir $(PACKAGE_BIN_PATH)cd $(MAIN_PATH) && $(GOBUILD) -o $(BIN) mv "$(MAIN_PATH)/$(BIN)" $(PACKAGE_BIN_PATH)cp -r "../configs" $(PACKAGE_PATH)cp "../sh/start.sh" $(PACKAGE_BIN_PATH)pack:# packingcd $(PACKAGE_PATH) && tar -zcvf ../$(FILENAME) ./*mv ../$(FILENAME) $(PACKAGE_PATH)##################################################
#                                                #
#   deploy:         from zy-dev to execute       #
#   deploy-dev:     from dev-CI to execute       #
#   deploy-prod:    from prod-CI to execute      #
#                                                #
##################################################deploy: clean build pack# deploy dev from devcp $(PACKAGE_PATH)/$(FILENAME) $(DEV_TAR_PATH)cd $(DEV_TAR_PATH) && tar zxvf $(FILENAME) && supervisorctl -c configs/dev.supervisord.conf restart offline-tasksdeploy-dev: clean build pack# deploy-dev from CIscp $(PACKAGE_PATH)/$(FILENAME) $(DEV_HOST):$(DEV_TAR_PATH)ssh $(DEV_HOST) "cd $(DEV_TAR_PATH) && tar zxvf $(FILENAME) && supervisorctl -c configs/dev.supervisord.conf restart offline-tasks"deploy-prod: clean build pack# deploying prod from dev or CIscp $(PACKAGE_PATH)/$(FILENAME) $(PROD_HOST):$(PROD_TAR_PATH)ssh $(PROD_HOST) "cd $(PROD_TAR_PATH) && tar zxvf $(FILENAME) && supervisorctl -c configs/prod.supervisord.conf restart offline-tasks"clean:# cleaningrm -fr $(PACKAGE_PATH)rm -fr ../$(FILENAME)

总结

进过上述的一系列操作之后,只剩下一个比较尴尬的问题了:如果Go代码仓库中vendor不带有依赖项目,那么获取依赖的动作就要自己手动来操作了~。或许可以在makefile中新增一个deps,如下:

# default set $CURDIR="$PROJ_ROOT/sh"
# preparing works...
GVT_RESTORE=gvt restore
PROJ_ROOT=../deps:cd ($PROJ_ROOT) && $(GVT_RESTORE)build: deps# buildingmkdir $(PACKAGE_PATH)mkdir $(PACKAGE_BIN_PATH)cd $(MAIN_PATH) && $(GOBUILD) -o $(BIN) mv "$(MAIN_PATH)/$(BIN)" $(PACKAGE_BIN_PATH)cp -r "../configs" $(PACKAGE_PATH)cp "../sh/start.sh" $(PACKAGE_BIN_PATH)
# other commands...

并且加deps命令,加build命令中,每次打包都检查一下依赖。


参考资料

  • https://zpjiang.me/2017/08/09/Setup-Jenkins-for-Go-Projects/
  • https://wiki.jenkins.io/display/JENKINS/Go+Plugin
http://www.lbrq.cn/news/808777.html

相关文章:

  • 网站建设实现后台数据导出excel/网站的网络推广
  • html5做音乐网站/2021十大网络舆情案例
  • 建立个人网站的成本/seo优化网站技术排名百度推广
  • 外贸网站制作推广公司/推广方案
  • 熊掌号怎么做网站跳转链接/网站统计器
  • 好sf123网站123/怎么引流到微信呢
  • 企业单位网站怎么做/职业培训学校加盟合作
  • 2017我们一起做网站/百度账号管理
  • 太月星网站建设程序开发/个人博客模板
  • 唐山哪里有建设网站/seo优化排名教程
  • 做网络的网站很重要吗/站长工具关键词
  • 手机设计房子的软件3d下载/信息流广告优化师培训
  • wordpress幻灯片插件怎么用/而的跟地seo排名点击软件
  • wordpress拉黑用户/青岛招聘seo
  • 外贸网站开发多少钱/百度网页高级搜索
  • 网站建设需要考哪些证/关键词排名优化软件
  • 做网站是干什么的/百度指数关键词
  • 广州市研发网站建设平台/网站建设培训
  • qq刷赞网站怎么做的/广州seo公司排名
  • 大连手机自适应网站建设/it行业培训机构哪个好
  • 长沙天津网站建设/百度seo可能消失
  • 免费网站建设讯息/网站流量查询网站统计查询
  • 中网互联网站建设/免费学生html网页制作成品
  • 网站qq统计/网络推广员招聘
  • 万网制作网站吗/广州最新新闻事件
  • 网页的首页/谷歌seo优化排名
  • 网站空间公司/百度平台客服电话是多少
  • 如何从客户网站开发客户/云搜索引擎入口
  • 怎么用ps做网站ui/查企业信息查询平台
  • 网站文件夹结构/厦门百度seo排名
  • 文件操作与IO流
  • 青少年软件编程图形化Scratch等级考试试卷(四级)2025年6月
  • 机器学习-贝叶斯函数(理解版)
  • mangoDB面试题及详细答案 117道(026-050)
  • 05 OpenCV--图像预处理之图像轮廓、直方图均衡化、模板匹配、霍夫变化、图像亮度变化、形态学变化
  • ROS2入门之开发环境搭建