Visual Studio Code 확장의 패키징 자동화

Visual Studio Code 확장AngularTools으로 작업하는 동안 배포 단계 중 하나를 번거롭게 잊었습니다.

복잡한 작업 세트는 아니지만 새 버전을 패키징할 때 해야 할 일 목록에서 다음을 수행해야 합니다.
  • package.json의 버전 번호가 업데이트되었는지 확인합니다.
  • CHANGELOG.md 파일이 버그 수정 및 새로운 기능에 대한 설명으로 업데이트되었는지 확인합니다.
  • Git 저장소에서 버전에 대한 태그를 생성합니다.
  • vsce package를 실행하여 vsix 패키지 파일을 만듭니다.

  • 그래서 아래의 파이썬 스크립트로 작업을 자동화했습니다.

    import os
    import json
    import re
    from git import Repo, TagReference
    
    def readVersionFromPackageJson():
      packageJson = open("package.json", "r")
      contentRaw = packageJson.read()
      contentJson = json.loads(contentRaw)
      packageJson.close()
      return contentJson["version"]
    
    def isPackageJsonVersionTagged(repo, packageJsonVersion):
      packageJsonVersionTagFound = False
      for tag in repo.tags:
        if tag.name == packageJsonVersion:
          packageJsonVersionTagFound = True
          break
      return packageJsonVersionTagFound
    
    def isChangeLogUpdatedWithPackageJsonVersion(packageJsonVersion):
      packageJsonVersionChangeLogEntryFound = False
      changeLog = open("CHANGELOG.md", "r")
      changeLogContent = changeLog.readlines()
      changeLog.close()
      for line in changeLogContent:
        match = re.search(f"^## Version {packageJsonVersion}$", line)
        if match:
          packageJsonVersionChangeLogEntryFound = True
          break
      return packageJsonVersionChangeLogEntryFound
    
    def packageExtension():
      os.system("vsce package")
    
    def main():
      packageJsonVersion = readVersionFromPackageJson()
      repo = Repo("./")
      packageJsonVersionTagFound = isPackageJsonVersionTagged(repo, packageJsonVersion)
      packageJsonVersionChangeLogEntryFound = isChangeLogUpdatedWithPackageJsonVersion(packageJsonVersion)
    
      if not packageJsonVersionChangeLogEntryFound:
        print("Fail: CHANGELOG.md not update!")
      else:
        if not packageJsonVersionTagFound:
          print(f"New version found in package.json: {packageJsonVersion}.")
          print("Creating tag in Git...")
          repo.create_tag(packageJsonVersion)
          print("Creating vsix package...")
          packageExtension()
        else:
          print(f"Fail: Version already tagged: {packageJsonVersion}.")
          print("No vsix package created")
    
    main()
    
    


    유용하거나 지루하거나 성가신 작업을 자동화하는 데 영감을 주기를 바랍니다.

    AngularTools on GitHub 에 대한 스크립트와 코드를 찾을 수 있습니다.

    좋은 웹페이지 즐겨찾기