# 制品创建和部署

    # 从代码到制品

    # 上传代码

    新建一个项目命名为 base-project,新建一个应用命名为 go-web(具体请参见 项目和应用创建)。

    此处以一个简单的 Go 语言 Hello World 服务为例。

    在本地新建 go-web 文件夹,并在该文件夹中创建 main.go 文件,写入如下信息:

    package main
    
    import (
        "fmt"
        "log"
        "net/http"
    )
    
    func handler(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello World!")
    }
    
    func main() {
        http.HandleFunc("/", handler)
        log.Fatal(http.ListenAndServe(":8080", nil))
    }
    
    

    初始化 Go 的包管理:

    go mod init github.com/erda/go-web
    

    初始化 Git 仓库:

    git init
    git add .
    git commit -m "initialize"
    

    将 Erda 平台的代码仓库地址添加至本地并推送。

    您可以进入 DevOps 平台 > 项目 > base-project > 应用中心 > 应用 > go-web > 仓库地址,查看该代码仓库的地址、账号和口令。

    git remote add erda <your-url>
    git push -u erda --all
    git push -u erda --tags
    

    # 创建流水线

    pipeline.yml 文件是描述从代码编译构建到应用部署的流水线配置文件,更多信息请参见 pipeline.yml

    在本地的 go-web 文件夹中创建 pipeline.yml 文件,写入以下内容:

    version: "1.1"
    stages:
      - stage:
          - git-checkout:
              alias: git-checkout
      - stage:
          - golang:
              alias: go-demo
              params:
                command: go build -o go-web main.go
                context: ${git-checkout}
                service: web-server
      - stage:
          - release:
              alias: release
              params:
                dice_yml: ${git-checkout}/dice.yml
                image:
                  go-demo: ${go-demo:OUTPUT:image}
      - stage:
          - dice:
              alias: dice
              params:
                release_id: ${release:OUTPUT:releaseID}
    
    

    dice.yml 文件用于描述应用所需的资源大小、副本数量等,更多信息请参见 dice.yml

    在本地的 go-web 文件夹中创建 dice.yml 文件,写入以下内容:

    version: "2.0"
    services:
      go-demo:
        ports:
          - port: 8080
            expose: true
        resources:
          cpu: 0.2
          mem: 512
        deployments:
          replicas: 1
    
    

    提交文件:

    git add .
    git commit -m "add pipeline.yml and dice.yml"
    git push erda
    

    # 执行流水线

    进入应用的流水线页面,Master 分支下的默认流水线即由 pipeline.yml 文件解析而成。

    点击右上角 新建流水线,平台将为该流水线创建一条流水线实例。随后点击执行按钮,执行该流水线实例。

    流水线执行过程中,可实时查看流水线各步骤的执行状态,点击日志图标可查看对应节点执行状况的日志信息。

    流水线执行成功后,点击 Release Action 上的链接,可进入制品详情页查看制品信息。

    # 交付制品

    按上述步骤创建的制品为临时制品。关于制品的分类及更多信息,请参见 制品

    临时制品不适用于交付,仅适用于开发工程师临时部署自测。开发工程师完成自测后,需将制品交付至测试工程师进行测试,以发布非临时制品。下文将为您介绍如何创建非临时制品。

    # 交付测试

    在本地的 go-web 文件夹中,创建 Release 分支,此处以 release/1.0 分支为例:

    git checkout -b release/1.0
    

    修改代码,例如将 main.go 文件中的 "Hello World!" 改为 "Hello Erda!" ,随后提交文件:

    git add .
    git commit -m "release 1.0"
    git push --set-upstream erda release/1.0
    

    此时的流水线页面将显示 release/1.0 分支。执行该分支下的流水线,执行成功后得到的制品即为非临时制品。

    # 正式发布

    测试通过后需发布正式制品。

    点击 Release Action 上的链接跳转至制品详情页,点击 转正式 将其转为正式制品。

    您也可以进入 DevOps 平台 > 项目 > base-project > 应用中心 > 制品,将目标制品转为正式版。

    正式制品一经创建将无法修改,包括删除、编辑或转正。

    # 部署

    完成制品创建后,您可以进入 应用中心 > 环境部署 > 部署,选择对应的环境以实施部署。

    # 资源配额

    在执行部署操作前,请先确认该项目目标环境下的资源配额是否满足部署要求。

    请进入 DevOps 平台 > 项目 > 项目设置 > 项目配额 查看配额。更多资源管理相关内容,请参见 资源配额

    # 部署 Addon

    自定义类型的 Addon 需在部署前准备完成。

    进入 DevOps 平台 > 项目 > 应用中心 > 环境部署 > Addons,点击 添加服务,选择 三方服务Custom

    按需配置信息。

    # 部署配置

    进入 DevOps 平台 > 项目 > 应用中心 > 环境部署 > 配置,按需修改配置。

    提示

    若完成部署后再次修改配置,则新配置需重启服务或重新部署方可生效。

    Erda 提供多种配置方式,具体请参见 配置

    # 实施部署

    资源及配置准备就绪后,您可以进入 DevOps 平台 > 项目 > 应用中心 > 环境部署 > 部署 实施部署操作。

    选择对应的环境后,选择需部署的制品并创建部署。

    提示

    创建部署时,平台将对制品在当前环境的部署行为进行前置校验,请按照提示操作。

    点击 开始部署,平台将根据制品中的分组编排依次执行部署操作。

    部署过程中,您可以点击该部署记录查看当前部署的进度,等待部署完成即可。

    关于部署更多信息,请参见 部署管理