Gemini实战——用AI写CI/CD脚本,效率提升80%

Gemini实战——用AI写CI/CD脚本,效率提升80%当你还在为 YAML 语法和流水线配置头疼时 聪明的开发者已经用自然语言描述需求 3 分钟内获得可运行的完整 CI CD 脚本 在当今快节奏的软件开发环境中 持续集成和持续交付 CI CD 已成为现代工程实践的基石 然而 即使对经验丰富的开发者而言 编写和维护 CI CD 脚本仍然是一项耗时且容易出错的任务 不同平台 GitHub Actions GitLab CI Jenkins 的语法差异

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



当你还在为YAML语法和流水线配置头疼时,聪明的开发者已经用自然语言描述需求,3分钟内获得可运行的完整CI/CD脚本。

        在当今快节奏的软件开发环境中,持续集成和持续交付(CI/CD)已成为现代工程实践的基石。然而,即使对经验丰富的开发者而言,编写和维护CI/CD脚本仍然是一项耗时且容易出错的任务。不同平台(GitHub Actions、GitLab CI、Jenkins)的语法差异、复杂的部署逻辑、安全配置细节——这些都可能成为项目交付的瓶颈。

                Google的Gemini多模态AI模型正在改变这一现状。作为Google最先进的大型语言模型,Gemini不仅能理解复杂的自然语言描述,还能针对具体的CI/CD场景生成高质量、可定制的自动化脚本。根据我的实测数据,使用Gemini编写CI/CD脚本可以将初始搭建时间从平均4小时减少到30分钟以内,效率提升超过80%。

1.1 自然语言到配置文件的直接转换

Gemini最显著的优势在于其出色的自然语言理解能力。你无需记忆各种CI/CD工具的具体语法,只需用通俗易懂的语言描述你的需求:

传统方式: “我需要查阅GitLab CI文档,学习如何定义stages,配置cache策略, 设置Docker构建步骤,添加Kubernetes部署逻辑…”

Gemini方式: “为我的Node.js应用创建一个CI/CD流水线,包括代码检查、单元测试、 Docker镜像构建、推送到Google Container Registry,并部署到Kubernetes集群”

        这种从意图到实现的直接转换,大大降低了CI/CD的学习曲线。即使是刚接触CI/CD的开发者,也能快速搭建专业级的自动化流水线。

1.2 全面的平台支持覆盖

        Gemini支持主流的CI/CD平台和工具链,包括但不限于:

平台/工具

支持能力

示例应用

GitHub Actions

工作流文件(.yml)生成

自动化测试、Docker构建、多云部署

GitLab CI/CD

.gitlab-ci.yml配置

多阶段流水线、集成K8s、安全扫描

Jenkins

Jenkinsfile生成

声明式/脚本式流水线、共享库使用

CircleCI

config.yml配置

工作流编排、并行执行、缓存优化

AWS CodePipeline

构建规范生成

AWS服务集成、Lambda部署、EC2更新

Azure Pipelines

azure-pipelines.yml

Azure服务部署、多环境配置

        更重要的是,Gemini能够理解跨平台的**实践。例如,当你在描述中提及”Docker多阶段构建”时,它会自动生成优化的构建脚本,而不仅仅是简单的docker build命令。

1.3 智能错误诊断与修复建议

        当流水线执行失败时,传统的调试方式是:查看日志 -> 搜索错误信息 -> 尝试修复 -> 重新运行。这个过程可能需要多次迭代。Gemini改变了这一模式:

# 用户输入错误日志: “”” GitHub Actions执行失败,错误信息: Error: Process completed with exit code 1. /usr/bin/docker: Error response from daemon: failed to copy files: failed to copy directory: write /app/node_modules/.cache/.cache: no space left on device. “””

Gemini的诊断与修复建议:

