与 CI/CD 平台/工具集成
与 Github Action 的集成
在 Github Action 的 Yaml 文件中,可以增加 Serverless Devs 的相关下载、配置以及命令执行相关能力。
例如,在仓库中可以创建该文件.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: 16
registry-url: https://registry.npmjs.org/
- run: npm install
- run: npm install -g @serverless-devs/s
- run: s config add --AccessKeyID ${{secrets.AccessKeyID}} --AccessKeySecret ${{secrets.AccessKeySecret}} -a default -f
- run: s deploy -y --use-local
主要包括几个部分的内容:
run: npm install -g @serverless-devs/s
:
通过 NPM 安装最新版本的 Serverless Devs 开发者工具;run: s config add --AccessKeyID ${{secrets.AccessKeyID}} --AccessKeySecret ${{secrets.AccessKeySecret}} -a default -f
通过config
命令进行密钥等信息的配置;run: s deploy -y --use-local
执行某些命令,例如通过deploy
进行项目的部署,或者build
等命令进行构建等;
关于密钥的配置:密钥信息的获取是通过${{secrets.*}}
进行获取的,所以此时,需要将所需要的密钥和对应的Key
配置到 Github Secrets 中,例如在上面的案例中,需要AccessKeyID
,AccessKeySecret
等两个密钥的 Key ,我们就可以配置相关的内容:
-
将密钥信息配置到 Github Secrets 中
-
我们创建多对密钥信息: 例如,我此处配置了三对密钥:
关于密钥配置的部分注意内容,可以参考文末的注意事项
与 Gitee Go 的集成
在开启 Gitee Go 的服务之后,在流水线的 Yaml 文件中,可以增加 Serverless Devs 的相关下载、配置以及命令执行相关能力。
例如,在仓库中可以创建水流线文件,文件内容:
name: serverless-devs
displayName: 'Serverless Devs Project CI/CD'
triggers: # 流水线触发器配置
push: # 设置 master 分支 在产生代码 push 时精确触发(PRECISE)构建
- matchType: PRECISE
branch: master
commitMessage: '' # 通过匹配当前提交的 CommitMessage 决定是否执行流水线
stages: # 构建阶段配置
- stage: # 定义一个 ID 标识为 deploy-stage ,名为「 Deploy Stage 」的阶段
name: deploy-stage
displayName: 'Deploy Stage'
failFast: false # 允许快速失败,即当 Stage 中有任务失败时,直接结束整个 Stage
steps: # 构建步骤配置
- step: npmbuild@1 # 采用 npm 编译环境
name: deploy-step # 定义一个 ID 标识为 deploy-step ,名为「 Deploy Step 」的阶段
displayName: 'Deploy Step'
inputs: # 构建输入参数设定
nodeVersion: 14.15 # 指定 node 环境版本为 14.15
goals: | # 安装依赖,配置相关主题、部署参数并发布部署
node -v
npm -v
npm install -g @serverless-devs/s
s config add --AccessKeyID $ACCESSKEYID --AccessKeySecret $ACCESSKEYSECRET -a default -f
s deploy -y --use-local
主要包括几个部分的内容:
npm install -g @serverless-devs/s
:
通过 NPM 安装最新版本的 Serverless Devs 开发者工具;s config add --AccessKeyID $ACCESSKEYID --AccessKeySecret $ACCESSKEYSECRET -a default -f
通过config
命令进行密钥等信息的配置;s deploy -y --use-local
执行某些命令,例如通过deploy
进行项目的部署,或者build
等命令进行构建等;
关于密钥的配置:密钥信息的获取是通过$*
进行获取的,所以此时,需要将所需要的密钥和对应的Key
配置到 Gitee 的环境变量管理即可,例如在上面的案例中,需要ACCESSKEYID
,ACCESSKEYSECRET
等两个密钥的 Key ,我们就可以配置相关的内容:
-
找到 Gitee 的环境变量管理
-
我们创建多对密钥信息: 例如,我此处配置了三对密钥:
关于密钥配置的部分注意内容,可以参考文末的注意事项
与 Jenkins 的集成
在准备将 Serverless Devs 集成到 Jenkins 之前,需要先基于 Jenkins 官网 安装并运行 Jenkins。
本地启动 Jenkins 后,通过浏览器进入链接 http://localhost:8080
配置完成基础设置后,需要新增 Credentials 设置,如下图所示:
此时可以根据需要,增加密钥信息,以阿里云为例,新增三个全局凭据:
jenkins-alicloud-access-key-id : 阿里云 accessKeyId
jenkins-alicloud-access-key-secret : 阿里云 accessKeySecret
新增 Credentials 的教程可以参考这里。
此时,可以对自身的 Serverless Devs 项目进行完善:
- 创建文件
Jenkinsfile
pipeline { agent { docker { image 'maven:3.3-jdk-8' } } environment { ALICLOUD_ACCESS = 'default' 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 'scripts/setup.sh' } } } }
主要的内容包括两个部分:
- environment 部分,主要是根据上面步骤配置的密钥信息,进行密钥的处理;
-
stages 部分,这里面会有一个部分是
sh 'scripts/setup.sh'
,即运行scripts/setup.sh
文件,进行相关内容的准备和配置; -
准备
scripts/setup.sh
文件,只需要在项目下,创建该文件即可:#!/usr/bin/env bash echo $(pwd) curl -o- -L https://cli.serverless-devs.com/install.sh | bash source ~/.bashrc echo $ALICLOUD_ACCOUNT_ID s config add --AccessKeyID $ALICLOUD_ACCESS_KEY_ID --AccessKeySecret $ALICLOUD_ACCESS_KEY_SECRET -a $ALICLOUD_ACCESS (cd code && mvn package && echo $(pwd)) s deploy -y --use-local --access $ALICLOUD_ACCESS
在该文件中,主要包括了几个部分:
curl -o- -L https://cli.serverless-devs.com/install.sh | bash
下载并安装 Serverless Devs 开发者工具s config add --AccessKeyID $ALICLOUD_ACCESS_KEY_ID --AccessKeySecret $ALICLOUD_ACCESS_KEY_SECRET -a $ALICLOUD_ACCESS
配置密钥信息等内容s deploy -y --use-local --access $ALICLOUD_ACCESS
执行某些命令,例如通过deploy
进行项目的部署,或者build
等命令进行构建等;
完成密钥配置之后,可以创建一个 Jenkins 流水线,该流水线的源是目标 github 地址。接下来,就可以开始运行 Jenkins 流水线,运行结束后,就可以得到相关的内容结果。
关于密钥配置的部分注意内容,可以参考文末的注意事项
与云效的集成
-
在云效中的流水线中,选择 Serverless Devs 开发者工具
-
首次需要配置选择服务链接(如果不配置,添加服务链接旁边有个红色的感叹号)
-
在自定义命令中,输入以下内容即可进行部署:
# input your command here
s deploy -y --use-local -a default
还可以执行其他命令,例如通过build
命令进行构建;
注意事项
- 云效会自动创建一个基于
AliyunRDCDefaultRole
角色,别名为default
的临时密钥,因此无需手动使用s config add
添加; - 如果自动生成的临时密钥不满足需求,可以手动使用
s config add --AccessKeyID <AccessKeyID> --AccessKeySecret <AccessKeySecret> -a <别名> -f
添加自己的密钥,并在执行命令中使用-a
参数指定该密钥的别名; - 如果用户在
s.yaml
的access
属性中使用了不同于default
的别名,那么可能会导致配置的密钥不生效。因此,在s deploy
中,需要使用-a
指定使用上文配置的default
密钥,这样就可以无视s.yaml
的access
指定的密钥信息,强制使用default
的密钥信息; - 如果在当前应用在,涉及到了配置部署到不同的平台或者账号下,可能会涉及到配置多个密钥信息,此时需要给不同的密钥不同的别名,并且在
s.yaml
中进行使用; - 如果想要配置更为灵活的密钥信息,可以考虑通过
-il
和-kl
参数获取,例如同时配置两对密钥,并且使用自定义 Key :
s config add -kl tempToken1,tempToken2 -il tempValue1,tempValue2 -a website_access
s config add -kl tempToken3,tempToken4 -il tempValue3,tempValue4 -a fc_access