上云无忧 > 文档中心 > 腾讯云云函数使用教程 - 自动化部署
云函数 SCF
腾讯云云函数使用教程 - 自动化部署

文档简介:
简介: 随着敏捷和 DevOps 的流行,CI/CD 已经成了所有开发者在开发过程中必不可少的最佳实践,主要目标是以更快的速度、更短的周期向用户交付行之有效的软件。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

简介

随着敏捷和 DevOps 的流行,CI/CD 已经成了所有开发者在开发过程中必不可少的最佳实践,主要目标是以更快的速度、更短的周期向用户交付行之有效的软件。

CI/CD


CI/CD 优势

缩短发布周期
降低风险
提高代码质量
更高效的反馈循环
可视化过程
本文以 GitHub、Jenkins、CODING 三个平台为例介绍如何结合 Serverless Cloud Framework 为 Serverless 项目快速搭建 CI/CD。

基于 GitHub 的自动化部署

GitHub Actions 是 GitHub 推出的自动化软件开发工作流。通过 Actions 可以执行任何任务,其中就包括 CI/CD。

前提条件

Serverless 项目已经托管到 GitHub。
项目中需要包含 Serverless Cloud Framework 执行需要用到的配置文件serverless.yml
如果使用 Web 函数,请将 scf_bootstrap 文件放在项目根目录下。

操作步骤

注意
SCF 已经在 GitHub 市场发布了 腾讯云 Serverless 部署的 Action
1. 在 GitHub 市场中搜索 “Tencent Serverless Action”。

2. 在 Actions 中选择 Set up a workflow yourself,如下图所示:

3. 使用方式:
如果熟悉 Action 用法,您可以使用下文的命令,其中已经封装了安装 Serverless Cloud Framework 和执行部署命令的步骤。
		
- name: serverless scf deploy
uses: woodyyan/tencent-serverless-action@main
如果不熟悉 Action 用法,您可以根据不同的语言选择下列不同的 yml 写法,本文列举了Python、Java、NodeJS 三种语言的 yml 写法供参考。

Python
Java
NodeJS
			
# 当代码推送到 main 分支时,执行当前工作流程
# 更多配置信息: https://docs.github.com/cn/actions/getting-started-with-github-actions
name: deploy serverless scf
on: #监听的事件和分支配置
push:
branches:
- main
jobs:
deploy:
name: deploy serverless scf
runs-on: ubuntu-latest
steps:
- name: clone local repository
uses: actions/checkout@v2
- name: deploy serverless
uses: woodyyan/tencent-serverless-action@main
env: # 环境变量
STAGE: dev #您的部署环境
SERVERLESS_PLATFORM_VENDOR: tencent #serverless 境外默认为 aws,配置为腾讯
TENCENT_SECRET_ID: ${{ secrets.TENCENT_SECRET_ID }} #您的腾讯云账号 sercret ID,请在Settings-Secrets中配置
TENCENT_SECRET_KEY: ${{ secrets.TENCENT_SECRET_KEY }} #您的腾讯云账号 sercret key,请在Settings-Secrets中配置

			
name: deploy serverless scf
on: #监听的事件和分支配置
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'temurin'
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
settings-path: ${{ github.workspace }} # location for the settings.xml file
- name: Build with Gradle # Gradle项目用这个
uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: build
- name: Build with Maven # Maven项目用这个
run: mvn -B package --file pom.xml

- name: create zip folder # 此步骤仅用于Java Web函数,用于存放jar和

scf_bootstrap文件。Java事件函数只需要在Serverless.yml中指定Jar目录就好。

run: mkdir zip

- name: move jar and scf_bootstrap to zip folder # 此步骤仅用于Java Web函数,

用于移动jar和scf_bootstrap文件。Java事件函数只需要在Serverless.yml中指定Jar目录就好。

注意如果是Maven编译请修改下面的jar路径为/target。

run: cp ./build/libs/XXX.jar ./scf_bootstrap ./zip
- name: deploy serverless
uses: woodyyan/tencent-serverless-action@main
env: # 环境变量
STAGE: dev #您的部署环境
SERVERLESS_PLATFORM_VENDOR: tencent #serverless 境外默认为 aws,配置为腾讯
TENCENT_SECRET_ID: ${{ secrets.TENCENT_SECRET_ID }} #您的腾讯云账号 sercret ID
TENCENT_SECRET_KEY: ${{ secrets.TENCENT_SECRET_KEY }} #您的腾讯云账号 sercret key

			
# 当代码推送到 main 分支时,执行当前工作流程
# 更多配置信息: https://docs.github.com/cn/actions/getting-started-with-github-actions
name: deploy serverless scf
on: #监听的事件和分支配置
push:
branches:
- main
jobs:
deploy:
name: deploy serverless scf
runs-on: ubuntu-latest
steps:
- name: clone local repository
uses: actions/checkout@v2
- name: install dependency
run: npm install
- name: build
run: npm build
- name: deploy serverless
uses: woodyyan/tencent-serverless-action@main
env: # 环境变量
STAGE: dev #您的部署环境
SERVERLESS_PLATFORM_VENDOR: tencent #serverless 境外默认为 aws,配置为腾讯
TENCENT_SECRET_ID: ${{ secrets.TENCENT_SECRET_ID }} #您的腾讯云账号 sercret ID,请在Settings-Secrets中配置
TENCENT_SECRET_KEY: ${{ secrets.TENCENT_SECRET_KEY }} #您的腾讯云账号 sercret key,请在Settings-Secrets中配置

