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

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 上去。

配置工作流

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

这个工作流配置了代码检出和部署两个节点关联我们在阿里云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

关于部署命令:

在部署节点中,我们选择了手动部署,填写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

运行工作流

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

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

后话:

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

时间: 2024-09-08 13:04:18

云上持续交付实践系列2--- go篇的相关文章

云上持续交付实践系列3 --- Python 篇

云上持续交付实践系列3 --- Python 篇 阿里云持续交付平台CRP(Continuous Release Platform)作为一款开发人员手里的居家旅行,杀人越货的利器,必然有其广泛的应用场景.本文将会演示如何在如何使用阿里云持续交付平台部署一个Python应用.Python作为一种脚本语言,经常与多种语言一起配合完成某些复杂的功能,与此同时,其强大的第三方库又进一步拓展了Python的应用领域. 应用概述 本文涉及两个项目,分别为基于Python的在线爬虫以及基于node.js的we

云上持续交付实践系列5 --- Ruby 篇

本文会演示如何在CRP上编译并部署一个Ruby应用. 相关技术栈和用到的网站 本文将以ruby-china为例,使用CRP平台实现该项目的编译.测试和最终部署. 1. Rails作为Web框架 2. Postgres作为数据库存储 3. Memcached作为分布式内存对象缓存系统 4. Redis作为Key-Value数据库 5. Elasticsearch则作为一个简单的搜索引擎 本次实践中为了更好地使用代码库服务,我们将ruby-china的代码迁移到了阿里云Code中,在Gemfile里

云上持续交付实践系列4 --- node 篇

本文会演示如何在CRP上编译并部署一个Node应用. 相关的技术和网站 阿里云持续交付平台 https://crp.aliyun.com 阿里云Code https://code.aliyun.com crp提供的编译能力 现在crp平台已经支持node0.12,node4.4.x, node5.9.x 版本的项目编译/测试 常用的node编译指令和环境 1.常用的node相关的指令 npm install //安装依赖 npm list //列举已经安装的依赖 npm test //执行测试

云上持续交付实践系列1 --- java 篇

本文会演示如何在CRP上编译并部署一个Java Web应用. 我的应用 技术栈 我的应用是一个简单的在线购书的网站.因为是示例,所以代码就只有简单的一个登陆界面和登陆以后的书目列表界面.代码库在https://code.aliyun.com/blade_1986/bookstore. 使用的技术栈如下: Gradle作为构建工具 Spring作为IOC容器及MVC框架 JUnit作为测试框架 Spring Test作为集成测试框架 Selenium作为功能测试工具 有兴趣的同学可以先把这个代码下

打造云上代码交付链,CodePipeline实践分享

在2017在线技术峰会--首届阿里巴巴研发效能嘉年华上,来自阿里云飞天研发部的工程师莫源分享了<打造云上代码交付链,CodePipeline实践分享>.他在云计算和云平台.持续集成流程.DevOps的基础上,详细分享了Alibaba Cloud CodePipeline优于Jenkins的性能和实践. 以下内容根据直播视频整理而成. 直播视频:https://yq.aliyun.com/edu/lesson/549 PDF下载:https://yq.aliyun.com/attachment/

云效平台:企业级互联网架构下的持续集成与持续交付实践

摘要:本文的整理自2017云栖大会-南京峰会上阿里云高级技术专家鲁小川的分享讲义,讲义主要分享了阿里云云效平台对于企业级互联网架构下的持续集成与持续交付的实践经验,首先介绍了阿里云云效平台的起源,之后对于企业并发研发项目交付流程存在痛点进行了介绍,并介绍了云效平台针对业务痛点所能够提供的服务和能力,并且结合实际案例分享了云效平台持续集成和持续交付实践. 在2017云栖大会-南京峰会上,阿里云高级技术专家鲁小川做了题为<企业级互联网架构下CI/CD实践>的精彩分享.所谓CI/CD也就是持续集成与

服务化架构下企业的业务持续交付——云效平台持续交付实践

摘要:本文的整理自2017云栖大会-南京峰会上阿里云资深开发工程师苗欣的分享讲义,讲义主要分享了阿里巴巴的持续交付之路,云效平台所提供一整套的持续部署.持续交付和持续验证的解决方案,以及实际效果,并且与大家分享了业务持续交付的相关客户案例. 在2017云栖大会-南京峰会上,阿里云资深开发工程师苗欣做了题为<服务化架构下企业的业务持续交付--云效平台持续交付实践>的分享.对于企业的业务而言,由于业务非常复杂,所以即便是小业务改动需要大应用发布,无法实现轻快交付.而即便是将应用进行服务化之后,也会

云端基于Docker的微服务与持续交付实践

云端基于Docker的微服务与持续交付实践笔记,是基于易立老师在阿里巴巴首届在线技术峰会上<云端基于Docker的微服务与持续交付实践>总结而出的. 本次主要讲了什么? Docker Swarm Docker Swarm mode 微服务支持(Docker集群架构体系) Docker的发展趋势和前沿成果 在Docker技术方面还是很佩服大牛的,所以赶紧写下笔记,追随大神的脚步. 阿里云资深专家易立,技术就不说了,他比其他直播间硬生生多讲了半个多点,于情于理还是万分感谢本次分享的(可惜devOp

产品迭代发布如何更快速?阿里持续集成与持续交付实践之路全解析

2017年5月9日,云效平台资深研发工程师向禹通过直播分享了<持续集成与持续交付实践之路>.他从云效背景.云效方案.云效价值三个方面进行了分享.他主要分享了持续集成持续交付的解决方案和案例,并且对大型系统如何实现持续集成.持续交付.进行产品迭代发布进行了详细介绍. 以下内容根据直播视频整理而成. 云效背景--阿里巴巴<持续交付>之路 大应用下的交付 在七八年之前,阿里巴巴的B2B一直沿用瀑布的模式来进行项目管理,当时已经感觉到瀑布模式对应用持续快速的发展产生了很大的影响.并且当时很