공유 Django 응용 프로그램에 의미 버전 제어를 사용하는 방법
Django를 사용하여 웹 사이트를 구축할 때 소프트웨어 버전을 추적할 필요가 없습니다.Git 저장소에 안정적인 분기만 있으면 언제든지 운영 환경을 업데이트할 수 있습니다.그러나 Django 응용 프로그램이나 패키지를 만들고 여러 사이트에서 공유하면 여러 사람과 공유할 수 있을 때 패키지의 버전을 추적하는 것이 중요하다.
좋은 점
버전 제어를 통해 패키지의 특정 상태를 식별할 수 있으며 다음과 같은 이점이 있습니다.
의미 버전 제어
가장 유행하는 버전 제어 방안은 semantic versioning이다.이 판본은 점으로 구분된 세 개의 숫자로 구성되어 있다.Django 프레임워크도 사용하고 있습니다.예를 들어 본문을 작성할 때 가장 최근의 안정적인 버전은
3.2.9
이다.의미 버전 제어에서 첫 번째 숫자는 주요 버전이고 두 번째 버전은 부차적인 버전이며 세 번째 버전은 패치 버전이다:MAJOR.MINOR.PATCH
.MAJOR
버전은 이전 버전과 호환되지 않는 기능을 도입했다.MINOR
버전은 이전 버전과 호환되는 기능을 추가했습니다.PATCH
버전은 이전 버전과 호환되는 버그 복구에 사용됩니다.alpha
,beta
,발표 후보rc1
,rc2
등에도 일부 버전 제어 이상값이 존재할 수 있지만 본고에서 소개하지 않겠습니다.소프트웨어 패키지의 버전은
myapp/__init__.py
변수로 __version__
파일에 저장됩니다. 예를 들어:__version__ = "0.2.4"
또한 setup.py
, README.md
, CHANGELOG.md
및 더 많은 파일에 저장됩니다.변경 로그
Django 응용 프로그램이나 다른 Python 패키지를 개발하여 다른 개발자와 공유할 때 changelog 를 사용하는 것을 권장합니다.일반적으로 패키지의 특정 버전 사이에 사용된 기능, 오류, 추천하지 않음을 보여 주는 가격 인하 기반 문서입니다.
좋은 변경 로그는 '미발표' 부분에서 시작하고, 그 다음은 각 버전의 부분으로, 순서가 상반된다.각 장에는 범주별로 그룹화된 변경 목록이 있습니다.
CHANGELOG.md
의 시작 템플릿일 수 있습니다.Changelog
=========
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
[Unreleased]
------------
<!--
### Added
### Changed
### Deprecated
### Removed
### Fixed
### Security
-->
새 버전이 발표되면 Unreleased
부분을 대체하고 그 위에 새로운 Unreleased
부분을 만들 것이다.예를 들면 다음과 같습니다.[Unreleased]
------------
### Added
- Logging the cookie consent choices in the database because of the legal requirements.
### Fixed
- Disabling the buttons while saving the Cookie Choices so that they are not triggered more than once with slow Internet connections.
이렇게 됩니다.[Unreleased]
------------
[v0.2.0] - 2021-10-27
------------------
### Added
- Logging the cookie consent choices in the database because of the legal requirements.
### Fixed
- Disabling the buttons while saving the Cookie Choices so that they are not triggered more than once with slow Internet connections.
수동으로 버전을 추적하는 것은 상당히 지루한 작업이며, 파일이나 버전 번호가 일치하지 않는 것을 잊어버릴 수도 있다.이 점을 해낼 수 있는 실용적인 도구가 있어서 기쁘다. bump2version
라고 한다.bump2version 사용
장치
pip의 표준 방법을 사용하여 bump2version 유틸리티를 가상 환경에 설치합니다.
(env)$ pip install bump2version
준비 작업
패키지의
__init__.py
파일에서 버전 설정0.0.0
:__version__ = "0.0.0"
다른 언급해야 할 모든 파일에서 버전을 0.0.0
, 예를 들어 README.md
와 setup.py
로 설정합니다.그런 다음 를 사용하여 생성
setup.cfg
합니다.[bumpversion]
current_version = 0.0.0
commit = True
tag = True
[bumpversion:file:setup.py]
search = version="{current_version}"
replace = version="{new_version}"
[bumpversion:file:myapp/__init__.py]
search = __version__ = "{current_version}"
replace = __version__ = "{new_version}"
[bumpversion:file:README.md]
search = django_myapp-{current_version}-py2.py3-none-any.whl
replace = django_myapp-{new_version}-py2.py3-none-any.whl
[bumpversion:file:CHANGELOG.md]
search =
[Unreleased]
------------
replace =
[Unreleased]
------------
[v{new_version}] - {utcnow:%%Y-%%m-%%d}
------------------
[bdist_wheel]
universal = 1
"django 앱으로"django my app"과"my app"를 교체하세요.더 많은 파일이 있으면 패키지 버전을 언급하십시오. setup.cfg
에서 비슷한 버전이 바뀌었는지 확인하십시오.변경 사항을 커밋하여 Git 저장소로 밀어넣습니다.
사용법
새 버전을 만들 때마다 셸에 다음을 입력합니다.
$ bump2version patch
또는$ bump2version minor
또는$ bump2version major
그런 다음 패키지를 생성하는 명령입니다.$ python3 setup.py sdist bdist_wheel
앞에서 말한 바와 같이 patch
는 오류를 복구하는 데 사용되고 minor
는 뒤로 호환되지 않는 변경에 사용되며 major
는 뒤로 호환되지 않는 변경에 사용된다.bump2version
명령은 setup.cfg
의 구성을 사용하고 다음을 수행합니다.setup.py
, myapp/__init__.py
및 README.md
의 새 버전으로 교체됩니다.CHANGELOG.md
의 정확한 버전 제어를 책임진다.vMAJOR.MINOR.PATCH
에 따라 표시를 만듭니다.자세한 내용
주의해야 할 두 가지가 있다.
우선 가격 인하에는 두 가지 방법으로 제목을 설정할 수 있습니다.
Changelog
=========
[Unreleased]
------------
과 동일# Changelog
## [Unreleased]
일반적으로 나는 두 번째 형식으로 표시하지만 setup.cfg
의 대체 함수는 #
기호가 있는 줄을 주석으로 간주하고 전의도 작용하지 않는다.예를 들어 이것은 통하지 않는다.
[bumpversion:file:CHANGELOG.md]
search =
## [Unreleased]
replace =
## [Unreleased]
## [v{new_version}] - {utcnow:%%Y-%%m-%%d}
만약 누군가가 간단한 해결 방안을 알고 있거나 찾았을 뿐만 아니라, 가격 인하 폭도 더욱 짧다면, 저에게 알려 주십시오.그 다음으로
setup.cfg
대신 .bumpversion.cfg
파일을 사용할 수 있지만 이 파일은 숨겨져 있기 때문에 꾸준히 사용하시기를 권장합니다setup.cfg
.마지막 말
최근에 Gumroad에서 발표한 비용 지불 Django GDPR Cookie Consent 프로그램에서 이런 종류의 의미 버전 제어 설정을 볼 수 있습니다.
즐거운 프로그래밍!
표지 사진 작성자Jacob Campbell
Reference
이 문제에 관하여(공유 Django 응용 프로그램에 의미 버전 제어를 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/djangotricks/how-to-use-semantic-versioning-for-shared-django-apps-49kc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)