콘텐츠로 이동

릴리스 내기

전문가

테스트를 마친 빌드를 릴리스로 만듭니다. 이 페이지는 메인테이너를 위한 것입니다.

시작하기 전에

시작하기 전에 링크
  • 테스트의 모든 검사가 통과합니다. 엔드투엔드 전체 실행과 긴 실행, 장애 실행도 포함합니다.
  • CHANGELOG.md에 새 버전이 들어 있습니다.
  • 릴리스 스크립트를 위한 Python 3가 설치되어 있습니다.

릴리스 준비하기

릴리스 준비하기 링크
  1. releases/notes-<version>.toml을 작성하세요. 예: releases/notes-1.0.0.toml. 릴리스 노트 파일을 참고하세요.

  2. 파일을 검사하세요:

    Terminal window
    python deploy/release/notes.py 1.0.0 --check

    오류가 없어야 합니다. 금지된 단어, 엠 대시, 날짜, 출시 관련 표현, 중복된 하이라이트 이슈가 있으면 1로 종료됩니다.

  3. 릴리스 문서를 빌드하세요:

    Terminal window
    python deploy/release/notes.py 1.0.0

    releases/out/1.0.0/에 파일 7개가 생깁니다.

  4. 이미지를 빌드하고 새 설정 폴더로 시작하세요:

    Terminal window
    docker build --file deploy/Dockerfile .

    첫 실행 마법사가 표시됩니다.

  5. 테스트의 모든 검사를 자신의 컴퓨터에서 실행하세요. 테스트는 GitHub가 아니라 로컬에서 실행합니다.

  6. 버전을 메인테이너에게 넘기세요. 메인테이너가 main에 버전 태그를 푸시하면 릴리스가 시작됩니다.

버전과 태그 이름

버전과 태그 이름 링크
대상 이름
Git 태그(메인테이너가 푸시) 1.0.0(숫자만, v 없음)
이미지 태그와 노트의 version 1.0.0

워크플로는 X.Y.Z 태그에만 시작되고, 태그가 VERSION 파일과 다르면 멈춥니다.

이미지 태그

이미지 태그 링크

릴리스마다 자신의 버전 태그와 :latest를 푸시합니다.

릴리스 철회하기

릴리스 철회하기 링크
  1. 수정이 들어간 다음 버전을 푸시하세요.
  2. 설치된 앱이 문제 버전을 제안하지 않도록 업데이트 목록에서 그 버전을 표시하세요.
  3. 태그는 그대로 두세요.

문제가 생기면

문제가 생기면 링크

증상. notes.py --check가 1로 종료됩니다. 원인. 노트 파일이 규칙을 어겼습니다. 메시지에 해당 줄이 나옵니다. 해결. releases/out의 파일이 아니라 노트 파일을 고치고 다시 실행하세요.

증상. 워크플로가 VERSION says와 함께 멈춥니다. 원인. 태그와 VERSION 파일이 다릅니다. 해결. main에서 VERSION을 고치고 다음 버전 태그를 푸시하세요.

릴리스 노트 파일

모든 릴리스 문서는 파일 하나에서 나옵니다. 그 파일로 만들어진 결과물은 절대 손으로 고치지 마세요.

필드 내용
version 숫자만 쓴 X.Y.Z
theme 한 줄
images {registry, name} 목록. Docker Hub holyarrs/holyarrs만
docs_url 선택 사항. 비어 있으면 Docs 링크가 없습니다
[[highlights]] 정확히 3개. 각각 line, issues, shot이 있습니다. 여기에 쓴 이슈는 그룹 줄에 나오지 않습니다
[groups] 영역별 줄. 기본은 New입니다. 나머지는 Changed: , Fixed: , Docs: 로 시작합니다. 각 줄은 (#46)처럼 이슈로 끝납니다. 줄이 3개 미만인 영역은 Also new 아래로 들어갑니다
선택 사항 [before_you_update](breaking, manual_steps, backup, rollback), security, known_issues, credits, [stats]. 비어 있는 부분은 숨겨집니다

GitHub 로그인은 노트 파일이나 releases/credits-map.json에서 확인된 경우에만 쓰세요.

본문 순서: theme, Highlights, 영역(Requests, Library, Downloads, Indexers, Accounts, Health, Setup, Install), Also new, Security, Known issues, Before you update, Image, Thanks, 통계 줄.

releases/out/<version>/의 출력 용도
changelog.md 변경 기록 항목
github.md GitHub 릴리스 본문
update-notes.json 앱이 보여 주는 노트
reddit.txt Reddit 게시물
discord-dm.txt, discord-announce.md Discord. 각각 1,000자 미만으로 유지됩니다
roadmap-card.json 로드맵 카드

notes.py는 --file(다른 노트 파일), --map(다른 크레딧 맵), --out(다른 출력 폴더), --date를 받습니다. --check는 긴 줄과 거의 같은 반복에 경고를 냅니다.

이미지 워크플로

HolyArrs - Release 워크플로는 버전 태그가 푸시되면 시작됩니다. 세 단계로 이루어집니다:

  1. linux/amd64, linux/arm64, linux/arm/v7용 이미지를 빌드하고 버전 태그와 latest로 푸시합니다.
  2. README.md로 Docker Hub 설명을 업데이트합니다.
  3. 이 버전의 CHANGELOG.md 섹션으로 GitHub 릴리스를 게시합니다.
업데이트 목록

앱은 서명된 업데이트 목록을 읽습니다. 릴리스마다 자신의 항목을 추가하고 서명합니다. 서명 키는 절대 저장소에 넣지 않습니다. HolyArrs는 검증할 수 없는 목록을 거부합니다.

릴리스 후에는 이미지의 버전 레이블이 태그와 일치하는지 확인하고, 첫날 동안 새 이슈를 지켜보세요:

Terminal window
docker inspect --format '{{ index .Config.Labels "org.opencontainers.image.version" }}' holyarrs
Unraid 테스트 템플릿

deploy/release/nas-template.py는 정확히 지정한 이미지 하나에 대한 Unraid 사용자 템플릿을 씁니다. 아무것도 내려받거나 설치하거나 게시하지 않습니다.

Terminal window
python deploy/release/nas-template.py --image 'holyarrs/holyarrs@sha256:<digest>' --config '/mnt/<pool>/appdata/holyarrs-test' --movies /mnt/user/holyarrs-test-data/movies --downloads /mnt/user/holyarrs-test-data/downloads --port 6262 --output holyarrs-test.xml

<digest>와 <pool>을 바꾸세요.

플래그 참고
--image Docker 이미지 ID가 아니라 레지스트리 매니페스트 다이제스트
--config 풀 경로. 이 도구는 /mnt/user와 /mnt/user0을 거부합니다
--movies, --tv, --music, --downloads 선택 사항. 경로가 따로면 마운트도 따로이므로 가져올 때 복사됩니다
--port 기본값은 6262
--allowed-hosts 선택 사항. 쉼표로 구분한 호스트 이름
--output 기록할 XML 파일

템플릿은 PUID=99, PGID=100, UMASK=022를 설정합니다. 그 계정에 테스트 미디어에 대한 쓰기 권한을 주세요. 파일을 /boot/config/plugins/dockerMan/templates-user/에 넣고 Docker > Add Container > Template(Docker > 컨테이너 추가 > 템플릿)에서 고르세요.

HolyArrs는 무료입니다. 시간을 아끼는 데 도움이 됐다면 GitHub에서 스타를 누르거나, 후원하거나, 커피 한 잔을 사 주세요.