Skip to main content

打包部署

本文将详细介绍平台打包及部署.

打包

驱动打包就是将开发完成的程序打包为可以在平台部署的驱动. 平台自身支持运行在 windowslinuxmacOS 系统中, 并且支持 x86arm 平台. 在 windows 系统中平台服务和驱动程序都是直接运行在操作系统中, 而在 linux 系统中是以 容器 的方式运行, 平台中的每个服务和驱动程序都是一个独立的容器, 所以针对不同的操作系统打包方式也不相同. 下面分别介绍在 windowslinux 系统中如何打包驱动, 对于不同平台只需要保证使用软件和库支持即可.

windows系统打包

windows 系统中, 驱动程序是直接运行在操作系统中, 所以需要将驱动程序打包. 具体打包步骤如下:

  1. Dotnet 驱动为例打程序程序和相关资源打包为 二进制 文件.项目执行下面的命令进行编译:
dotnet build
  1. 准备驱动配置文件 config.yaml. 可以将 config.yaml 放在 netcore-driver.exe 文件相同的 etc 目录下, 这样驱动在启动时会自动加载该配置文件.
info

注: config.yaml 中需要填写好 驱动ID驱动名称 两个配置项, 参考驱动文档.

  1. 准备驱动安装配置文件 service.yml . 在平台中安装驱动时, 需要提供一些驱动的基本信息, 例如: 版本号、驱动描述、端口号等. 这些信息需要在 service.yml 中定义, 平台会根据该文件中的配置信息进行安装. service.yml 的具体格式如下:
Name: dotnetTestDriver
Description: dotnet测试驱动
Version: 4.0.0
ConfigType: config.yaml
GroupName: driver
Command: netcore-driver.exe
  1. 将所有资源打包为 zip 文件.

netcore-driver.execonfig.yamlservice.yml 和其它资源打包为 zip 文件, 平台会根据该文件进行安装. 建议打包后的 zip 文件结构如下:

目录结构

linux系统打包

由于在 linux 系统中, 驱动程序是以 容器 的方式运行, 所以打包时需要先将驱动程序打包为 docker 镜像. 然后再将镜像文件和 service.yml 打包为 .tar.gz 压缩包. 具体打包步骤如下:

  1. 准备驱动配置文件 config.yaml. 可以将 config.yaml 放在 netcore-driver.csproj 文件相同的 etc 目录下, 这样在生成镜像时会根据如下Dockerfile拷贝到对应目录.

    info

    注: config.yaml 中需要填写好 驱动ID驱动名称 两个配置项, 参考驱动文档.

  2. 编写Dockerfile,示例如下:

FROM mcr.microsoft.com/dotnet/runtime:5.0 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["netcore-driver.csproj", "."]
RUN dotnet restore "./netcore-driver.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "netcore-driver.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "netcore-driver.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
COPY etc /app/etc
ENTRYPOINT ["dotnet", "netcore-driver.dll"]
  1. 构建 docker 镜像.

使用上一步中的 Dockerfile 文件构建 docker 镜像, 具体命令如下:

docker build -t airiot/netcore-driver:v4.0.0 .

6 导出 docker 镜像并压缩.

docker save airiot/netcore-driver:v4.0.0 | gzip > netcore-driver.tar.gz
  1. 准备驱动安装配置文件 service.yml . 该文件的格式与 windows系统打包 中的第三步中的 service.yml 文件格式相似但又有区别. 具体格式如下:
# 必填项. 驱动名称
Name: netcore-driver
# 必填项. 例如: 1.0.0, 通常用镜像版本号一致
Version: 4.0.0
# 非必填项.
Description: 描述信息
# 必填项. 驱动固定为 driver、流程插件、算法服务为 server
GroupName: driver
# 容器端口映射类型, 非必填项. 如果驱动需要对外提供 rest 服务, 或暴露端口时, 需要填写该配置项.
# 可选项有 None Internal External
#
# None: 不暴露端口
# Internal: 只在平台内部暴露端口. 一般为驱动对外提供 rest 服务时, 将端口映射到网关上, 填写为 Internal 即可.
# External: 对外暴露端口. 一般为驱动为作 server 端, 需要对外暴露端口以供设备连接, 此时该端口会暴露在宿主机上, 填写为 External 即可.
Service: None

# 非必填项. 暴露的端口列表
#Ports:
# - Host: "8558" # 映射到宿主机的端口号, 如果不填写, 则会随机分配一个端口号
# Container: "8558" # 容器内部的端口号, 即驱动服务监听的端口号
# Protocol: "" # 协议类型, 可选项有 TCP UDP, 如果不填写, 则默认为 TCP
  1. 将所有资源打包为 gzip 文件. 将 docker镜像service.yml 文件打包为 gzip 文件. 打包命令如下:
tar cvf netcore-driver-v400.tar netcore-driver.tar.gz service.yml
gzip netcore-driver-v400.tar

打包后的 gzip 文件结构如下:

目录结构

部署

将上一步骤中得到的驱动安装包通过 运维管理系统 上传到平台, 平台会自动解析并安装驱动. 安装成功后, 就可以在项目中使用该驱动了.

安装驱动

  1. 登录 运维管理系统, 运维管理系统的默认登录地址为 http://IP:13030/, 将 IP 换成平台地址即可.
  2. 点击左侧菜单栏中的 服务管理 选项, 进入服务管理页面.
  3. 点击页面右上角的 离线上传驱动 按钮, 选择上一步中得到的 go-driver-example.tar.gz 文件, 点击 确定 按钮, 平台会自动解析并安装驱动.

离线上传驱动

如果驱动安装失败, 可以在 运维管理系统首页 中查看详细的日志信息.

驱动安装日志

info

不同版本的平台, 离线上传驱动 按扭的位置可能不同.

使用驱动

当驱动成功安装到平台后, 就可以在项目中使用该驱动了.

具体使用方法请参考 驱动管理.

info

注: 需要将运维服务的 InternetAccess 改为false, 才能读取本地仓库