將Swagger API文檔集成到CI/CD流程中,可以確保在代碼提交后自動生成API文檔,并在每次構建和部署時更新這些文檔。以下是一個基本的步驟指南,適用于大多數Linux環境下的Java或Spring Boot項目。
如果你使用的是Spring Boot項目,可以使用SpringDoc來生成Swagger文檔。首先,從pom.xml
中移除springfox
或swagger
的依賴,并添加springdoc-openapi-ui
依賴:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.14</version>
</dependency>
然后,在Spring Boot應用的主類上添加@EnableSwagger2WebMvc
注解:
import org.springdoc.core.SwaggerUiOAuthProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
@Configuration
@EnableSwagger2WebMvc
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo"))
.paths(PathSelectors.any())
.build()
.securitySchemes(Collections.singletonList(apiKey()))
.securityContexts(Collections.singletonList(securityContext()));
}
private ApiKey apiKey() {
return new ApiKey("JWT", "Authorization", "header");
}
private SecurityContext securityContext() {
return SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(PathSelectors.any())
.build();
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Collections.singletonList(new SecurityReference("JWT", authorizationScopes));
}
}
如果你使用的是Go語言項目,可以使用go-swagger工具來生成Swagger文檔。首先,安裝go-swagger工具:
go install github.com/swaggo/swag/cmd/swag@latest
然后在項目根目錄下運行以下命令生成文檔:
swag init
Docker
, Pipeline
, Swagger
等。pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean install'
}
}
stage('Generate Docs') {
steps {
sh 'swag init'
}
}
stage('Deploy') {
steps {
// 部署到測試環境或生產環境
}
}
}
}
.drone.yml
文件,定義CI/CD流程。例如:kind: pipeline
type: docker
name: api-docs
steps:
- name: build
image: maven:3.8.3-open
pull: if-not-exists
volumes:
- name: maven_cache
host: /root/.m2
commands:
- mvn clean package
- name: deploy
image: appleboy/drone-ssh
settings:
host: 172.17.0.1
username: root
password: xxxxx
port: 22
script:
- cd /opt/beiming-talk/backend
- docker build -t my-api-docs .
- docker push my-api-docs
在CI/CD流程中,確保在生成API文檔后執行自動化測試和部署。例如,使用Jenkins或Drone在生成文檔后執行單元測試和集成測試。
配置監控工具(如Prometheus、Grafana)對生產環境進行實時監控,并將監控數據反饋給開發團隊和運維團隊,以便及時處理問題。
通過以上步驟,你可以將Swagger API文檔集成到Linux環境下的CI/CD流程中,確保API文檔在每次構建和部署時自動更新,從而提高開發效率和軟件質量。