레이블이 version인 게시물을 표시합니다. 모든 게시물 표시
레이블이 version인 게시물을 표시합니다. 모든 게시물 표시

automated version pull request

js package.json 이나 rust cargo.toml 등에 소스파일에 version 을 명시하는 언어가 있다.
참고로 golang 소스파일에 버전을 명시하지 않는것이 관례라고 한다.
기능 개발을 하고 버전 태깅전에 별도로 소스 버전(package.json 등)수정하기 위해 브랜치 체크아웃 > commit > push > pr > merge 과정을 거쳐야하는데 불편하다.

[해결방법]
메인 브랜치에 커밋이 쌓이면 도구가 자동으로 release pr 을 생성한다.
(주의) 커밋 메시지는 conventional-commits(https://www.conventionalcommits.org)이 아니면 파싱이 실패하고 release pr 이 생성이 안된다.

1. git tag에서 최신 버전 확인 (예: v1.2.3)
2. 그 tag 이후의 conventional-commits를 분석해 버전 자동 결정
- fix: v1.2.4 (patch)
- feat: v1.3.0 (minor)
- feat!: / BREAKING CHANGE v2.0.0 (major)
3. release pr 생성(package.json 버전 업데이트 + CHANGELOG.md 작성 포함)

.github/workflows/release-please.yml 에 다음과 같이 사용
on:
  push:
    branches:
      - main

permissions:
  contents: write
  pull-requests: write

jobs:
  release-please:
    runs-on: ubuntu-latest
    steps:
      - uses: googleapis/release-please-action@v4
        with:
          # 프로젝트의 언어 타입을 지정 (node, rust, go, python 등)
          release-type: node

github action 을 사용할 수 없는 환경이라면 다음과 같이 cli 로 실행하면 된다.
# bunx: npm 레지스트리에서 패키지를 임시 다운로드 후 바로 실행하는 기능입니다.(npx와 동일)
# --release-type : 프로젝트의 언어 타입을 지정 (node, rust, go, python 등)
# --api-url : 기업 github 사용시 별도 설정 필요
# --graphql-url : 기업 github 사용시 별도 설정 필요
bunx release-please release-pr \
    --repo-url=ysoftman/aaa \
    --target-branch=main \
    --release-type=node \
    --token="$GITHUB_TOKEN"

[참고]
이건 rust 전용으로 머지된 커밋을 확인하여 어떤 crate가 변경되었는지 분석해서 cargo.toml의 버전을 업데이트하고 의존성 버전을 맞춘 pr 을 생성한다.
머지 시 crates.io 배포까지 할 수 있다.

이건 개발자가 태그 생성하면 자동으로 빌드 및 파일 업로드해준다.

mac install in progress

맥 shutdown시 "install in progress" 프로세스로 종료가 되지 않는다.
activity moniter.app > install in progress > open files and ports 를 보면 다음과 같이 파일을 붙잡고 있다.

프로세스를 종료해도 다시 생긴다.
찾아보니 macOS 업데이트 종료되지 않아서라고 하고 다음과 같이 확인하면 macOS 업데이트가 있다.
sudo softwareupdate --list

Software Update Tool

Finding available software
Software Update found the following new or updated software:
* Label: macOS Tahoe 26.2-25C56
        Title: macOS Tahoe 26.2, Version: 26.2, Size: 8111826KiB,

macOS 를 업데이트 후 발생하지 않는다.

package.json 버전 의존성

node.js 의 패키지 설정 파일 package.json 에서 버전을 명시할때의 규칙

기본적으로 연산자가 없으면 version 버전이 정확히 일치하는 것을 사용
1.2.x  는 1.2.0 1.2.1 ... 1.2.9999
"" (empty string) 또는  * 는  >=0.0.0
>version 버전 초과
>=version 버전 이상(버전 포함)
<version 버전 미만
<=version 버전 이하(버전 포함)
version1 - version2 는 >=version1 <=version2 와 같다.
version1 || version2 버전1 또는 버전2
^version 명시된 버전부터 0이 아닌 숫자로 명시된 단위에서의 최대 버전까지의 범위
(예시)
^1.2.3 는 >=1.2.3 <2.0.0
^0.2.3 는 >=0.2.3 <0.3.0
^0.0.3 는 >=0.0.3 <0.0.4
~vesrion 명시된 버전부터 마이너 버전이 명시되면 패치버전 최대까지, 그렇지 않으면 마이너버전 최대까지 범위
(예시)
~1.2.3 는 >=1.2.3 <1.3.0
~1.2 는 >=1.2.0 <1.3.0
~1 는 >=1.0.0 <2.0.0
~0.2.3 는 >=0.2.3 <0.3.0

[참고]
1.2.3.99 버전에서 각 단위
1 : major version
2 : minor version
3 : patch version
99 : build version
https://docs.npmjs.com/misc/semver

Prev