Skip to content

Commit

Permalink
通过持续集成自动生成openapi相关文件 (ZLMediaKit#3042)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexliyu7352 authored Nov 30, 2023
1 parent 34695ab commit 644a333
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 10 deletions.
20 changes: 18 additions & 2 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
name: Linux

on: [push, pull_request]

permissions:
contents: write
jobs:
build:

runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v3

- name: 下载submodule源码
run: mv -f .gitmodules_github .gitmodules && git submodule sync && git submodule update --init
Expand All @@ -33,4 +34,19 @@ jobs:
- name: 运行MediaServer
run: pwd && cd release/linux/Debug && sudo ./MediaServer -d &

- name: generate openapi
if: github.ref == 'refs/heads/master'
run: cd tools/openapi && python3 generates.py install-dependencies

- name: Commit and push if ./www/swagger/openapi.json changed
if: github.ref == 'refs/heads/master'
run: |
git diff --exit-code ./www/swagger/openapi.json || (
git config user.name alexliyu7352
git config user.email [email protected]
git add ./www/swagger/openapi.json
git commit -m "update openapi.json"
git push origin HEAD:master
)
34 changes: 26 additions & 8 deletions tools/openapi/generates.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,18 +43,26 @@ def run_cmd(cmd: str, assert_success=False, capture_output=False, env=None) -> b
return True


def check_dependencies() -> None:
def check_dependencies(need_install:bool = False) -> None:
"""
check dependencies
:return:
"""
if not check_installed("p2o"):
print()
print("p2o is not installed, please install it first!")
print("If you use npm, you can install it by the following command:")
print("npm install -g postman-to-openapi")
print()
sys.exit(1)
if not need_install:
print()
print("p2o is not installed, please install it first!")
print("If you use npm, you can install it by the following command:")
print("npm install -g postman-to-openapi")
print()
sys.exit(1)
else:
# 先检查是否安装了npm, 没有就自动安装
if not check_installed("npm"):
print("npm is not installed, install it first")
run_cmd("sudo apt install npm -y")
print("p2o is not installed, install it")
run_cmd("sudo npm install -g postman-to-openapi")
else:
print("p2o is installed")

Expand All @@ -70,6 +78,12 @@ def get_version() -> str:
elif os.path.isfile("../../cmake-build-release/version.h"):
print("Found version.h in cmake-build-release")
version_h_path = "../../cmake-build-release/version.h"
elif os.path.isfile("../../build/version.h"):
print("Found version.h in build")
version_h_path = "../../build/version.h"
elif os.path.isfile("../../linux_build/version.h"):
print("Found version.h in linux_build")
version_h_path = "../../linux_build/version.h"
else:
print("version.h not found")
print("Please compile first")
Expand Down Expand Up @@ -138,7 +152,11 @@ def generate() -> None:


if __name__ == "__main__":
check_dependencies()
# 如果有参数install-dependencies,则安装依赖
if len(sys.argv) > 1 and sys.argv[1] == "install-dependencies":
check_dependencies(True)
else:
check_dependencies()
version = get_version()
secret = get_secret()
update_options(version, secret)
Expand Down

0 comments on commit 644a333

Please sign in to comment.