”“” 磁盘空间不足导致Docker构建失败。建议优化方案:

  1. 清理Docker缓存(修改GitHub Actions步骤):
  • name: Clean up Docker resources run: | docker system prune -f docker builder prune -f -a
  1. 优化构建上下文(添加.dockerignore):
  • 在项目根目录创建.dockerignore文件
  • 忽略node_modules、git目录等
  1. 分阶段构建(使用多阶段Dockerfile):

    构建阶段

    FROM node:18-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci –only=production

生产阶段

FROM node:18-alpine COPY –from=builder /app/node_modules ./node_modules COPY . . “””

        这种上下文感知的问题诊断能力,使开发者能够快速定位并解决CI/CD流水线中的复杂问题。

2.1 场景描述与需求分析

        假设我们正在开发一个名为”DataProcessor”的Python数据处理服务,项目结构如下:

data-processor/ ├── src/ │ ├── processor.py │ └── utils.py ├── tests/ │ ├── test_processor.py │ └── test_utils.py ├── requirements.txt ├── requirements-dev.txt ├── Dockerfile └── setup.py

        我们的CI/CD需求包括:

  1. 代码质量检查(flake8、black、mypy)
  2. 单元测试(pytest)与覆盖率报告
  3. Docker镜像构建与推送至AWS ECR
  4. 安全扫描(Trivy)
  5. 部署到AWS ECS
2.2 精准提示词设计

        要让Gemini生成高质量的脚本,关键在于设计精准的提示词。以下是我在实践中总结的提示词模板:

请为我的Python项目生成完整的GitHub Actions CI/CD工作流,具体要求如下:

项目类型:Python数据处理服务 Python版本:3.10 触发条件:

  • 主分支(push/pull_request)触发完整流水线
  • 功能分支(push)仅触发测试和代码检查
  • 定时任务(每天凌晨2点)运行完整测试

流水线阶段:

  1. 代码质量检查
    • 使用flake8进行代码风格检查
    • 使用black检查代码格式
    • 使用mypy进行类型检查
    • 设置超时时间10分钟
  2. 测试与覆盖率
    • 使用pytest运行所有测试
    • 生成HTML覆盖率报告
    • 覆盖率要求>=85%
    • 测试结果上传到Artifacts
  3. 安全扫描
    • 使用Trivy扫描Docker镜像漏洞
    • 使用Bandit扫描Python代码安全问题
    • 仅警告,不阻塞构建
  4. 构建与推送
    • Docker多阶段构建
    • 推送到AWS ECR
    • 为镜像打标签:latest和git提交哈希
    • 缓存Docker层以加速构建
  5. 部署
    • 仅主分支通过测试后自动部署
    • 部署到AWS ECS
    • 蓝绿部署策略
    • 健康检查通过后切换流量

环境变量和密钥:

  • 从GitHub Secrets读取:AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
  • 从Variables读取:ECR_REPOSITORY, ECS_CLUSTER, ECS_SERVICE

其他要求:

  • 使用actions/cache缓存Python依赖
  • 每个步骤添加友好名称
  • 步骤失败时发送Slack通知
  • 工作流超时设置为30分钟
  • 添加注释说明关键配置         基于以上提示词,Gemini生成的GitHub Actions工作流如下:
    2.3 Gemini生成的完整工作流
    name: CI/CD Pipeline for Python Data Processor

on: push:

branches: - main - feature/ paths-ignore: - '.md' - '.gitignore' 

pull_request:

branches: [main] 

schedule:

- cron: '0 2 * * *' # 每天凌晨2点运行 

workflow_dispatch: # 允许手动触发

环境变量

env: PYTHON_VERSION: ‘3.10’ REGISTRY: \({{ vars.ECR_REGISTRY || 'public.ecr.aws' }} REPOSITORY: \){{ vars.ECR_REPOSITORY || ‘data-processor’ }} IMAGE_NAME: \({{ env.REGISTRY }}/\){{ env.REPOSITORY }} AWS_REGION: ‘us-east-1’

工作流配置

jobs: code-quality:

