当前位置: 首页 > news >正文

使用阿里云效API操作流水线

使用阿里云效(Alibaba Cloud DevOps)API操作流水线时,需要注意以下几个方面:

  1. 认证与授权
    确保你已经获取了正确的访问凭证(AccessKey ID 和 AccessKey Secret),并且这些凭证具有足够的权限来执行你需要的操作。可以通过阿里云的RAM(资源访问管理)控制台管理和分配这些权限。

  2. API 调用限制
    阿里云效API通常有调用频率限制(QPS)。确保在设计你的应用程序时考虑到这些限制,以避免超出配额导致的调用失败。

  3. 错误处理
    在使用API时,要做好错误处理和异常捕获。阿里云效API会返回详细的错误信息,包括错误代码和错误消息。需要根据这些信息来诊断问题并采取适当的措施。

  4. API版本
    确保你使用的API版本是最新的,并且在代码中指定了正确的版本。如果API有更新或废弃,需及时更新你的代码。

  5. 参数验证
    在调用API前,确保所有必需参数都已正确设置,并且这些参数的值符合API文档中的要求。

  6. 安全性
    在代码中不要硬编码敏感信息如AccessKey ID和AccessKey Secret。可以使用环境变量或其他安全存储方式来管理这些信息。

  7. 调试和日志
    启用详细的日志记录和调试信息,以便在出现问题时能够快速定位和解决问题。

  8. 资源管理
    确保在使用API创建或修改资源时,有相应的清理逻辑,以避免不必要的资源浪费。

注意事项:

  1. 阿里云子账户需要给策略权限: AliyunRDCFullAccess
  2. 子账号需要加入云效企业内部,并给足操作权限

文档: 云效API接口 ,云效错误码

示例代码

  1. 使用python 创建 Pipeline_sample.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
import os
import sysfrom typing import Listfrom alibabacloud_devops20210625.client import Client as devops20210625Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
from alibabacloud_devops20210625 import models as devops_20210625_models
from alibabacloud_tea_console.client import Client as ConsoleClientORGANIZATION_ID = [云效企业ID]class Pipeline:def __init__(self):self.organization_id = ORGANIZATION_IDpass@staticmethoddef create_client() -> devops20210625Client:"""使用AK&SK初始化账号Client@return: Client@throws Exception"""# 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。# 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。config = open_api_models.Config(# 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],# 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'])# Endpoint 请参考 https://api.aliyun.com/product/devopsconfig.endpoint = f'devops.cn-hangzhou.aliyuncs.com'return devops20210625Client(config)"""create_pipeline"""@staticmethoddef create_pipeline(name: str, yaml_file_path: str) -> None:# 读取 YAML 文件内容with open(yaml_file_path, 'r') as file:content = file.read()client = Pipeline.create_client()create_pipeline_request = devops_20210625_models.CreatePipelineRequest(name=name,content=content)runtime = util_models.RuntimeOptions()headers = {}try:# 复制代码运行请自行打印 API 的返回值response = client.create_pipeline_with_options(ORGANIZATION_ID, create_pipeline_request, headers,runtime)# 如果API调用成功,这里将处理并打印返回的数据if response:print("Pipeline created successfully.")# 假设返回的数据结构中包含一个status或类似字段来表示操作状态print("Response Data:", response)# print(response.body.__dict__)# 提取并打印 pipelinIdpipelinId = response.body.pipelin_idprint(pipelinId)except Exception as error:# 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。# 错误 messageprint(error.message)# 诊断地址print(error.data.get("Recommend"))UtilClient.assert_as_string(error.message)@staticmethoddef delete_pipeline(pipelin_id: str) -> None:client = Pipeline.create_client()runtime = util_models.RuntimeOptions()headers = {}try:# 复制代码运行请自行打印 API 的返回值response = client.delete_pipeline_with_options(ORGANIZATION_ID, pipelin_id, headers, runtime)# 如果API调用成功,这里将处理并打印返回的数据if response:print("Pipeline created successfully.")# 假设返回的数据结构中包含一个status或类似字段来表示操作状态print("Response Data:", response)except Exception as error:# 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。# 错误 messageprint(error.message)# 诊断地址print(error.data.get("Recommend"))UtilClient.assert_as_string(error.message)@staticmethoddef get_pipelines_list() -> None:client = Pipeline.create_client()list_pipelines_request = devops_20210625_models.ListPipelinesRequest(max_results=10,next_token='123')runtime = util_models.RuntimeOptions()headers = {}try:# 复制代码运行请自行打印 API 的返回值response = client.list_pipelines_with_options(ORGANIZATION_ID, list_pipelines_request, headers, runtime)# 如果API调用成功,这里将处理并打印返回的数据if response:print("Pipeline created successfully.")# 假设返回的数据结构中包含一个status或类似字段来表示操作状态print("Response Data:", response)except Exception as error:# 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。# 错误 messageprint(error.message)# 诊断地址print(error.data.get("Recommend"))UtilClient.assert_as_string(error.message)@staticmethoddef run_pipeline(json_file_path: str, pipeline_id: str) -> None:with open(json_file_path, 'r') as file:params = json.load(file)client = Pipeline.create_client()start_pipeline_run_request = devops_20210625_models.StartPipelineRunRequest(# params='''{"envs": {#                         "UPDATE": "ALL",#                         "IMAGES":"sjdlkfjslkdajf"#                     }}'''params=params)runtime = util_models.RuntimeOptions()headers = {}try:resp = client.start_pipeline_run_with_options(ORGANIZATION_ID, pipeline_id,start_pipeline_run_request, headers, runtime)ConsoleClient.log(UtilClient.to_jsonstring(resp))except Exception as error:# 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。# 错误 messageprint(error.message)# 诊断地址print(error.data.get("Recommend"))UtilClient.assert_as_string(error.message)if __name__ == '__main__':# 创建一个测试流水线# Pipeline.create_pipeline( name='测试流水线test4', yaml_file_path='pipeline_content.yaml')# 删除指定的流水线# Pipeline.delete_pipeline('3263926')# 执行指定的流水线Pipeline.run_pipeline("pipeline_params.json","3260926")# 获取流水线列表# Pipeline.get_pipelines_list()

