温馨提示×

centos系统postman如何集成CI/CD

小樊
41
2025-10-10 23:05:15
栏目: 智能运维

一、前置准备:安装必要工具 在CentOS系统上集成Postman到CI/CD流程前,需先安装以下工具:

  1. 安装Node.js和npm:Newman(Postman命令行工具)依赖Node.js环境。通过YUM仓库安装:
    sudo yum install -y nodejs npm
    
  2. 安装Newman:使用npm全局安装Newman(Postman的CLI版本):
    sudo npm install -g newman
    
    验证安装:newman --version(显示版本号则表示安装成功)。
  3. 准备Postman测试资产:在Postman中创建API测试集合(包含请求、测试脚本,如检查状态码pm.test("Status code is 200", () => pm.response.to.have.status(200))),并导出为JSON文件(如api-collection.json);若有环境变量(如API基础URL),导出为环境文件(如environment.json)。

二、编写自动化测试脚本 创建Shell脚本(如run_postman_tests.sh),封装Newman命令以实现自动化运行:

#!/bin/bash
# 设置集合与环境文件路径
COLLECTION_PATH="/path/to/api-collection.json"
ENV_PATH="/path/to/environment.json"
REPORT_PATH="/path/to/report.html"

# 运行Newman并生成HTML报告(便于查看结果)
newman run "$COLLECTION_PATH" -e "$ENV_PATH" --reporters cli,html --reporter-html-export "$REPORT_PATH"

# 检查测试结果,若失败则退出脚本并返回非0状态码(供CI/CD工具判断)
if [ $? -ne 0 ]; then
  echo "Postman测试失败!"
  exit 1
else
  echo "Postman测试通过!"
fi

赋予脚本执行权限:chmod +x run_postman_tests.sh

三、集成到Jenkins CI/CD流程 Jenkins是CentOS上常用的CI/CD工具,通过Pipeline实现Postman测试自动化:

  1. 安装Jenkins:在CentOS上安装Jenkins(参考官方文档),并启动服务。
  2. 创建Pipeline Job
    • 新建Item → 选择“Pipeline” → 输入Job名称(如“Postman-Tests”)。
    • 在“Pipeline”配置中,选择“Pipeline script from SCM”(从代码仓库获取脚本),SCM类型选“Git”,填写仓库URL(如GitHub或GitLab地址)。
  3. 编写Jenkinsfile:在代码仓库根目录创建Jenkinsfile,定义Pipeline步骤(以Declarative Pipeline为例):
    pipeline {
      agent any
      stages {
        stage('Checkout Code') {
          steps {
            git branch: 'main', url: 'https://github.com/your-repo.git' // 替换为你的仓库URL
          }
        }
        stage('Run Postman Tests') {
          steps {
            sh './run_postman_tests.sh' // 执行Shell脚本
          }
        }
      }
      post {
        always {
          // 发布测试报告(若生成HTML报告)
          publishHTML(target: [
            allowMissing: false,
            alwaysLinkToLastBuild: true,
            keepAll: true,
            reportDir: '/path/to/report', // 报告生成目录
            reportFiles: 'report.html',
            reportName: 'Postman Test Report'
          ])
          // 发送邮件通知(可选)
          emailext body: 'Postman测试已完成,请查看报告。', subject: 'Postman测试结果', to: 'dev-team@example.com'
        }
      }
    }
    
  4. 触发Pipeline:推送代码到仓库的main分支(或根据配置的触发条件),Jenkins会自动拉取代码并执行Pipeline,运行Postman测试。

四、集成到GitHub Actions CI/CD流程 若代码托管在GitHub,可使用GitHub Actions实现更轻量的集成:

  1. 创建GitHub Secrets:在仓库Settings → Secrets and variables → Actions → New repository secret,添加以下Secrets:
    • POSTMAN_API_KEY:Postman账户的API Key(用于Postman CLI登录,可在Postman账户设置中生成)。
  2. 创建Workflow文件:在仓库根目录创建.github/workflows/postman.yml,定义工作流步骤:
    name: Run Postman Tests
    on:
      push:
        branches: [main] # 当main分支有推送时触发
      pull_request:
        branches: [main] # 当main分支有拉取请求时触发
    jobs:
      run-tests:
        runs-on: ubuntu-latest # 使用Ubuntu runner(兼容CentOS环境的工具链)
        steps:
          # 检出代码
          - name: Checkout code
            uses: actions/checkout@v3
          # 安装Newman
          - name: Install Newman
            run: npm install -g newman
          # 登录Postman CLI(使用Secrets中的API Key)
          - name: Login to Postman CLI
            run: postman login --with-api-key "${{ secrets.POSTMAN_API_KEY }}"
          # 运行Postman集合(通过Postman Cloud ID,需提前将集合发布到Postman Cloud)
          - name: Run Postman Collection
            run: postman collection run "your-collection-id" --environment "your-environment-id" --reporters cli,junit --reporter-junit-export report.xml
          # 上传测试报告(作为Artifact,可在GitHub Actions页面查看)
          - name: Upload Test Report
            uses: actions/upload-artifact@v3
            with:
              name: postman-test-report
              path: report.xml
    
  3. 触发Workflow:推送代码到main分支或创建拉取请求,GitHub Actions会自动运行工作流,执行Postman测试并上传报告。

五、关键注意事项

  • 环境变量管理:测试集合中的环境变量(如API基础URL、认证Token)应通过环境文件(environment.json)或Postman CLI参数传递,避免硬编码。
  • 报告生成:建议生成HTML或JUnit格式的报告(如--reporters html--reporter-junit-export),便于CI/CD工具展示结果(如Jenkins的HTML Publisher插件、GitHub Actions的Artifact)。
  • 权限配置:确保Jenkins或GitHub Actions有权限访问代码仓库、Postman Cloud(若使用CLI登录)及报告存储路径。
  • 触发条件:根据需求设置触发条件(如pushpull_request),避免不必要的测试执行。

0