Azure DevOps构建CICD流水线

这篇具有很好参考价值的文章主要介绍了Azure DevOps构建CICD流水线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境准备

Azure资源

  • Azure AKS
  • Azure CR
  • Azure DevOps

代码准备

.NET Core示例

Dockerfile

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

#ENV ConnectionStrings:Default=""
#ENV ConnectionStrings:Log=""

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src

COPY . .

#RUN dotnet restore

#RUN dotnet build MyProject.API.csproj -c Release -o /app


FROM build AS publish
RUN dotnet publish MyProject.API.csproj -c Release -o /app/publish
COPY MyProject.API.xml /app/publish/MyProject.API.xml
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

ENTRYPOINT ["dotnet", "MyProject.API.dll"]

deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
	name: awesome-api
spec:
	replicas: 1
	selector:
		matchLabels:
			app: awesome-api
	template:
		metadata:
			labels:
				app: awesome-api
		spec:
			nodeSelector:
				"kubernetes.io/os": linux
			containers:
			- name: awesome-api
				image: dataplatformacr.azurecr.cn/awesomeapi:latest
				env:
				- name: ALLOW_EMPTY_PASSWORD
					value: "yes"

---
apiVersion: v1
kind: Service
metadata:
	name: awesome-api
spec:
	ports:
	- port: 80
	type: LoadBalancer
	selector:
		app: awesome-api

Java示例

Dockerfile
FROM java:8
EXPOSE 8080

