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

Azure DevOps (十三) 通过Azure Devops部署一个Go的Web应用的更多相关文章

  1. ZH奶酪:LAMP环境中如何重新部署一个Yii2.0 web项目

    使用Yii2.0 framework开发的项目,使用Github进行版本控制,现在要把这个项目部署到一个新的电脑/系统中: (1)安装LAMP (2)在/var/www/html目录下执行 git c ...

  2. 论如何在服务器上部署一个自己的web前端项目

    就在前两天,有新人通过邮箱问到笔者,如何部署自己的web前端项目?笔者在此详细介绍. 一.购买云服务器 配置用户名密码.安全组 二.下载Xshell于Xftp工具 用于登录服务器和文件上传 三.在li ...

  3. Azure App Service(一)利用Azure DevOps Pipeline 构建镜像,部署应用程序

    一,引言 起因是前两天项目上做测试,需要我把写好的基于.NET 5 的 Web 测试程序作成 Docker 镜像.当我在本地验证完功能后,准备利用 Docker 构建应用程序镜像的时候,发现系统不支持 ...

  4. .Net Core DevOps -免费用Azure四步实现自动化发布(CI/CD)

    前言 linux 大行其道的今天想必大家都已经拥抱 core 了吧,通常的方案都是 gitlab+jenkins+centos,但是这样的方案不适合我这种懒人,一直在寻求简单的解决方案,在寻求方案的过 ...

  5. Azure 部署 Asp.NET Core Web App

    在云计算大行其道的时代,当你在部署一个网站时,第一选择肯定是各式各样的云端服务.那么究竟使用什么样的云端服务才能够以最快捷的方式部署一个 ASP.NET Core 的网站呢?Azure 的 Web A ...

  6. [dotnet core]落地微服务特色的DevOps管道,持续集成/部署到kubernetes。

    目录 前言 目标 工具 - 最小的学习成本 方案 - 愿景 1. 持续集成 - CI 2. 持续部署 - CD 部署环境 1. 部署gitlab-runner 2. 注册gitlab-runner 搭 ...

  7. 在 Azure 上部署 Asp.NET Core Web App

    在云计算大行其道的时代,当你要部署一个网站时第一选择肯定是各式各样的云端服务.那么究竟使用什么样的云端服务才能够以最快捷的方式部署一个 ASP.NET Core的网站呢?Azure 的 Web App ...

  8. Git--02 Devops介绍及git安装部署

    目录 1. Devops介绍 01. 运维介绍 02. Devops是什么 03. Devops能干嘛 04. Devops如何实现 2. Git版本控制系统 01. 版本控制系统简介 02. 为什么 ...

  9. Windows Azure入门教学系列 (一): 创建第一个WebRole程序

    原文 Windows Azure入门教学系列 (一): 创建第一个WebRole程序 在第一篇教学中,我们将学习如何在Visual Studio 2008 SP1中创建一个WebRole程序(C#语言 ...

随机推荐

  1. Redis 集群的主从复制模型是怎样的?

    为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所 以集群使用了主从复制模型,每个节点都会有 N-1 个复制品.

  2. Collection单列集合的继承关系(集合的层次结构)

  3. ModelSerializer序列化器实战

    目录 ModelSerializer序列化器实战 单表操作 序列化器类 视图类 路由 模型 多表操作 models.py serializer.py views.py urls.py ModelSer ...

  4. PCB设计常见规则及基本原则

    一.PCB基础知识 1.全称:印制电路板或者印制线路板 2.分类 材质分类:硬板(Rigid PCB).软板FPC(Flexible PCB).软硬结合板(Rigid-Flex PCB).HDI板(含 ...

  5. 原理图Checklist

    类别 描述 检视规则 原理图需要进行检视,提交集体检视是需要完成自检,确保没有低级问题. 检视规则 原理图要和公司团队和可以邀请的专家一起进行检视. 检视规则 第一次原理图发出进行集体检视后所有的修改 ...

  6. EF框架基础

    ORM概述: ORM全称是"对象 - 关系映射" . ORM是将关系数据库中的数据用对象的形式表现出来,并通过面向对象的方式将这些对象组织起来,实现系统业务逻辑的过程. Entit ...

  7. CCF201409-2 画图

    问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色. 下图给出了一个画了两个矩形的例子.第一个矩形是 ...

  8. vscode代码格式化快捷键及保存时自动格式化

    一.实现vs code中代码格式化快捷键:[Shift]+[Alt]+ F 二.实现保存时自动代码格式化: 1)文件 ------.>[首选项]---------->[设置]: 2)搜索  ...

  9. JavaScript实现带正则表达式的表单校验(校验成功后跳转)

    运行结果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...

  10. 深度学习(三)之LSTM写诗

    目录 数据预处理 构建数据集 模型结构 生成诗 根据上文生成诗 生成藏头诗 参考 根据前文生成诗: 机器学习业,圣贤不可求.临戎辞蜀计,忠信尽封疆.天子咨两相,建章应四方.自疑非俗态,谁复念鹪鹩. 生 ...