name: Code Quality Check runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python ${{ env.PYTHON_VERSION }} uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} cache: 'pip' - name: Cache Python dependencies uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('requirements*.txt') }} restore-keys: | ${{ runner.os }}-pip- - name: Install dependencies run: | python -m pip install --upgrade pip pip install flake8 black mypy - name: Lint with flake8 run: | flake8 src/ --count --max-complexity=10 --statistics - name: Check formatting with black run: | black --check --diff src/ - name: Type check with mypy run: | mypy --ignore-missing-imports src/ 

test:

name: Run Tests
runs-on: ubuntu-latest
needs: code-quality

steps:
- name: Checkout code
  uses: actions/checkout@v4

- name: Set up Python
  uses: actions/setup-python@v5
  with:
    python-version: ${{ env.PYTHON_VERSION }}

- name: Install dependencies
  run: |
    pip install -r requirements.txt
    pip install -r requirements-dev.txt
    pip install pytest pytest-cov pytest-html

- name: Run tests with pytest
  run: |
    pytest tests/ 
      --cov=src 
      --cov-report=html 
      --cov-report=xml 
      --cov-fail-under=85 
      --junitxml=test-results.xml

- name: Upload test results
  uses: actions/upload-artifact@v4
  if: always()
  with:
    name: test-results
    path: |
      htmlcov/
      test-results.xml
      coverage.xml

security-scan:

name: Security Scan runs-on: ubuntu-latest needs: test steps: - name: Checkout code uses: actions/checkout@v4 - name: Run Bandit security scan run: | pip install bandit bandit -r src/ -f json -o bandit-report.json || true - name: Upload security report uses: actions/upload-artifact@v4 if: always() with: name: security-reports path: bandit-report.json 

build-and-push:

name: Build and Push Docker Image runs-on: ubuntu-latest needs: security-scan if: github.ref == 'refs/heads/main' outputs: image-tag: ${{ steps.meta.outputs.tags }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ env.AWS_REGION }} - name: Login to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v2 - name: Extract metadata for Docker id: meta uses: docker/metadata-action@v5 with: images: ${{ env.IMAGE_NAME }} tags: | type=sha,prefix=,format=short type=ref,event=branch labels: | org.opencontainers.image.title=DataProcessor org.opencontainers.image.description=Python Data Processing Service - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Cache Docker layers uses: actions/cache@v3 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max - name: Scan image with Trivy uses: aquasecurity/trivy-action@master with: image-ref: ${{ env.IMAGE_NAME }}:${{ github.sha }} format: 'sarif' output: 'trivy-results.sarif' - name: Upload Trivy scan results uses: github/codeql-action/upload-sarif@v3 if: always() with: sarif_file: 'trivy-results.sarif' 

deploy:

name: Deploy to ECS runs-on: ubuntu-latest needs: build-and-push if: github.ref == 'refs/heads/main' environment: production permissions: id-token: write contents: read steps: - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ env.AWS_REGION }} - name: Download task definition run: | aws ecs describe-task-definition --task-definition data-processor-task --query taskDefinition > task-definition.json - name: Update container image in task definition id: update-task-def uses: aws-actions/amazon-ecs-render-task-definition@v1 with: task-definition: task-definition.json container-name: data-processor image: ${{ env.IMAGE_NAME }}:${{ needs.build-and-push.outputs.image-tag }} - name: Deploy to ECS (Blue-Green) uses: aws-actions/amazon-ecs-deploy-task-definition@v2 with: task-definition: ${{ steps.update-task-def.outputs.task-definition }} service: ${{ vars.ECS_SERVICE }} cluster: ${{ vars.ECS_CLUSTER }} wait-for-service-stability: true codedeploy-appspec: appspec.yaml codedeploy-application: my-app codedeploy-deployment-group: my-dg - name: Health check run: | # 等待新服务启动 sleep 30 # 发送测试请求验证服务健康 # 这里添加具体的健康检查逻辑 

通知步骤

notify: name: Send Notification runs-on: ubuntu-latest needs: [deploy] if: always()

