swagger和gitlab結合做API文檔

使用docker技術,將gitlab和swagger做一個有機的結合,達到的效果爲:每次提交代碼,都會自動生成swagger API文檔。

以下是實現流程步驟:

這裏寫圖片描述

代碼和目錄結構

docker-compose.yml文件書寫

swagger_ui:
  image: swaggerapi/swagger-ui:latest
  container_name: swagger_ui
  ports:
    - "8080:8080"
  volumes:
    - ./swagger:/usr/share/nginx/html/swagger
swagger_validator:
  image: swaggerapi/swagger-validator:latest
  container_name: swagger_validator
  ports:
    - "8088:8080"
gitlab_ce:
  image: gitlab/gitlab-ce:latest
  container_name: gitlab_ce
  hostname: gitlab_ce
  ports:
    - "8090:80"
    - "8091:443"
    - "22:22"
  volumes:
    - ./gitlab/config:/etc/gitlab
    - ./gitlab/data:/var/opt/gitlab
    - ./gitlab/logs:/var/log/gitlab
gitlab_runner:
  image: gitlab/gitlab-runner:latest
  container_name: gitlab-runner
  links:
    - gitlab_ce
  ports:
    - "8099:80"
  volumes:
    - ./gitlab/gitlab-runner/config:/etc/gitlab-runner
    - /var/run/docker.sock:/var/run/docker.sock
    - ./swagger:/tmp

目錄結構:

這裏寫圖片描述

swagger-php

這是一個通過寫API註釋,生成swagger-json的小工具。
詳情:http://zircote.com/swagger-php/
github地址:https://github.com/zircote/swagger-php

下載方法:

composer require zircote/swagger-php

使用方法:

使用composer下載後,運行指令:

./vendor/bin/swagger -o 目標路徑  代碼註釋路徑

gitlab-ce和gitlab-runner

這倆東西是密切相關的倆東西。
gitlab-ce和gitlab-runner的關係如下圖所示:

這裏寫圖片描述
默認情況下,gitlab和gitlab-ci是在一起的。現在只需連接gitlab(或者gitlab-ce)和gitlab-ci就好。

gitlab-ce 和 gitlab-runner 結合

首先按照上圖所示的內容,寫好docker-compose.yml 文件,建好目錄,然後運行:docker-compose up -d
幾個容器跑起來後,開始連接gitlab-ce和gitlab-runner兩個容器。

gitlab-ce和gitlab-runner連接方式很簡單:

  • 網頁打開gitlab-ce的地址(此處爲:localhost:8090)

    這裏寫圖片描述
    特別注意地址和token,下一步驟用到

  • 進入到gitlab-runner容器,輸入如下指令:
$ gitlab-runner register

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
## 輸入你的gitlab地址(以上的地址)  
Please enter the gitlab-ci token for this runner
## gitlab的token(在gitlab的Admin Area中) 或者倉庫的token(倉庫->設置->Runner),就是上圖標註的token
Please enter the gitlab-ci description for this runner
## Runner描述信息
Please enter the gitlab-ci tags for this runner (comma separated):
## Runner的標籤 可以指定倉庫 只使用固定標籤的Runner構建
Please enter the executor: parallels, shell, ssh, virtualbox, docker+machine, docker-ssh+machine, docker, docker-ssh, kubernetes:
## 這裏我們選擇shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

gitlab-runner實際上就是代碼需要運行的環境,在此,我們只需要安裝php7就好。

CI所需要的執行腳本書寫

在所要提交的代碼中加上.gitlab-ci.yml文件,此文件的作用就是制定CI在運行中的步驟,例如,先執行生成API文檔,然後跑unit test,然後跑….等等流程性的東西,在此,我們暫時只需要生成API文檔就好。

stages:
  - build
swagger:
  stage: build
  script:
    - bash ./swagger.sh
    - mv swagger.json /tmp/

以上可以說配置基本結束了。需要在gitlab上創建項目並運行起來。

swagger套裝組件

swagger組件有不少,ui、validator、editor、code-gen等等,在此只用到swagger-ui和swagger-validator這倆。(想用什麼隨時加)

修改swagger-ui默認首頁

打開swagger-ui的容器,把swagger-ui的默認首頁修改一下。(默認是http://petstore.swagger.io/v2/swagger.json,不改也可以)

打開容器中的/usr/share/nginx/html/index.html文件,將如下信息修改:
這裏寫圖片描述
改爲生成的swagger文件地址。(在此爲:localhost:8080/swagger/swagger.json)

使用swagger-validator驗證生成的josn是否正確

這一步,最好是能在CI中做,如果驗證不正確CI直接過不了,但是,swagger套裝好像只提供了在線手工驗證的方式。可以在找找有無其他工具。
使用方法:

http://host:port?url=swagger.json的地址

好了,現在根據swagger-php的文檔,寫一些註釋看一下吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章