传参文件 pipeline_params.json

{"envs": {"UPDATE": "ALL","IMAGES": "sjdlkfjslkdajf"}
}

流水线yaml配置 pipeline_content.yaml

文件可以再流水线使用yaml模式编辑后替换

stages:vm_deploy_stage:name: "部署"jobs:vm_deploy_job:name: "主机部署`测试主机"component: "VMDeploy"with:downloadArtifact: falseuseEncode: falsemachineGroup: "eSa9wUssQfX799kg"run: "/home/test.sh"artifactDownloadPath: ""executeUser: "root"artifact: ""

相关文章:

使用阿里云效API操作流水线

使用阿里云效(Alibaba Cloud DevOps)API操作流水线时,需要注意以下几个方面: 认证与授权 确保你已经获取了正确的访问凭证(AccessKey ID 和 AccessKey Secret),并且这些凭证具有足够的权限来执行…...

使用命令行创建uniapp+TS项目,使用vscode编辑器

一:如果没有pnpm,先安装pnpm 二:使用npx工具和degit工具从 GitHub 上的 dcloudio/uni-preset-vue 仓库克隆一个名为 vite-ts 的分支,到项目中. 执行完上面命令后,去manifest.json添加appid(自己微信小程序的Id),也可不执行直接下一步,执行pnpm install ,再执行pnpm:dev:mp-weix…...

ABC355 Bingo2

分析: 找出其中一行或列或任意对角线被全部标记,即可输出回合数,否则输出-1 如果x%n0,行是x/n,列是n 如果x%n!0,行是x/n1,列是x%n 如果行列或行列n1即为对角线。 标记行列对角线…...

Spring+Vue项目部署

目录 一、需要的资源 二、步骤 1.首先要拥有一个服务器 2.项目准备 vue: 打包: 3.服务器装环境 文件上传 设置application.yml覆盖 添加启动和停止脚本 ​编辑 安装jdk1.8 安装nginx 安装mysql 报错:「ERR」1273-Unknown collation: utf8m…...