部署时需要用到腾讯云的 TENCENT_SECRET_IDTENCENT_SECRET_KEY,您需要在 Github 代码仓库的设置中的 Secrets 里进行变量配置,如下图所示:

腾讯云 Secret ID 和Secret KEY 可在腾讯云的 访问管理 中获取。
4. 配置完成后,每次推送代码,都会自动触发部署流程,同时在 Actions 中可以实时看到执行结果与错误日志,如下图所示:

除此之外,您还可以根据项目需要,在流程中添加测试、安全检查、发布等步骤。

基于 Jenkinsfile 的自动化部署

Jenkinsfile 是通用于 Jenkins、CODING 等平台的,完成 Jenkinsfile 的配置,则能在这些平台上完成自动化部署。

前提条件

已将您的 Serverless 项目托管到 CODING/GitHub/GitLab/码云等平台。
项目中需要包含 Serverless Cloud Framework 执行需要用到的配置文件 serverless.yml
如果使用 Web 函数,请将scf_bootstrap 文件放在项目根目录下。

操作步骤

本文提供了 Python、Java、NodeJS 三种语言的 Jenkinsfile 写法供参考,请仔细阅读注释。

		
pipeline {
agent any
stages {
stage('检出') {
steps {
checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
}
}
stage('Package'){ // 此stage仅用于Java项目
steps{
container("maven") {
echo 'Package start'
sh "mvn package" // 此行用于Java Maven项目
sh "./gradlew build" // 此行用于Java Gradle项目

sh "mkdir zip" // 此行仅用于Java Web函数,用于存放jar和scf_bootstrap文件。

Java事件函数只需要在Serverless.yml中指定Jar目录就好。

sh "cp ./build/libs/XXX.jar ./scf_bootstrap ./zip" // 此行仅用于Java Web函数,

用于移动jar和scf_bootstrap文件。Java事件函数只需要在Serverless.yml中指定Jar目录就好。

注意如果是Maven编译请修改下面的jar路径为/target。

}
}
}
stage('安装依赖') {
steps {
echo '安装依赖中...'
sh 'npm i -g scf'
sh 'npm install' // 此行用于NodeJS项目
echo '安装依赖完成.'
}
}
stage('部署') {
steps {
echo '部署中...'
withCredentials([
cloudApi(
credentialsId: "${env.TENCENT_CLOUD_API_CRED}",
secretIdVariable: 'TENCENT_SECRET_ID',
secretKeyVariable: 'TENCENT_SECRET_KEY'
),
]) {
// 生成凭据文件
sh 'echo "TENCENT_SECRET_ID=${TENCENT_SECRET_ID}\nTENCENT_SECRET_KEY=${TENCENT_SECRET_KEY}" > .env'
// 部署
sh 'scf deploy --debug'
// 移除凭据
sh 'rm .env'
}
echo '部署完成'
}
}
}
}

使用上面的 Jenkinsfile 即可在 Jenkins、CODING 等平台一键完成 CI/CD 配置。
注意
部署时需要用到腾讯云的TENCENT_SECRET_IDTENCENT_SECRET_KEY,可在 访问管理 中获取。
相似文档
  • 对于函数运行后抛出的错误信息,您可以检索错误内容找到对应的问题产生原因和解决方案。
  • 常见错误码解决方法如下表所示: InvalidParameter.FunctionName: FunctionName 取值与规范不符,请参见 API 文档 修正后重试。 InvalidParameterValue.Action: 所请求的 API 不存在,请参见 API 文档 修正后重试。
  • 概述: Serverless Web IDE 是腾讯云 Serverless 和 CODING 基于浏览器的集成式开发环境 CloudStudio 深度合作推出的云函数在线开发 IDE,提供接近原生 IDE 的云端开发体验。
  • 概述: Serverless Cloud Framework 是业界非常受欢迎的无服务器应用框架,开发者无需关心底层资源即可部署完整可用的 Serverless 应用架构。Serverless Cloud Framework 具有资源编排、自动伸缩、事件驱动等能力,覆盖编码、调试、测试、部署等全生命周期,帮助开发者通过联动云资源,迅速构建 Serverless 应用。
  • 您可以通过 NPM 安装 Serverless Cloud Framework。 通过 NPM 安装,安装前提: 使用 npm 安装前,需要确保您的环境中已安装好了 Node(版本需要 > 12)以及 npm(查看 Node.js 安装指南)。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部