steps:

  • name: Send Slack notification uses: 8398a7/action-slack@v3 with: status: \({{ job.status }} channel: '#ci-cd-notifications' username: 'GitHub Actions Bot' env: SLACK_WEBHOOK_URL: \)        这个工作流展示了多个CI/CD**实践:{{ secrets.SLACK_WEBHOOK_URL }}
    2.4 关键配置解析
    1. 智能缓存策略:同时缓存Python依赖和Docker构建层
    2. 多阶段流水线:代码检查、测试、安全扫描、构建、部署分阶段执行
    3. 条件执行:主分支自动部署,功能分支仅运行测试
    4. 安全集成:Trivy镜像扫描、Bandit代码扫描
    5. 蓝绿部署:通过CodeDeploy实现零停机部署
    6. 完整监控:测试报告、安全报告归档,Slack通知

3.1 精准提示词设计技巧

        通过大量实践,我总结了Gemini提示词设计的SPECIFIC原则

  • Specific(具体):明确指定工具版本、环境变量
  • Practical(实用):包含实际可用的配置示例
  • Explicit(明确):清楚说明触发条件、执行顺序
  • Contextual(上下文):提供项目类型、技术栈信息
  • Inclusive(全面):覆盖错误处理、通知、缓存等非功能性需求
  • Formatted(格式化):使用清晰的层级结构和标记
  • Iterative(可迭代):允许分步骤、分阶段生成

        对比示例

# 普通提示词: “为React应用生成CI/CD配置”

优化后的提示词(遵循SPECIFIC原则):

”“” 为React 18 + TypeScript + Vite前端应用生成GitLab CI/CD配置文件。

项目结构:

  • src/: 源代码
  • public/: 静态资源
  • package.json: 依赖定义
  • Dockerfile: 多阶段构建

需求:

  1. 代码质量阶段:
    • ESLint检查(使用自定义规则)
    • TypeScript类型检查(严格模式)
    • 单元测试(Jest + React Testing Library)
  2. 构建阶段:
    • 安装依赖(使用pnpm,缓存node_modules)
    • 构建生产版本(Vite)
    • 运行端到端测试(Playwright)
  3. 部署阶段:
    • 构建Docker镜像
    • 推送到GitLab Container Registry
    • 部署到Kubernetes(通过Helm)

触发规则:

  • 合并请求时:运行代码质量和测试
  • 推送到main分支:运行完整流水线
  • 定时任务:每周一凌晨执行完整流水线

环境变量:

  • CI_REGISTRY: GitLab容器注册表
  • KUBECONFIG: Kubernetes配置
  • 从GitLab CI/CD变量读取敏感信息 “””         安全是CI/CD流水线的关键考量。Gemini可以帮助生成符合安全**实践的配置:
    3.2 安全**实践生成
    # 用户提示词: “”” 生成安全的GitHub Actions工作流,避免常见安全漏洞。 要求:
  1. 使用OpenID Connect (OIDC)替代长期凭证
  2. 最小化权限原则
  3. 密钥管理**实践
  4. 依赖项漏洞扫描 “””

Gemini生成的安全配置片段:

permissions: # 最小化权限:仅授予工作流所需权限 contents: read id-token: write # OIDC所需 packages: write security-events: write

jobs: security-scan:

runs-on: ubuntu-latest permissions: # 作业级别权限覆盖,进一步缩小权限范围 contents: read security-events: write steps: - uses: actions/checkout@v4 - name: Use OIDC to authenticate to AWS uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::2:role/github-actions-role aws-region: us-east-1 # 不使用长期访问密钥 # aws-access-key-id和aws-secret-access-key从secrets中移除 - name: Scan for secrets in code uses: trufflesecurity/trufflehog@main with: extra_args: --only-verified - name: Dependency vulnerability scan uses: snyk/actions/node@master env: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} - name: Generate SBOM uses: anchore/sbom-action@v0 with: format: 'cyclonedx-json'

