原副标题:Serverless 构架下的 AI 应用领域合作开发
来 源 | 穆萨若非原生植物工程项目组
Serverless 构架与 CI/CD 辅助工具的紧密结合
CI/CD 是一种通过在应用领域合作测试期导入智能化业务流程以频密向顾客交货应用领域的形式。总的来看,CI/CD 的核心理念基本概念是稳步软件系统、稳步交货和稳步布署。
做为两个面向全国合作开发和营运工程项目组的软件系统,CI/CD 主要特别针对软件系统新标识符而所引起的问题。具体文本来说,CI/CD 可以让稳步智能化和稳步监视横跨于应用领域的整座开发周期(从软件系统、测试期到交货和布署期)。这些关连的外交事务一般来说被泛称为“CI/CD 管线”,由合作开发和网络管理组织工作工程项目组以灵巧形式协作全力支持。
CI/CD 的基本概念与文本洛佐韦
在 Serverless 构架下,一般来说会有许多表达式形成两个完备的机能或服务项目,这种较为mammalian的机能常常会给中后期工程项目保护增添很大的诸多不便,主要包括但不局限于表达式管理组织工作、工程项目的构筑、正式发布微观等的诸多不便。这时在 Serverless 构架中,CI/CD 就变得至关重要。更为自然科学、安全可靠的稳步软件系统和布署操作过程不但会让总体的业务流程更为规范化,也会在很大某种程度上减少数人操作形式、纯手工软件系统布署所造成严重错误的机率,同时也会小规模减低网络管理组织工作相关人员的组织工作经济负担。
如果想要通过 CI/CD 平台,自然科学且方便地进行 Serverless 应用领域的稳步软件系统、交货和布署,一般来说情况下我们需要借助相应的合作开发者辅助工具,例如 Serverless Framework、Serverless Devs 等。Serverless合作开发者辅助工具配置到 CI/CD 平台的业务流程可以简化为下图。
Serverless合作开发者辅助工具配置到 CI/CD 平台的业务流程
与 GitHub Action 的软件系统
在 GitHub Action 的 Yaml 文件中,增加 Serverless Devs 相关下载、配置以及命令执行相关文本。例如,在 GitHub 仓库中创建文件.github/workflows/publish.yml,文件文本如下:
name: Serverless Devs Project CI/CD
on:
push:
branches: [ master ]
jobs:
serverless-devs-cd:
runs- on: ubuntu-latest
steps:
– uses: actions/checkout@v2
– uses: actions/setup-node@v2
with:
node-version:12
registry-url: https: //registry.npmjs.org/
– run: npm install
– run: npm install -g @serverless-devs/s
– run: s config add –AccountID $ {{secrets.AccountID}} –AccessKeyID
$ {{secrets.AccessKeyID}} –AccessKeySecret ${{secrets.AccessKeySecret}} -a default
– run: s deploy
与 GitHub Action 软件系统主要主要包括以下几部分文本:
通过 NPM 安装最新版本的 Serverless Devs 合作开发者辅助工具:run: npminstall-g@ serverless– devs/ s
通过 config 命令进行密钥等信息的配置:run: s configadd –AccountID ${{secrets.AccountID}} –AccessKeyID ${{secrets.
AccessKeyID}} –AccessKeySecret ${{secrets.AccessKeySecret}} -a default
执行某些命令,例如通过 deploy 命令进行工程项目的布署,或者通过 build 等命令进行工程项目的构筑:run: s deploy
AccessKeyID、AccessKeySecret 三个密钥的 Key 就可以配置相关文本。
找到 GitHub Secrets 页面,总的来看。
GitHub Secrets 页面
创建和配置密钥信息,总的来看。
创建和配置密钥信息页面
此处配置了 3 对密钥,总的来看。
GitHub 仓库配置密钥结果页面
与 Gitee Go 的软件系统
在开启 Gitee Go 的服务项目之后,在流水线的 Yaml 文件中,可以增加 Serverless Devs 的相关下载、配置以及命令执行相关文本。
例如,在 GitHub 仓库中创建文件.github/workflows/publish.yml,文件文本如下:
name: serverless-devs
displayName: Serverless Devs Project CI/CD
triggers: #流水线触发器配置
push:
– matchType: PRECISE
branch: master
commitMessage:
stages:
– stage:
name: deploy-stage
displayName: Deploy Stage
failFast: false
steps: #构筑步骤配置
– step: npmbuild@1 #采用NPM编译环境
name: deploy-step
displayName: Deploy Step
inputs: #构筑输入参数设定
nodeVersion:14.15#指定 node 环境版本为 14.15
goals: | #安装依赖,配置相关主题、布署参数并正式发布布署
node -v
npm -v
npm install -g @serverless-devs/s
sco nfig add –AccountID $ACCOUNTID –AccessKeyID $ACCESSKEYID –AccessKeySecret $ACCESSKEYSECRET -a default
sdeploy
与 GitHub Action 软件系统的业务流程类似,与 Gitee Go 软件系统主要主要包括以下几部分文本。
通过 NPM 安装最新版本的 Serverless Devs 合作开发者辅助工具:npminstall-g@ serverless– devs/ s
通过 config 命令进行密钥等信息的配置:sconfig add –AccountID $ACCOUNTID–AccessKeyID$ACCESSKEYID–AccessKeySecret
$ACCESSKEYSECRET-a default
执行某些命令,例如通过 deploy 命令进行工程项目的布署,或者通过 build 等命令进行工程项目的构筑:sdeploy
ID、AccessKeyID、AccessKeySecret 三个密钥的 Key 就可以配置相关文本。
找到 Gitee 的环境变量管理组织工作页面,总的来看:
Gitee 的环境变量管理组织工作页面
创建和配置密钥信息,总的来看。
创建和配置密钥信息页面
此处配置了 3 对密钥,总的来看。
Gitee 仓库完成密钥配置页面
与 Jenkins 的软件系统
在将 Serverless Devs 软件系统到 Jenkins 之前,需要先基于 Jenkins 官网安装并运行 Jenkins。本地启动 Jenkins,通过浏览器进入并配置完成基础设置,之后新增凭据设置,如下图所示。
浏览器链接:http://localhost:8080
Jenkins 凭据设置页面
可以根据需要,增加密钥信息。以穆萨云为例,新增 3 个全局凭据:
jenkins-alicloud-account-id : 穆萨云 accountId jenkins-alicloud-access-key-id : 穆萨云 accessKeyId jenkins-alicloud-access-key-secret : 穆萨云 accessKeySecret这时,可以对自身的 Serverless Devs 工程项目进行完善。创建文件 Jenkinsfile:
pipeline {
agent {
docker {
image maven:3.3-jdk-8
}
}
environment {
ALICLOUD_ACCESS = default
ALICLOUD_ACCOUNT_ID = credentials( jenkins-alicloud-account-id)
ALICLOUD_ACCESS_KEY_ID = credentials(jenkins-alicloud-access-key-id)
ALICLOUD_ACCESS_KEY_SECRET = credentials(jenkins-alicloud-access-key-secret)
}
stages {
stage( Setup) {
steps {
sh s/setup.sh
}
}
}
}
与 Jenkins 软件系统主要文本主要包括以下两部分:
environment 部分:主要是根据上面步骤配置的密钥信息,进行密钥的处理。 stages 部分:主要包括 sh s/setup.sh部分,即运行 s/setup.sh 文件,进行相关文本的准备和配置。准备 s/setup.sh 文件,只需要在工程项目下创建该文件即可。
#!/usr/bin/env bash
echo$( pwd)
curl -o- -L http://cli.so/install.sh | bash
source~/.bashrc
echo$ALICLOUD_ACCOUNT_ID
s config add –AccountID $ALICLOUD_ACCOUNT_ID–AccessKeyID $ALICLOUD_ACCESS_KEY_
ID –AccessKeySecret $ALICLOUD_ACCESS_KEY_SECRET-a $ALICLOUD_ACCESS
( cdcode && mvn package && echo$( pwd))
s deploy -y –use-local –access $ALICLOUD_ACCESS
在该文件中,主要主要包括以下几个部分:
安装最新版本的 Serverless Devs 合作开发者辅助工具:curl -o- -L http: //cli.so/install.sh | bash
通过 config 命令进行密钥等信息的配置:sconfig add –AccountID $ALICLOUD_ACCOUNT_ID–AccessKeyID $ALICLOUD_ACCESS_
KEY_ID –AccessKeySecret $ALICLOUD_ACCESS_KEY_SECRET-a $ALICLOUD_ACCESS
执行某些命令,例如通过 deploy 命令进行工程项目的布署,或者通过 build 等命令进行工程项目构筑:sdeploy –y— use– local–access $ALICLOUD_ACCESS
完成密钥配置之后,可以创建两个 Jenkins 流水线。该流水线的源是目标 GitHub地址。接下来,就可以开始运行 Jenkins 流水线,运行结束后可得到相关的结果。
与云效的软件系统
在云效中,可以直接选择 Serverless Devs 合作开发者辅助工具,并在自定义命令中输入以下文本:
# input your command here
npminstall -g @serverless-devs/s
s config add –AccountID ${ACCOUNTID}–AccessKeyID ${ACCESSKEYID}–AccessKeySecret
${ACCESSKEYSECRET}-a default
s deploy
与 GitHub Action、Gitee Go 以及 Jenkins 的配置类似,与云效软件系统同样主要主要包括 3 部分。
安装最新版本的 Serverless Devs 合作开发者辅助工具:npminstall-g@ serverless– devs/ s
通过 config 命令进行密钥等信息的配置:sconfig add –AccountID${ACCOUNTID}–AccessKeyID
${ACCESSKEYID}–AccessKeySecret
执行某些命令,例如通过 deploy 命令进行工程项目的布署,或者通过 build 等命令进行工程项目的构筑:sdeploy -y
效果总的来看。
云效命令配置页面
由于在命令中引用了 3 个重要的环境变量:ACCOUNTID、 ACCESSKEYID、 ACCESSKEYSECRET,因此还需要在环境变量中增加图所示的类似文本。
环境变量配置页面
CI/CD 平台软件系统
总结通过上面几个案例不难发现,在做智能化正式发布时,最核心理念的 3 个业务流程如下。
下载辅助工具:命令为 npm install -g @Serverless-devs/s。 配置密钥:命令为s config add –AccountID $ACCOUNTID –AccessKeyID $ACCESSKEYID –AccessKeySecret $ACCESSKEYSECRET -a default。 工程项目布署:命令为s deploy。虽然只是以 GitHub Action、Gitee Go、Jenkins、云效几个辅助工具做为案例,实际上无论哪个辅助工具与 CI/CD 平台软件系统,上述 3 个核心理念业务流程都不会发生本质变化。另外,上面所列举的业务流程更多是在做智能化正式发布,在正式发布之前有时还需要进行一些测试和重新构筑,以便根据具体文本的实际需要进行适当的完善。
综上所述,如果想非常简单、快速、自然科学地完成 Serverless 应用领域的 CI/CD 建设,两个完善的合作开发者辅助工具是必不可少的。
Serverless Devs 是一款多云合作开发者辅助工具。我们可以通过该辅助工具非常简单、快速、方便地布署 AWS、穆萨云、腾讯云等多个云厂商的表达式计算等相关服务项目。同时,Serverless Devs 也是两个开源工程项目,便于用户随时随地贡献组件、应用领域。
Serverless 应用领域的可观测性
Serverless 应用领域的可观测性被许多用户所关注。可观测性是通过外部表现判断系统内部状态的形式。在应用领域合作开发中,可观测性有助于判断系统内部的健康状况,在系统出现问题时,帮助定位问题、排查问题、分析问题;在系统平稳运行时,帮助评估风险,预测可能出现的问题。
在 Serverless 应用领域合作开发中,如果表达式的并发度稳步升高,很可能是业务推广工程项目组业务规模迅速扩张。为了避免达到并发度限制而触发流控,合作开发者就需要提前提高并发度。
以穆萨云表达式计算为例,穆萨云表达式计算在可观测性微观提供了多种维度,主要包括 Logging、Metrics 以及 Tracing 等。总的来看:
表达式计算可观测性总体图表
在控制台监视中心,我们可以查看总体的 Metrics、服务项目级 Metrics 以及每个表达式的 Metrics,还可以看到当前表达式计算的请求记录。
表达式计算的请求记录
根据不同的请求记录,我们还可以查看表达式计算的详细信息。
表达式计算的请求详情
除了在控制台的监视中心查看表达式的日志等信息,我们还可以在表达式详情页面看到表达式计算的详细日志信息,
表达式计算的日志信息
还可以看到 Tracing 相关信息,如下图所示。
表达式计算的 Tracing 相关信息