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


    前几篇文章中,我们分别实现通过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的流水线去玩一下更花的操作。

  • 相关阅读:
    母婴行业数字化发展趋势:内容多元化、服务定制化、人群全覆盖
    数据赋能(172)——开发:数据挖掘——影响因素、直接作用、主要特征
    SpringBoot--中间件技术-4:整合Shiro,Shiro基于会话SessionManager实现分布式认证,附案例含源代码!
    C到C++/编译过程/链接方式/内存模型/STL
    linux集群上的SCHRODINGER 分子对接工作流程
    开源大模型RAG企业本地知识库问答机器人-ChatWiki
    驱动开发 Linux按键中断点灯
    软件项目管理 7.4.5.进度计划编排-敏捷计划
    《0基础》学习Python——第十一讲__时间函数
    Linux 学习笔记:input 子系统
  • 原文地址:https://www.cnblogs.com/Tassdar/p/16262326.html