3.3 错误诊断与修复流程

        当CI/CD流水线失败时,可以将错误日志直接提供给Gemini进行分析:

# 实际错误日志示例: “”” Starting Docker build… Step 18 : FROM python:3.10-slim —> abc123def456 Step 28 : WORKDIR /app —> Using cache —> 789ghi012jkl Step 38 : COPY requirements.txt . —> Using cache —> 345mno678pqr Step 48 : RUN pip install –no-cache-dir -r requirements.txt —> Running in 901stu234vwx ERROR: Could not find a version that satisfies the requirement torch==1.13.1 ERROR: No matching distribution found for torch==1.13.1 The command ‘/bin/sh -c pip install –no-cache-dir -r requirements.txt’ returned a non-zero code: 1 “””

Gemini的诊断与修复建议:

”“” 问题分析:

  1. PyTorch 1.13.1可能不适用于当前Python版本或操作系统架构
  2. Docker基础镜像的架构可能与包不兼容
  3. requirements.txt中指定的版本可能不存在

解决方案:

方案A:更新requirements.txt(推荐)

查找可用的最新版本

pip index versions torch

或访问PyPI查看可用版本:https://pypi.org/project/torch/

更新requirements.txt中的版本

  • torch==1.13.1
  • torch==2.0.1 # 使用稳定版本

方案B:使用兼容性更好的基础镜像

  • FROM python:3.10-slim
  • FROM python:3.10-slim-bullseye # 指定Debian版本

方案C:添加架构特定的安装选项

在Dockerfile中添加架构检查

RUN ARCH=$(uname -m) &&

if [ "$ARCH" = "aarch64" ]; then pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu; else pip install torch==1.13.1; fi 

预防措施:

  1. 在CI中提前验证依赖兼容性
  2. 使用Docker多阶段构建,在构建阶段验证依赖
  3. 添加回退机制到较旧的稳定版本 “””

        为了展示Gemini的多平台支持能力,我们看同一个需求在不同平台上的实现:

# 需求:Node.js应用的CI/CD流水线,包括测试、构建、部署 # 1. GitHub Actions name: Node.js CI/CD on: [push] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: '18' } - run: npm ci - run: npm test build: needs: test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: '18' } - run: npm run build - uses: actions/upload-artifact@v4 with: { name: build, path: dist/ } # 2. GitLab CI stages: - test - build - deploy test: stage: test image: node:18-alpine script: - npm ci - npm test artifacts: paths: - node_modules/ expire_in: 1 hour build: stage: build image: node:18-alpine script: - npm run build artifacts: paths: - dist/ expire_in: 1 week # 3. Jenkins (声明式流水线) pipeline { agent any stages { stage('Test') { agent { docker { image 'node:18-alpine' } } steps { sh 'npm ci' sh 'npm test' } } stage('Build') { agent { docker { image 'node:18-alpine' } } steps } } }
5.1 工具版本兼容性问题

问题:Gemini的训练数据可能不包含最新的工具版本特性。

解决方案

# 明确指定版本信息 """ 生成使用最新GitHub Actions的CI/CD工作流。 要求: 1. 使用actions/checkout@v4(最新版本) 2. 使用Node.js 20(当前LTS版本) 3. 使用最新Docker Buildx特性 4. 参考官方文档日期:2024年1月 """
5.2 复杂业务逻辑限制

问题:对于高度定制化的部署逻辑,Gemini可能无法一次性生成完美方案。

解决方案分阶段生成策略

第一阶段:生成基础框架 "生成Kubernetes蓝绿部署的基础GitHub Actions工作流" 第二阶段:添加具体逻辑 "在刚才生成的工作流基础上,添加以下特性: 1. 部署前的数据库迁移 2. 新版本的健康检查 3. 失败时的自动回滚" 第三阶段:优化和定制 "进一步优化: 1. 添加基于Prometheus指标的流量切换 2. 添加部署通知到Teams频道 3. 设置部署时间窗口(仅在工作时间)"
5.3 安全配置的严谨性

