Version_up_git in flutter

Version_up_git in flutter
Photo by Artur Shamsutdinov / Unsplash

필자가 가끔 사용하는 버전업 관련 스크립트 입니다. 예시 파일은 사용코드sh에서 확인가능합니다.

활용방법

  1. 단독 파일로 저장하여서, 프로젝트 루트에 복사하여 사용하는 방법
  2. alias 등록하여 단축명령어로 사용하는 방법

개인적으로 2번으로 등록 사용합니다.

1번 사용방법

  1. 파일을 프로젝트 루트에 복사합니다.
  2. git를 우선 push 를 해야합니다. 그리고 push 기록을 가지고 1 개씩 수정을 합니다.

실행방법

  1. 기본 실행 (patch 증가)
    ./update_version.sh
    이전: 1.0.0+13
    결과: 1.0.1+14

  2. 마이너 버전 증가
    ./update_version.sh minor
    이전: 1.0.1+14
    결과: 1.1.0+15

  3. 메이저 버전 증가
    ./update_version.sh major
    이전: 1.1.0+15
    결과: 2.0.0+16

사용코드 sh

예시저장 update_version.sh

#!/bin/bash

# 사용법:
#   ./update_version.sh [major|minor|patch]
# 기본값: patch 증가

INCREMENT=${1:-patch}
PUBSPEC_FILE="./pubspec.yaml"

if [ ! -f "$PUBSPEC_FILE" ]; then
  echo "❌ Error: pubspec.yaml not found."
  exit 1
fi

BUILD_NUMBER=$(git rev-list --all --count)
if [ $? -ne 0 ]; then
  echo "❌ Error: Git commit count failed."
  exit 1
fi

# 현재 version 파싱
CURRENT_VERSION_LINE=$(grep '^version: ' "$PUBSPEC_FILE")
CURRENT_VERSION=$(echo "$CURRENT_VERSION_LINE" | cut -d ' ' -f2)
BASE_VERSION=$(echo "$CURRENT_VERSION" | cut -d '+' -f1)

IFS='.' read -r MAJOR MINOR PATCH <<< "$BASE_VERSION"

case "$INCREMENT" in
  major)
    MAJOR=$((MAJOR + 1))
    MINOR=0
    PATCH=0
    ;;
  minor)
    MINOR=$((MINOR + 1))
    PATCH=0
    ;;
  patch)
    PATCH=$((PATCH + 1))
    ;;
  *)
    echo "❌ Error: Unknown increment type '$INCREMENT'. Use: major, minor, or patch."
    exit 1
    ;;
esac

NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}+${BUILD_NUMBER}"

# pubspec.yaml 수정
if [[ "$OSTYPE" == "darwin"* ]]; then
  sed -i.bak "s/^version: .*/version: $NEW_VERSION/" "$PUBSPEC_FILE" && rm "$PUBSPEC_FILE.bak"
else
  sed -i "s/^version: .*/version: $NEW_VERSION/" "$PUBSPEC_FILE"
fi

echo "✅ Version updated to: $NEW_VERSION"

# Flutter 빌드
flutter build apk || { echo "❌ Failed to build APK"; exit 1; }
flutter build ipa --export-method ad-hoc || { echo "❌ Failed to build IPA"; exit 1; }

echo "🚀 Build complete: $NEW_VERSION"

flutter build apk 및 ipa build 실행 <- 이 명령어를 실행하는 이유는
Android의local.properties 및 iOS의flutter_export_environment.sh의 버전 관련 정보를 갱신하기 위함

Alias 등록하여 사용하는 방법

  • 사용자 홈에 폴더를 만들고
mkdir -p ~/scripts
nano ~/scripts/flutter_version_update.sh
  • 실행권한을 주고
chmod +x ~/scripts/flutter_version_update.sh
  • ~/.zshrc에 에 alias 연결합니다. (vscode -> code ~/.zshrc)
alias fvup="~/scripts/flutter_version_update.sh"
alias fvupm="~/scripts/flutter_version_update.sh major"
alias fvupi="~/scripts/flutter_version_update.sh minor"
  • zshrc 를 reload 해주고
source ~/.zshrc

이후 프로젝트 터미널에서 상황에 맞는 것을 사용하면 된다.
단, git commit and push 를 먼저하는 것은 잊지말고!


해당 방법으로 사용하기 편한 sh 파일을 만들어서 연결해서 사용합니다.