【uml期末复习】统一建模语言大纲

前言: 关于uml的期末复习的常考知识点,可能对你们有帮助😉 目录 第一部分 概念与基础 第一章 面向对象技术 第二章 统一软件过程 第三章 UML概述 第四章 用例图 第五章 类图 第六章 对象图 第七章 顺序图 第八章 协作图 第九章 状态…...

Linux高级IO

高级IO 1.五种IO模型1.1 阻塞IO1.2 非阻塞IO1.3 信号驱动IO1.4 多路复用/多路转接IO1.5 异步IO1.6 小结 2.高级IO重要概念3.非阻塞IO3.1 实现函数NoBlock3.2 轮询方式读取标准输入 4.I/O多路转接之select4.1 理解select执行过程4.2 select的特点4.3 select缺点4.4 实现 5.I/O多…...

go-admin-ui开源后台管理系统华为云部署

1.华为云开通8000与9527端口 2.编译 编译成功 3.发布到远程服务器 4.登陆华为云终端 5.安装Nginx 6.查看服务启动状态 7.添加网站 添加与修改配置www-data 改为 www 自定义日志输出格式 添加网站配置文件go_admin_ui.conf 添加如下内容: location 下的root指向网站文件夹 修…...

点云入门知识

点云的处理任务 场景语义分割 物体的三维表达方法(3D representations): 点云:是由物体表面上许多点数据来表征这个物体。最接近原始传感器数据,且具有丰富的几何信息。 Mesh:用三角形面片和正方形面片拼…...

