Azure DevOps (十三) 通過Azure Devops部署一個Go的Web應用

Tassdar發表於2022-05-12

前幾篇文章中,我們分別實現通過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的流水線去玩一下更花的操作。

相關文章