云上持续交付实践系列2--- go篇

本文介绍如何使用阿里云持续交付平台进行Go语言项目gogs的代码编译与部署。gogs是一个轻量级的Git服务器,本文详细展示了从代码检出、依赖管理、编译到部署的全过程。

go 作为一门google 开发的语言最近是越来越火了,其具备清晰、并行、安全等优点。当下非常流行的docker就是用go 语言的编写的。阿里云持续交付平台最近推出了多语言编译的支持,其中就包括go。本文就拿github 上开源的纯go 语言项目gogits/gogs 来小尝牛刀。

项目介绍

gogs 是github 上开源的用go 编写的轻量级的git 服务器。相比于现有开源的gitlab, 它更加的灵活、轻量、跨平台,很适合小型的开发团队。项目主页的地址:https://gogs.io/

准备工作

阿里云持续交付平台目前还不支持直接从github 上下载代码,所以我们需要在阿里云Code(https://code.aliyun.com) 新建一个代码库,并讲github 上的代码push 上去。

配置工作流

关于在阿里云持续交付平台上如何新建项目、新建工作流、关联代码库等功能可以参考已有的一篇文章(https://yq.aliyun.com/articles/26414)针对go 语言以及这个项目,本文中的工作流结构如下图:
_2016_04_21_12_00_19

这个工作流配置了代码检出和部署两个节点关联我们在阿里云Code 上的代码库,其中代码检出包含了代码更新和编译两个任务。
其中编译任务选择了go1.6版本,编译命令如下:

    mkdir -p $GOPATH/src/github.com/gogits/gogs
    cp -rf $SOURCEPATH/* $GOPATH/src/github.com/gogits/gogs/
    mkdir -p $GOPATH/src/golang.org/x
    cd $GOPATH/src/golang.org/x
    git clone https://github.com/golang/crypto.git
    git clone https://github.com/golang/net.git
    git clone https://github.com/golang/text.git
    go get
    go build

关于编译命令

  • go语言的编译环境提供了两个环境变量可以在命令行中使用:
     GOPATH: /root/gopath
     SOURCEPATH: /root/source/{projectName}
  • 由于该项目中使用了golang.org 上面的一些依赖包,然而国内对于这些包的访问受限(你懂的)。
    我们可以通过使用github 上对应的包来替换掉。这个项目中需要使用到的主要是crypto、net 、text

三个包

关于产出物路径:

输出物路径是指相对于SOURCEPATH的需要打包的文件,所以在这条工作流的配置为:
    ../../gopath/src/github.com/gogits/gogs/gogs

关于部署命令:
_2016_04_21_2_11_57

在部署节点中,我们选择了手动部署,填写ip地址以及重启命令:

    cd /tmp/
    tar -xvf package.tgz
    cp -rf /tmp/gogs /home/git/go/src/github.com/gogits/gogs/
    nohup sh  /home/git/bin/restart.sh >> /tmp/log.log 2>&1 &

其中restart.sh 为重启脚本,其中的命令:

   ps -ef |grep gogs|awk '{print $2}'|xargs kill -9
  /home/git/go/src/github.com/gogits/gogs/gogs web
运行工作流

配置完工作流后,点击触发生成工作流实例并点击相应按钮完成部署后,
_2016_04_21_2_18_56

这时候我们就可以在部署机器上看到我们部署完成的页面了:
223

后话:

目前的每次编译下载依赖包速度较慢,后面平台会考虑加速的方案,同样会解决国外某些网络不通的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值