ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Azure DevOps (十三) 通过Azure Devops部署一个Go的Web应用

2022-05-12 14:34:48  阅读:254  来源: 互联网

标签:Web 编译 DevOps azure go 流水线 Azure gin 我们


前几篇文章中,我们分别实现通过azure来部署.NET和Springboot的应用,今天我们来研究一下如何部署一套Go的Web应用上去。

文章配套视频专栏:

https://space.bilibili.com/38649342/channel/seriesdetail?sid=2267536

视频正在努力更新。

首先我们要先创建一个go的web项目,我这里使用的是go这边比较知名的一个web框架:gin

首先我们使用goland创建一个go的基础项目,然后在项目目录下执行命令:

$ go get -u github.com/gin-gonic/gin

引入gin的依赖。

 

引入依赖之后,我们在main方法中创建一个用来接受http请求的action,并且绑定一个路由。

    r := gin.Default()
    r.GET("/hello", func(context *gin.Context) {
        context.JSON(200, gin.H{
            "message": "hello world",
        })
    })

然后我们启动一下项目看一下socket的监听是否正确。

 

 可以看到我们刚才绑定的路由已经在8080端口开始监听了,访问一下路由地址只要能正常返回一个简单的go的应用就创建成功了。

然后按照老规矩,我们还是首先得先把我们的代码上传到azure的仓库里去。

同步代码到仓库的过程,我们就不再赘述了,之前的时候已经写过很多次,这里我贴一下地址,需要的同学自行参考

Azure DevOps (一) 托管自己的Git仓库

Azure DevOps (十一) 通过Azure Devops部署一个.NET Core WebAPI

把代码同步到azure的代码仓库之后,接下来我们开始创建我们的编译流水线

老规矩,如果你的默认分支不是azure自带的main,那你需要在分支中创建一个空的yml文件,用于存放azure的流水线脚本。

当然,你也可以通过azure自动生成。

创建好之后,我们开始在里面添加我们想要的步骤,首先我们要通过 go build 命令进行go的编译,然后通过制品上传把编译好的可执行文件上传到仓库去

go的编译结果是直接可以运行的可执行文件,不需要再装sdk之类的东西,所以我们在编译的时候要选择编译环境是linux和一会要部署的环境保持一致。

在任务栏中搜索go,然后选怎go编译

 

然后编译过程选择go build,执行目录和go mod保持一致就可以,在我们的项目根目录下。

 

 

然后我们把编译好的可执行文件上传到制品仓库:

最后的全量脚本代码如下:

# Starter pipeline

# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- main

pool:
  vmImage: ubuntu-latest

steps:
- script: echo Hello, world!
  displayName: 'Run a one-line script'

- script: |
    echo Add other tasks to build, test, and deploy your project.
    echo See https://aka.ms/yaml
  displayName: 'Run a multi-line script'
- task: Go@0
  inputs:
    command: 'build'
- script: 
   pwd;
   ls;
   mkdir target;
   cp go_azure_app target;
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '/home/vsts/work/1/s/target'
    ArtifactName: 'drop'
    publishLocation: 'Container'

接下来我们需要创建部署流水线,go的部署流水线非常简单,我们只需要把编译好的制品直接传到服务器上就行了,也不需要装运行环境,

然后我们写一个简答的守护进程用来维护一下服务的状态即可。

创建一下部署流水线,挂载好我们编译流水线的结果,然后添加一个SFTP的上传任务和一个SSH的远程命令执行

 

 

 这里我们有一点需要注意的是,go的可执行文件需要授予可执行权限,不然无法直接启动。

 

 

 创建好之后,我们运行一下我们的流水线,并且访问我们的端口,成功得到响应结果。

 到这里用azure部署go的 web应用就成功了,可能在过程上感觉相比之前简单了许多,那是因为经过前面十几篇文章的积累,很多细枝末节的东西我们都已经踩过来了。

到这篇文章为止,部署的操作我们也算研究的差不多了,接下来我们开始研究通过azure的流水线去玩一下更花的操作。

标签:Web,编译,DevOps,azure,go,流水线,Azure,gin,我们
来源: https://www.cnblogs.com/Tassdar/p/16262326.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有