在Linux系统中,需提前安装以下工具以支持Swagger自动化部署:
apt
安装OpenJDK 11:sudo apt update && sudo apt install -y openjdk-11-jdk
sudo apt install -y maven
sudo apt install -y docker.io sudo systemctl start docker
OpenAPI规范(swagger.yaml
或openapi.json
)是自动化部署的核心,需明确定义API的路径、参数、请求/响应格式。示例如下:
openapi: 3.0.0 info: title: User API version: 1.0.0 paths: /users: get: summary: 获取用户列表 responses: '200': description: 成功返回用户列表 content: application/json: schema: type: array items: $ref: '#/components/schemas/User' components: schemas: User: type: object properties: id: type: integer name: type: string
通过Swagger注解或依赖自动生成文档:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.1.0</version> </dependency>
SwaggerConfig
类自定义文档入口(默认访问/swagger-ui.html
):import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SwaggerConfig { @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info().title("User API").version("1.0")); } }
通过Jenkins实现代码提交→构建→测试→部署的自动化流程:
Pipeline
项目,编写Jenkinsfile
定义流程:pipeline { agent any stages { stage('Checkout') { steps { checkout scm } // 从Git拉取代码 } stage('Build') { steps { sh 'mvn clean package' } // 构建项目 } stage('Generate Docs') { steps { sh 'mvn springdoc:generate' } // 生成OpenAPI文档 } stage('Deploy Docs') { steps { // 将生成的文档(target/generated-docs)部署到Nginx服务器 sh 'scp -r target/generated-docs user@nginx-server:/var/www/html/swagger' } } } }
通过自动化测试验证API的正确性,确保文档与实现一致:
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.web.servlet.MockMvc; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @SpringBootTest @AutoConfigureMockMvc class UserApiTest { @Autowired private MockMvc mockMvc; @Test void testGetUsers() throws Exception { mockMvc.perform(get("/users")) .andExpect(status().isOk()) .andExpect(jsonPath("$.length()").value(2)); // 验证返回用户数量 } }
将Swagger UI部署到Web服务器(如Nginx),方便访问:
docker run -d -p 8080:8080 -v /path/to/your/swagger.yaml:/swagger.yaml swaggerapi/swagger-ui
访问http://your-server-ip:8080
即可查看文档(需将/swagger.yaml
挂载到容器内)。dist
目录:wget https://github.com/swagger-api/swagger-ui/archive/v4.15.5.tar.gz tar -xzf v4.15.5.tar.gz mv swagger-ui-4.15.5/dist /var/www/html/swagger-ui
修改Nginx配置(/etc/nginx/sites-available/default
),添加代理:location /swagger-ui { alias /var/www/html/swagger-ui; index index.html; }
重启Nginx后,访问http://your-server-ip/swagger-ui
,在URL栏输入Swagger规范文件地址(如/api/swagger.yaml
)即可查看文档。通过Jenkins的通知插件(如Email、Slack)发送构建结果,或集成Prometheus+Grafana监控API性能,确保自动化部署的稳定性。
通过以上步骤,可实现Linux环境下Swagger API接口的全流程自动化部署,提升开发效率并保证文档与代码的一致性。