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

简介: 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
相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
存储 人工智能 Serverless
AI 短剧遇上函数计算,一键搭建内容创意平台
为了帮助更多内容创作者和企业快速实现 AI 短剧创作,函数计算 FC 联合百炼联合推出“AI 剧本生成与动画创作解决方案”,通过函数计算 FC 构建 Web 服务,结合百炼模型服务和 ComfyUI 生图平台,实现从故事剧本撰写、插图设计、声音合成和字幕添加到视频合成的一站式自动化流程。创作者只需通过简单操作,就能快速生成高质量的剧本,并一键转化为精美的动画。
1785 109
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
消息中间件 运维 安全
C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
游戏行业蓬勃发展,作为国内领先的 STEAM 游戏饰品交易的服务平台,看 C5GAME 如何利用 RocketMQ Serverless 技术,为千万级玩家提供流畅的游戏体验,同时降低成本并提升运维效率。
1723 165
C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
1656 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
人工智能 运维 安全
阿里云 Serverless 助力海牙湾构建弹性、高效、智能的 AI 数字化平台
海牙湾(G-Town)是一家以“供应链+场景+技术+AI”为核心驱动力的科技公司,致力于为各行业提供数字化转型解决方案。通过采用阿里云Serverless架构,解决了弹性能力不足、资源浪费与运维低效的问题。SAE全托管特性降低了技术复杂度,并计划进一步探索Serverless与AI结合,推动智能数字化发展。海牙湾业务覆盖金融、美妆、能源等领域,与多家知名企业建立战略合作,持续优化用户体验和供应链决策能力,保障信息安全并创造可量化的商业价值。未来,公司将深化云原生技术应用,助力更多行业实现高效数字化转型。
1083 19
|
监控 jenkins Shell
jenkins结合gitlab实现CI(持续集成)
通过本文的介绍,我们详细了解了如何结合Jenkins和GitLab实现持续集成。从环境准备、插件配置到Pipeline任务创建和CI流程监控,每一步都提供了详细的操作步骤和示例代码。希望本文能帮助开发者快速搭建起高效的CI系统,提高项目开发效率和代码质量。
1987 9
|
运维 Cloud Native Serverless
Serverless Argo Workflows大规模计算工作流平台荣获信通院“云原生技术创新标杆案例”
2024年12月24日,阿里云Serverless Argo Workflows大规模计算工作流平台荣获由中国信息通信研究院颁发的「云原生技术创新案例」奖。
|
存储 人工智能 Serverless
AI 短剧遇上函数计算,一键搭建内容创意平台
AI 短剧遇上函数计算,一键搭建内容创意平台
457 0
|
存储 测试技术 持续交付
Docker与CI/CD的集成策略及其对软件开发效率和质量的提升作用
本文探讨了Docker与CI/CD的集成策略及其对软件开发效率和质量的提升作用。首先介绍了CI/CD的基本概念,接着阐述了Docker在环境一致性、快速部署、资源隔离和轻量化方面的优势。文章还详细讨论了构建、测试和部署阶段的具体集成方法,以及集成后带来的效率提升、可靠性增强、加速交付和易于管理等好处。最后,通过案例分析展示了集成的实际效果,强调了Docker与CI/CD结合的重要性和未来前景。
464 2
|
12月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
1107 30

热门文章

最新文章

相关产品

  • 函数计算