Ubuntu 下 Swagger OpenAPI 持续集成方案
一 总体流程与工具选型
二 快速落地示例
示例一 静态站点 + GitLab CI
stages:
- build
- deploy
variables:
OPENAPI_GENERATOR_VERSION: "7.10.0"
build-docs:
stage: build
image: node:18
script:
- npm i -g @openapitools/openapi-generator-cli@$OPENAPI_GENERATOR_VERSION
- openapi-generator-cli generate -i openapi.yaml -g html -o public/docs
artifacts:
paths:
- public/docs
deploy-pages:
stage: deploy
image: alpine
needs: [build-docs]
script:
- mkdir -p /public
- cp -r public/docs /public
pages:
path_prefix: /docs
示例二 Spring Boot 运行时文档 + Jenkins
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.8.0</version>
</dependency>
pipeline {
agent any
stages {
stage('Build') {
steps { sh 'mvn -B package -DskipTests' }
}
stage('Test') {
steps { sh 'mvn test' }
}
stage('Deploy') {
steps {
sh '''
docker build -t myapi:$BUILD_NUMBER .
docker stop myapi || true
docker rm myapi || true
docker run -d --name myapi -p 8080:8080 myapi:$BUILD_NUMBER
'''
}
}
}
}
三 规范校验与自动化测试
openapi-generator-cli validate -i openapi.yaml
pip install schemathesis
schemathesis run openapi.yaml --base-url http://localhost:8080
四 部署与发布策略
docker run -d -p 38081:8080 \
-e SWAGGER_JSON=/spec/openapi.yaml \
-v $PWD/openapi.yaml:/spec/openapi.yaml \
swaggerapi/swagger-ui:latest