HTML静态网页成品作业(HTML+CSS+JS)——家乡莆田介绍网页(5个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,使用Javacsript代码实现图片轮播,共有5个页面。 二、作品…...

#### grpc比http性能高的原因 ####

grpc比http性能高的原因 二进制消息格式:gRPC使用Protobuf(一种有效的二进制消息格式)进行序列化,这种格式在服务器和客户端上的序列化速度非常快,且序列化后的消息体积小,适合带宽有限的场景。 HTTP/2协…...

微软Edge浏览器搜索引擎切换全攻略

微软Edge浏览器作为Windows 10的默认浏览器,提供了丰富的功能和良好的用户体验。其中,搜索引擎的切换功能允许用户根据个人喜好和需求,快速更换搜索引擎,从而获得更加个性化的搜索服务。本文将详细介绍如何在Edge浏览器中进行搜索…...

<Linux> 实现命名管道多进程任务派发

实现命名管道多进程任务派发 common文件 #ifndef _COMMON_H_ #define _COMMON_H_#pragma once #include <iostream> #include <unistd.h> #include <string> #include <sys/types.h> #include <sys/stat.h> #include <wait.h> #include &…...

BigInteger 和 BigDecimal(java)

文章目录 BigInteger(大整数&#xff09;常用构造方法常用方法 BigDecimal(大浮点数&#xff09;常用构造方法常用方法 DecimalFormat(数字格式化) BigInteger(大整数&#xff09; java.math.BigInteger。 父类&#xff1a;Number 常用构造方法 构造方法&#xff1a;BigIntege…...

Linux 进程间通讯

Linux IPC 方式 在Linux系统中&#xff0c;进程间通信&#xff08;IPC&#xff09;是多个运行中的程序或进程之间交换数据和信息的关键机制。Linux提供了多种IPC机制&#xff0c;每种机制都有其特定的用途和优势。以下是Linux上主要的IPC通信方式&#xff1a; 管道&#xff08…...

数据分析三剑客-Matplotlib

数据分析三剑客 数据分析三剑客通常指的是在Python数据分析领域中&#xff0c;三个非常重要的工具和库&#xff1a;Pandas、NumPy和Matplotlib。Pandas主要负责数据处理和分析&#xff0c;NumPy专注于数值计算和数学运算&#xff0c;而Matplotlib则负责数据可视化。这三个库相…...

FastAPI-Body、Field

参考&#xff1a;模式的额外信息 - 例子 - FastAPI 在FastAPI中&#xff0c;Body和Field是两个常用的注解&#xff0c;它们用于定义请求体中的数据或路径参数、查询参数等的处理方式。这两个注解都来自于Pydantic库&#xff0c;用于数据验证和解析&#xff0c;但它们的应用场景…...

软件设计师笔记-操作系统知识(二)

线程 以下是关于线程的一些关键点&#xff1a; 线程是进程中的一个实体&#xff1a;进程是操作系统分配资源&#xff08;如内存空间、文件句柄等&#xff09;的基本单位&#xff0c;而线程是进程中的一个执行单元。多个线程可以共享同一个进程的地址空间和其他资源。线程是CP…...

鸿蒙UI开发快速入门 —— part12: 渲染控制

如果你对鸿蒙开发感兴趣&#xff0c;加入Harmony自习室吧~&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; 扫描下面的二维码关注公众号。 1、前言 在声明式描述语句中开发者除了使用系统组件外&#xff0c;还可…...

添加用户页面(Flask+前端+MySQL整合)

首先导入Flask库和pymysql库。Flask用于创建Web应用程序&#xff0c;pymysql用于连接和操作MySQL数据库。 from flask import Flask, render_template, request import pymysql创建一个Flask应用实例。__name__参数告诉Flask使用当前模块作为应用的名称。 app Flask(__name_…...

素数筛(算法篇)

算法之素数筛 素数筛 引言&#xff1a; 素数(质数)&#xff1a;除了1和自己本身之外&#xff0c;没有任何因子的数叫做素数(质数) 朴素筛法(优化版) 概念&#xff1a; 朴素筛法&#xff1a;是直接暴力枚举2到当前判断的数x(不包括)&#xff0c;然后看在这范围内是否存在因…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...

【靶场】XXE-Lab xxe漏洞

前言 学习xxe漏洞,搭了个XXE-Lab的靶场 一、搭建靶场 现在需要登录,不知道用户名密码,先随便试试抓包 二、判断是否存在xxe漏洞 1.首先登录抓包 看到xml数据解析,由此判断和xxe漏洞有关,但还不确定xxe漏洞是否存在。 2.尝试xxe 漏洞 判断是否存在xxe漏洞 A.send to …...

AWS Elastic Beanstalk + CodePipeline(Python Flask Web的国区CI/CD)

目标 需要使用AWS Elastic Beanstalk 部署一个Python的Flask Web应用&#xff0c;并且使用CodePipeline作为CI/CD工作流。 eb部署图 前提 假设你已经有一个能够正常运行的Python的Flask Web应用项目代码&#xff0c;而且需要对已有Flask工程做一些调整。由于AWS Elastic Bea…...

前端对WebSocket进行封装,并建立心跳监测

WebSocket的介绍&#xff1a; WebSocket 是一种在客户端和服务器之间进行全双工、双向通信的协议。它是基于 HTTP 协议&#xff0c;但通过升级&#xff08;HTTP 升级请求&#xff09;将连接转换为 WebSocket 协议&#xff0c;从而提供更高效的实时数据交换。 WebSocket 的特点…...

Postgresql字符串操作函数

目录 一、基础字符串操作 二、大小写转换 三、空白处理 四、子串提取 五、搜索与定位 六、字符串修改 七、填充与格式化 八、编码转换 九、正则表达式&#xff08;高级匹配&#xff09; 十、其他实用函数 使用技巧&#xff1a; 以下是 PostgreSQL 中最全面的常用字符…...

DeepSeek R1 V2 深度探索:开源AI编码新利器,效能与创意并进

最近&#xff0c;AI界迎来了一位神秘的“突袭者”——DeepSeek团队悄无声息地发布了其推理模型DeepSeek R1的重磅升级版V2&#xff08;具体型号R1-0528&#xff09;。这款基于MIT许可的开源模型&#xff0c;在原版R1的基础上进行了多项令人瞩目的改进&#xff0c;正以其强大的潜…...