VOLUME /tmp
ADD target/*.jar  /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","-Xms128m","-Xmx300m","/app.jar","--spring.profiles.active=prod"]

deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: awesomemall-gateway
  namespace: awesomemall
  labels:
    app: awesomemall-gateway
spec:
  replicas: 1
  selector:
    matchLabels:
      app: awesomemall-gateway
  template:
    metadata:
      labels:
        app: awesomemall-gateway
    spec:
      containers:
        - name: awesomemall-gateway
          image: $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest
          imagePullPolicy: "IfNotPresent"
          ports:
            - containerPort: 8080
              protocol: TCP
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      restartPolicy: Always

---
kind: Service
apiVersion: v1
metadata:
  name: awesomemall-gateway
  namespace: awesomemall
  labels:
    app: awesomemall-gateway
spec:
  ports:
    - name: http
      protocol: TCP
      port: 8080
      targetPort: 8080
  selector:
    app: awesomemall-gateway
  type: NodePort

构建CICD流水线

应用授权

注册Azure AD应用

  • 打开Azure portal,导航到Azure AD
    Azure DevOps构建CICD流水线

  • 选择应用注册,点击新注册
    Azure DevOps构建CICD流水线

  • 输入应用名称,点击注册
    Azure DevOps构建CICD流水线

  • 创建客户端密码
    Azure DevOps构建CICD流水线

分配应用订阅的参与者角色

  • 导航到订阅,选择Access control(IAM),点击添加按钮,添加角色分配,将此应用分配为订阅的参与者权限
    Azure DevOps构建CICD流水线

配置Service Connection

配置gitee的链接服务

  • 导航到Project Settings页面,选择Service Connection选项卡,点击New Service Connection按钮,创建连接服务
    Azure DevOps构建CICD流水线

配置AKS的链接服务

  • 点击创建链接服务,选择Azure Resource Manager
    Azure DevOps构建CICD流水线

  • 选择Service principal (manual)
    Azure DevOps构建CICD流水线

  • 选择Azure Cloud China,输入必要信息
    Azure DevOps构建CICD流水线

  • 验证并保存。

创建Pipeline

选择模板

  • 导航到Pipeline,点击New Pipeline
    Azure DevOps构建CICD流水线

  • 选择手动编辑器方式创建Pipeline,不使用yaml方式

Azure DevOps构建CICD流水线

选择代码仓库

  • 如果是Azure代码仓库
    Azure DevOps构建CICD流水线

  • 如果是gitee代码仓库
    Azure DevOps构建CICD流水线

选择Agent

  • 保存默认即可。

Azure DevOps构建CICD流水线

构建镜像

  • 使用Docker作业来构建一个服务镜像

Azure DevOps构建CICD流水线

推送镜像

  • 将构建出来的镜像推送到Azure镜像仓库

Azure DevOps构建CICD流水线

临时禁用IP地址范围限制

  • 临时禁用IP Range限制。

Azure DevOps构建CICD流水线

  • shell脚本
# Get authorized ip ranges allowed to access API server of AKS cluster
current_authorized_ip=`az aks show -n $(aks.clusterName) -g $(aks.resourceGroupName) --query [apiServerAccessProfile.authorizedIpRanges] -o table|sed -n '3,1p' |sed 's/\s\+/,/g'`
echo ${current_authorized_ip}

# Get self public IP
# self_ip=$(curl ifconfig.co)
# echo "Self public IP address: $self_ip"

# Set current authorized ips as output variable
echo "##vso[task.setvariable variable=authorized_ip;isOutput=true]${current_authorized_ip}"

# Temperarily disable authorized IP ranges
arrIPs=(${current_authorized_ip//,/ })
if [ ${#arrIPs[@]} -gt 0 ];then
echo "Temperarily disable authorized IP ranges..."
az aks update -n $(aks.clusterName) -g $(aks.resourceGroupName) --api-server-authorized-ip-ranges ""
else
echo "Authorized IP is already disabled, skip temperary disable"
fi

部署服务

  • 更新部署服务。

Azure DevOps构建CICD流水线

  • Command Arguments
image deploy $(deploymentName) *=xxxazurecr.cn/$(imageNameWithTag)

启用IP地址范围限制

  • 启用IP Range限制。

Azure DevOps构建CICD流水线

  • shell 脚本
original_authorized_ip=$(aks.authorized_ip)
echo Original Authorized IP ranges: ${original_authorized_ip}

# Recover authorized IP ranges if need
arrIPs=(${original_authorized_ip//,/ })
if [ ${#arrIPs[@]} -gt 0 ];then
    echo "Recover authorized IP ranges to original configuration ..."
    az aks update -n $(aks.clusterName) -g $(aks.resourceGroupName) --api-server-authorized-ip-ranges ${original_authorized_ip}
else
    echo "Authorized IP ranges is disabled orginally, skip recover step"
fi

设置CD

  • 设置自动触发

Azure DevOps构建CICD流水线文章来源地址https://www.toymoban.com/news/detail-484016.html

到了这里,关于Azure DevOps构建CICD流水线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (十六)devops持续集成开发——jenkins流水线构建之邮件通知

    本节内容主要介绍jenkins在流水线任务构建完成后的通知操作,使用jenkins的邮件通知插件完成构建任务结束的通知。一般项目发布都会通知相关的责任人,这样项目发布在出现问题时能够及时的处理。 ①在插件中心安装Email Extension邮件通知插件 ②申请一个发送邮件的邮箱服务

    2024年02月21日
    浏览(65)
  • devops-5:从0开始构建一条完成的CI CD流水线

    前文中已经讲述了静态、动态增加agent节点,以动态的k8s cloud为例,下面就以Maven构建Java程序为例,开始构建出一条完整的CI CD流水线。 实现功能目标: 1.分别可以根据分支和tag从源码仓库clone代码 2.拿到源码后开始编译 3.构建image,并push到镜像仓库 4.部署到对应k8s集群 5.部署

    2023年04月20日
    浏览(62)
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用

    本节内容我们主要介绍在Jenkins流水线中,其构建过程中的一些构建策略的配置,例如通过远程http构建、定时任务构建、轮询SCM构建、参数化构建、Git hook钩子触发构建等,可根据不同的需求完成不同构建策略的配置。 - 构建策略说明: - 测试验证 - 构建说明 - 测试验证 - 配置

    2024年02月21日
    浏览(95)
  • 关于CICD流水线的前端项目运行错误,npm项目环境配置时出现报错:Not Found - GET https://registry.npm...

    原因应该是某些jar包缓存中没有需要改变镜像将包拉下来 npm config set registry http://registry.npm.taobao.org npm install npm run build

    2024年02月10日
    浏览(53)
  • 持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略

    目录 一、理论 1.开发测试运维环境 二、实验 1.Nexus制品晋级策略 (1)开发测试运维环境 (1)环境 表1 主机 主机 架构 版本 IP 备注 jenkins jenkins主节点       2.414.2 192.168.204.15:8080  gitlab runner (从节点) gitlab gitlab 主节点        12.10.14 192.168.204.8:82   jenkins slave (从节

    2024年02月04日
    浏览(48)
  • Kubesphere中DevOps流水线无法部署/部署失败

    总算能让devops运行以后,流水线却卡在了deploy这一步。碰到了两个比较大的问题,一个是无法使用k8sp自带的kubeconfig认证去部署;一个是部署好了以后但是没有办法解析镜像名。 k8s:v1.21.5 k8sp:v3.3.0 pipeline 在deploy 的阶段总是报各种错。 报错内容如下: 从message来看,已经不

    2023年04月23日
    浏览(57)
  • 【DevOps-09-1】Jenkins流水线任务初体验

    Jenkins流水线任务介绍 Jenkins流水线任务初体验 Jenkins流水线任务脚本语法初体验 Jenkinsfile维护脚本 之前采用Jenkins的自由风格构建的项目,每个步骤流程都要通过不同的方式设置,并且构建过程中整体流程是不可见的,无法确认每个流程花费的时间,并且问题不方便定位问题。

    2024年01月21日
    浏览(53)
  • DevOps系列文章 之GitLabCI模板库的流水线

    目录结构,jobs目录用于存放作业模板。templates目录用于存放流水线模板。这次使用​ ​default-pipeline.yml​ ​作为所有作业的基础模板。 作业模板 作业分为Build、test、codeanalysis、artifactory、deploy部分,在每个作业中配置了rules功能开关,由变量控制最终作业的运行。 jobs/buil

    2024年02月16日
    浏览(52)
  • 云计算课程第四次实验-搭建DevOps流水线

    子任务2:搭建DevOps流水线环境   本实验以主机本地虚拟机为载体,搭建Dev-ops流水线环境 使用的工具: 目录 一、实验概述 1.实验名称 2.实验目的 3.实验环境 二、实验内容 1.实验设计 2.实验过程 1.gitlab-server的搭建 2.harbor-server的搭建 3.Jenkins-server的搭建 4.Web-server的搭建 5.Dev搭

    2024年02月03日
    浏览(65)
  • DevOps落地笔记-14|部署流水线:打造一站式部署的关键平台

    上一课时我主要介绍了实现自动化测试的范围、流程和结构图,自动化测试是持续集成实践不可或缺的一部分,从而使得软件向高效率和高质量迈进了一大步。持续集成主要关注的是代码是否可以编译成功、是否可以通过单元测试和验收测试等。但持续集成并不能实现软件包

    2024年02月22日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包