该示例演示阿里云函数计算(FunctionCompute,FC)和 JenkinsCI 对接,实现 Serverless 应用的持续集成和持续发布。该示例启动一个 Jenkins 服务,监听指定的 github repo。当有代码变更时,自动触发设定的流水线任务,最终将变更部署到阿里云函数计算平台上。
- 一台安装了 docker 的机器。
- 本示例采用 typescript/nodejs 编写,需要设置好 typescript/nodejs 开发环境。
- 您有一个 pulumi 账号,安装了 pulumi软件,并配置好阿里云开发环境。
- 配置和运行 Jenkins 服务
- 在本机上通过容器启动 Jenkins 服务。
docker run -d -p 8080:8080 jenkinsci/blueocean
- 第一次运行 Jenkins 需要设置初始密码。通过
docker logs
命令查看 Jenkins 容器日志,找到下图所示的内容,拷贝系统生成的初始密码。 - 在浏览器中填入
http://localhost:8080
地址,访问本机的 Jenkins 服务,待启动成功后,将会出现如下界面,填入上一步中获取的初始密码。 - 安装完默认的插件后,还需安装 nodejs 插件。访问
http://localhost:8080/pluginManager/available
网址,如下图所示安装。- 配置 nodejs 插件。访问
http://localhost:8080/configureTools/
网址,进入全局工具配置页面。请选择 nodejs 15.3.0 版本,并将nodejs 15.3.0
填入 NodeJS 别名栏中。注意:这里的 nodjes 版本要和 Jenkinsfile 中的 nodejs 版本一致。您也可安装最新版本的 nodejs,但需要相应更改 Jenkinsfile 中的配置。
- 配置 nodejs 插件。访问
- 在本机上通过容器启动 Jenkins 服务。
- 在 Jenkins 中配置阿里云和 pulumi 密钥。
- 访问
https://app.pulumi.com/hryang/settings/tokens
,为 jenkins 生成 pulumi token。 - 访问
http://localhost:8080/credentials/store/system/domain/_/newCredentials
,为PULUMI_ACCESS_TOKEN
配置 Jenkins credential。如下图所示,"类型"选择 Secret text,“Secret” 填入上一步获取的 pulumi token。这样,您在后续的 Jenkinsfile 中,可以用凭证 id 来代表 pulumi token,避免泄漏。 - 重复上述步骤,为
ALICLOUD_ACCESS_KEY
,ALICLOUD_SECRET_KEY
配置 Jenkins credentials。
- 访问
- 在 github 中,fork pulumi-jenkins-example 项目。
- 在 Jenkins 中连接 github repo。
- 访问
http://localhost:8080/blue/organizations/jenkins/pipelines
网址,创建流水线。 - 选择 github 代码仓库,根据提示创建 github access token ,连接 github 仓库。
- 根据提示,选择 github 的 repo,创建流水线。 由于 pulumi-jenkins-example repo 中已经包含了 Jenkinsfile 文件,当 repo 连接成功后,Jenkins 会自动根据 Jenkinsfile 中的定义创建流水线,并触发流水线任务。
- 首次运行流水线任务会失败,这是由于原始 Jenkinsfile 中的
ALICLOUD_ACCESS_KEY
,ALICLOUD_SECRET_KEY
,PULUMI_ACCESS_TOKEN
需要更新为第二步中设置的密钥。- 访问
http://localhost:8080/credentials/store/system/domain/_/
, 获取相关凭证的 id - 将凭证 id 更新到 Jenkinsfile中
- git commit & push 更新后的 Jenkinsfile 到 github 仓库。后续的流水线任务就能成功运行。
- 访问
- 访问网址
http://localhost:8080/job/pulumi-jenkins-example/configure
,设置每隔一分钟扫描一次 github repo 变更。这样 jenkins 服务能够感知到代码仓库的变化。
- 访问