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的流水线去玩一下更花的操作。
Azure DevOps (十三) 通过Azure Devops部署一个Go的Web应用的更多相关文章
- ZH奶酪:LAMP环境中如何重新部署一个Yii2.0 web项目
使用Yii2.0 framework开发的项目,使用Github进行版本控制,现在要把这个项目部署到一个新的电脑/系统中: (1)安装LAMP (2)在/var/www/html目录下执行 git c ...
- 论如何在服务器上部署一个自己的web前端项目
就在前两天,有新人通过邮箱问到笔者,如何部署自己的web前端项目?笔者在此详细介绍. 一.购买云服务器 配置用户名密码.安全组 二.下载Xshell于Xftp工具 用于登录服务器和文件上传 三.在li ...
- Azure App Service(一)利用Azure DevOps Pipeline 构建镜像,部署应用程序
一,引言 起因是前两天项目上做测试,需要我把写好的基于.NET 5 的 Web 测试程序作成 Docker 镜像.当我在本地验证完功能后,准备利用 Docker 构建应用程序镜像的时候,发现系统不支持 ...
- .Net Core DevOps -免费用Azure四步实现自动化发布(CI/CD)
前言 linux 大行其道的今天想必大家都已经拥抱 core 了吧,通常的方案都是 gitlab+jenkins+centos,但是这样的方案不适合我这种懒人,一直在寻求简单的解决方案,在寻求方案的过 ...
- Azure 部署 Asp.NET Core Web App
在云计算大行其道的时代,当你在部署一个网站时,第一选择肯定是各式各样的云端服务.那么究竟使用什么样的云端服务才能够以最快捷的方式部署一个 ASP.NET Core 的网站呢?Azure 的 Web A ...
- [dotnet core]落地微服务特色的DevOps管道,持续集成/部署到kubernetes。
目录 前言 目标 工具 - 最小的学习成本 方案 - 愿景 1. 持续集成 - CI 2. 持续部署 - CD 部署环境 1. 部署gitlab-runner 2. 注册gitlab-runner 搭 ...
- 在 Azure 上部署 Asp.NET Core Web App
在云计算大行其道的时代,当你要部署一个网站时第一选择肯定是各式各样的云端服务.那么究竟使用什么样的云端服务才能够以最快捷的方式部署一个 ASP.NET Core的网站呢?Azure 的 Web App ...
- Git--02 Devops介绍及git安装部署
目录 1. Devops介绍 01. 运维介绍 02. Devops是什么 03. Devops能干嘛 04. Devops如何实现 2. Git版本控制系统 01. 版本控制系统简介 02. 为什么 ...
- Windows Azure入门教学系列 (一): 创建第一个WebRole程序
原文 Windows Azure入门教学系列 (一): 创建第一个WebRole程序 在第一篇教学中,我们将学习如何在Visual Studio 2008 SP1中创建一个WebRole程序(C#语言 ...
随机推荐
- 遇到MyBatis-Plus的错误之“Table 'mybatis_plus.user' doesn't exist”
一.问题 Table 'mybatis_plus.user' doesn't exist 二.原因 表中没有user表 三.解决方案 生成user表既可 四.结果图 运行后显示查询出来的数据 五.总结 ...
- 顺利通过EMC实验(8)
- Jar 包下载以及 maven jar 包配置
学习内容: jar包下载是我们必须掌握的一个内容,不管是使用Maven项目还是其他项目,一般都需要引入外部的 jar 包 jar包下载 下载地址(打不开网址的直接百度搜索 maven reposito ...
- Node自动重启工具 nodemon
为什么要使用 在编写调试Node.js项目,修改代码后,需要频繁的手动close掉,然后再重新启动,非常繁琐.现在,我们可以使用nodemon这个工具,它的作用是监听代码文件的变动,当代码改变之后,自 ...
- Exchange日志清理
1.清理日志--完整备份 Exchange Server 2013被部署在Windows Server 2012 及以上版本的操作系统中,使用操作系统内的"Windows Server Ba ...
- 耗时一个月上架了一款微信小程序,赚了2022年的第一笔副收入
今天不谈技术,只谈经历. 前戏 相信有很多的程序员都有一个产品梦,希望有一款属于自己产品.毕竟工作中遇到的有些"脑残"的产品经理不是一个两个,最后不得不因为"技术服务于业 ...
- c++对于c的扩展_冒号作用域
冒号作用域 ::(该运算符为作用域):如果::前面什么都没加代表全局作用域 #include <iostream> using namespace stu; int a=10; viod ...
- python---运算符和编码
格式化输出 在输出数据时,会有用户需要输入的信息被输出,没办法预先知道,这就需要使用格式化输出.先在相应位置放置一个占位符,再把字符串里的占位符与外部的变量做个映射关系. name = input(& ...
- 根据官方文档使用Visual Studio Code创建代码组件的一些总结
1.安装组件Visual Studio Code Download Visual Studio Code - Mac, Linux, Windows 2.安装Node.js Download | No ...
- IsDebuggerPresent的反调试与反反调试
一.调用系统的IsDebuggerPresent函数 (1)实现程序 最简单也是最基础的,Windows提供的API接口:IsDebuggerPresent(),这API实际上就是访问PEB的Bein ...