Serverless Devs 与 CI/CD 平台/工具集成

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
函数计算FC,每月15万CU 3个月
简介: Serverless Devs 与 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: 12
          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
      - run: s deploy

主要包括几个部分的内容:

  • run: npm install -g @serverless-devs/s:
    通过NPM安装最新版本的 Serverless Devs 开发者工具;
  • run: s config add --AccessKeyID ${{secrets.AccessKeyID}} --AccessKeySecret ${{secrets.AccessKeySecret}} -a default
    通过config命令进行密钥等信息的配置;
  • run: s deploy
    执行某些命令,例如通过deploy进行项目的部署,或者build等命令进行构建等;

关于密钥的配置:密钥信息的获取是通过${{secrets.*}}进行获取的,所以此时,需要将所需要的密钥和对应的Key配置到 Github Secrets 中,例如在上面的案例中,需要AccessKeyID,AccessKeySecret等两个密钥的 Key ,我们就可以配置相关的内容:

  1. 将密钥信息配置到Github Secrets中
  2. 我们创建多对密钥信息:

    例如,我此处配置了三对密钥:
关于密钥配置的部分注意内容,可以参考文末的 注意事项

与 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
              s deploy

主要包括几个部分的内容:

  • npm install -g @serverless-devs/s:
    通过NPM安装最新版本的 Serverless Devs 开发者工具;
  • s config add --AccessKeyID $ACCESSKEYID --AccessKeySecret $ACCESSKEYSECRET -a default
    通过config命令进行密钥等信息的配置;
  • s deploy
    执行某些命令,例如通过deploy进行项目的部署,或者build等命令进行构建等;

关于密钥的配置:密钥信息的获取是通过$*进行获取的,所以此时,需要将所需要的密钥和对应的Key配置到 Gitee 的环境变量管理即可,例如在上面的案例中,需要ACCESSKEYID,ACCESSKEYSECRET等两个密钥的 Key ,我们就可以配置相关的内容:

  1. 找到 Gitee 的环境变量管理
  2. 我们创建多对密钥信息:

    例如,我此处配置了三对密钥:
关于密钥配置的部分注意内容,可以参考文末的 注意事项

与 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 http://cli.so/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 http://cli.so/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
npm install -g @serverless-devs/s
s config add --AccessKeyID ${ACCESSKEYID} --AccessKeySecret ${ACCESSKEYSECRET} -a default
s deploy

这里主要包括三个部分:

  • npm install -g @serverless-devs/s:
    通过NPM安装最新版本的 Serverless Devs 开发者工具(虽然云效中已经拥有了相关版本的Serverless Devs,但是实际上,这个版本可能比较老旧,所以可以通过该命令安装最新版本);
  • s config add --AccessKeyID ${ACCESSKEYID} --AccessKeySecret ${ACCESSKEYSECRET} -a default
    通过config命令进行密钥等信息的配置;
  • s deploy
    执行某些命令,例如通过deploy进行项目的部署,或者build等命令进行构建等;

效果如下:

image

由于在命令中,引用了两个重要的环境变量:ACCESSKEYID, ACCESSKEYSECRET,所以还需要在环境变量中,增加类似的内容:

image

注意事项

  • 在配置密钥的时候,使用了s config add命令,此时在最后有一个参数是-a default,代表的是给该密钥一个叫default的别名,这个别名要和项目所设定的使用密钥保持一致,例如在s.yaml中的access字段;
  • 如果在当前应用在,涉及到了配置部署到不同的平台或者账号下,可能会涉及到配置多个密钥信息,此时需要给不同的密钥不同的别名,并且在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
相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
21天前
|
Serverless 对象存储
现代化 Web 应用构建问题之配置Serverless Devs的秘钥信息如何解决
现代化 Web 应用构建问题之配置Serverless Devs的秘钥信息如何解决
24 1
|
27天前
|
Java API 数据中心
百炼平台Java 集成API上传文档到数据中心并添加索引
本文主要演示阿里云百炼产品,如何通过API实现数据中心文档的上传和索引的添加。
|
1月前
|
存储 前端开发 Serverless
Serverless 魔法之旅:如何用 Funcraft、OSS 和 ROS 打造超级CI/CD流水线!
【8月更文挑战第8天】在现代软件开发中,CI/CD对于提升效率与代码质量至关重要。本文介绍如何运用阿里云的Serverless服务——Funcraft、OSS及ROS构建完整的CI/CD流程。首先配置Funcraft实现代码自动化构建与部署;接着利用OSS管理静态文件,确保网站内容正确加载;最后借助ROS自动化资源创建与管理,实现代码自动部署。通过整合这些服务,不仅加速了开发进程,还保证了代码质量和部署一致性,充分发挥Serverless架构的优势。
46 5
|
2月前
|
前端开发 JavaScript API
【Django+Vue3 线上教育平台项目实战】构建课程详情页与集成视频播放功能
随着数字化教育的兴起,构建一个高效、用户友好的线上教育平台至关重要。本文将探讨如何使用Django与Vue.js 3结合,实现一个包含课程列表和课程详情页(含视频播放功能)的线上教育平台部分。本文主要介绍了如何设计数据库模型、处理数据查询、构建动态前端界面,并集成视频播放功能,为用户带来流畅的学习体验。
【Django+Vue3 线上教育平台项目实战】构建课程详情页与集成视频播放功能
|
11天前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
62 0
|
1月前
|
人工智能 Java API
JeecgBoot 低代码平台快速集成 Spring AI
Spring 通过 Spring AI 项目正式启用了 AI(人工智能)生成提示功能。本文将带你了解如何在 Jeecg Boot 应用中集成生成式 AI,以及 Spring AI 如何与模型互动,包含 RAG 功能。
83 3
|
24天前
|
缓存 JavaScript Serverless
阿里云云效产品使用合集之如何在Serverless Devs阶段指定Node.js版本
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
数据采集 SQL DataWorks
【颠覆想象的数据巨匠】DataWorks——远超Excel的全能数据集成与管理平台:一场电商数据蜕变之旅的大揭秘!
【8月更文挑战第7天】随着大数据技术的发展,企业对数据处理的需求日益增长。DataWorks作为阿里云提供的数据集成与管理平台,为企业提供从数据采集、清洗、加工到应用的一站式解决方案。不同于桌面级工具如Excel,DataWorks具备强大的数据处理能力和丰富的功能集,支持大规模数据处理任务。本文通过电商平台案例,展示了如何使用DataWorks构建数据处理流程,包括多源数据接入、SQL任务实现数据采集、数据清洗加工以提高质量,以及利用分析工具挖掘数据价值的过程。这不仅凸显了DataWorks在大数据处理中的核心功能与优势,还展示了其相较于传统工具的高扩展性和灵活性。
67 0
|
1月前
|
关系型数据库 分布式数据库 数据库
苏州星河数聚「StaRiver RDP平台」通过PolarDB产品生态集成认证!
星河数聚科技(苏州)有限公司「StarRiver RealTime Data Platform实时数据融合服务平台」通过PolarDB产品生态集成认证!
|
2月前
|
人工智能 运维 机器人
函数计算产品使用问题之怎么使用Serverless Devs创建GPU函数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。

相关产品

  • 函数计算