问题:AI生成的配置可能遗漏关键安全设置。

解决方案人工审查清单

  • [ ] 密钥是否硬编码
  • [ ] 权限是否遵循最小化原则
  • [ ] 是否启用漏洞扫描
  • [ ] 镜像签名和验证
  • [ ] 网络策略和访问控制

                通过三个月在实际项目中使用Gemini生成CI/CD脚本,我收集了以下效率数据:

任务类型

传统方式耗时

Gemini辅助耗时

效率提升

质量评估

基础流水线搭建

2-4小时

15-30分钟

85-90%

多环境部署配置

4-6小时

1-2小时

60-70%

安全策略集成

3-5小时

45-90分钟

70-75%

中(需人工复核)

复杂条件工作流

5-8小时

2-3小时

60-65%

中(需多次迭代)

错误调试与优化

1-3小时/次

10-30分钟/次

80-85%

注意:质量评估基于生成的脚本在首次运行时的成功率。复杂场景通常需要2-3次迭代优化。

        Gemini在CI/CD脚本生成方面的能力只是开始。未来的发展方向包括:

7.1 端到端基础设施编排
# 用户描述:创建一个完整的微服务基础设施 “”” 创建一个包含以下资源的AWS环境:

  1. VPC网络配置
  2. EKS Kubernetes集群
  3. RDS PostgreSQL数据库
  4. Redis缓存集群
  5. 应用负载均衡器
  6. CloudWatch监控和告警 使用Terraform实现,遵循**安全实践。 “””

Gemini可以生成完整的Terraform配置

包括资源定义、依赖关系、输出变量等

7.2 智能优化建议

        未来的AI系统不仅能生成脚本,还能:

  • 分析现有CI/CD流水线的性能瓶颈
  • 推荐优化策略(并行化、缓存优化、资源配置)
  • 预测流水线执行时间和成本
  • 自动修复常见反模式
7.3 跨平台迁移辅助

        当需要从一种CI/CD平台迁移到另一种时,Gemini可以:

  • 分析现有配置
  • 生成目标平台等效配置
  • 识别功能差异并提供解决方案
  • 创建迁移计划和验证脚本

        Gemini在CI/CD脚本生成方面的能力,代表了软件开发自动化的重要进展。但必须明确:AI不是要替代工程师,而是要增强工程师的能力

**实践建议

  1. 从简单开始:从单个任务或阶段开始尝试
  2. 逐步迭代:先生成框架,再逐步添加细节
  3. 严格审查:始终人工审查AI生成的配置,特别是安全相关部分
  4. 持续学习:关注CI/CD和AI领域的最新发展
  5. 分享经验:在团队中分享有效的提示词模式

记住的关键点

  • Gemini是强大的助手,但工程师的经验和判断不可替代
  • 生成的代码需要根据具体项目需求进行调整
  • 安全永远是第一优先级,AI生成的配置需要仔细审查
  • 保持对底层原理的理解,避免成为”只会用AI的工程师”

        随着AI技术的不断发展,我们正站在开发工具演进的新起点。拥抱这些变化,同时保持对技术本质的深入理解,将是这个时代工程师的核心竞争力。

资源推荐

  1. GitHub Actions 官方文档
  2. GitLab CI/CD **实践
  3. Google Cloud 的 Gemini API 文档
  4. CNCF CI/CD 白皮书

下一步行动

  1. 访问 Google AI Studio获取API密钥
  2. 从现有项目中选一个简单的CI/CD任务开始尝试
  3. 建立团队内部的提示词库和**实践文档
  4. 定期回顾和优化AI生成的CI/CD流水线

在AI的辅助下,我们可以将更多精力投入到架构设计、业务逻辑和创造性工作中,而将重复性的配置工作交给智能工具。这正是技术进步的真正意义所在。

小讯
上一篇 2026-04-16 17:43
下一篇 2026-04-16 17:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/262122.html