- CI = 빌드 및 테스트 자동화
- CD = 배포 자동화
---
3. IPA를 추출하고,
4. 배포 가능한 페이지에 업로드 하고,
---
3. APK를 추출하고,
4. 배포 가능한 페이지에 업로드 하고,
Email 을 사용한 운영 배포.
현재 내 PC는 M1 실리콘 이다.
=============================
$ /usr/libexec/java_home -VMatching Java Virtual Machines (2):
11.0.12 (arm64) "Azul Systems, Inc." - "Zulu 11.50.19" /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
1.8.0_302 (arm64) "Azul Systems, Inc." - "Zulu 8.56.0.23" /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
$ java -versionopenjdk version "1.8.0_302"
OpenJDK Runtime Environment (Zulu 8.56.0.23-CA-macos-aarch64) (build 1.8.0_302-b08)
OpenJDK 64-Bit Server VM (Zulu 8.56.0.23-CA-macos-aarch64) (build 25.302-b08, mixed mode)
jaehwanchoo@jhchooui-Mac ~ %
1. homebrew를 설치한다.
homebrew 공식 설치 가이드 링크
$ brew install jenkins-lts젠킨스를 설치한다음 아래의 명령어로 젠킨스를 제어할 수 있습니다.
$ brew services start jenkins-lts // 젠킨스 시작
$ brew services stop jenkins-lts // 젠킨스 종료
$ brew services restart jenkins-lts //젠킨스 재시작로컬 컴퓨터라면 http://localhost:8080 접속.$ vi /Users/jaehwanchoo/.jenkins/secrets/initialAdminPassword$ brew install fastlane$ fastlane env # 설치 버전 확인usage 사용법
1. Fastlane 초기화
iOS 프로젝트 홈 디렉토리로 간 후
$ fastlane init 위 명령어를 입력하면 간단하게 초기화 할 수 있다.What would you like to use fastlane for?
1. 📸 Automate screenshots
2. 👩✈️ Automate beta distribution to TestFlight
3. 🚀 Automate App Store distribution
4. 🛠 Manual setup - manually setup your project to automate your tasks
?
초기화 실행시 위와 같이 용도에 따라 안내를 해주는데 나중에 수정할 수 있으니 어떤 것을 골라도 상관없다.
4번으로 일단 선택했다.
--- ✅ Successfully generated fastlane configuration ---
위 메시지가 뜬 뒤 엔터 몇번 쳐주면 초기화가 완료된다.
platform :ios do
lane :dev do
begin
slack_message("APP_NAME 개발자 버전 배포를 시작 합니다.")
build_app(
scheme: "APP_NAME",
configuration: "Debug",
export_method: "development",
output_directory: "./build/Debug",
output_name: "APP_NAME-Debug.ipa",
clean: true
)
slack_message("APP_NAME 개발자 버전 생성 완료!!")
rescue => exception
slack_error(exception)
end
end
end
def slack_message(message)
slack(
message: message,
success: true,
slack_url: "슬랙 주소",
default_payloads: [:git_branch]
)
end
default_platform(:ios)
platform :ios do
lane :pro do
#빌드 넘버를 증가 시킨다.
increment_build_number
#버전 넘버 자동증가
increment_version_number_in_plist(
target: "APP_NAME",
bump_type: "minor" # 자동증가
)
#버전 넘버 자동증가
increment_version_number_in_plist(
target: "ReachService",
bump_type: "minor" # 자동증가
)
buildNumber = get_build_number
versionNumber = get_version_number(
target: "APP_NAME"
)
slack_message("APP_NAME 운영 버전 배포를 시작 합니다.")
begin
build_app(
scheme: "APP_NAME",
configuration: "Release",
export_method: "enterprise",
output_directory: "./build/Release",
output_name: "APP_NAME-Release.ipa",
clean: true
)
slack_send({"versionNumber": versionNumber, "buildNumber": buildNumber})
rescue => exception
slack_error(exception)
end
end
lane :slack_send do |options|
slack(
message: "APP_NAME 성공적으로 빌드 되었습니다.",
channel: "#CHANAL_NAME",
slack_url: "슬랙주소",
payload: {
"versionNumber": options[:versionNumber],
"buildNumber": options[:buildNumber]
},
default_payloads: [:git_branch, :last_git_commit_message]
)
end
end
def slack_message(message)
slack(
message: message,
success: true,
slack_url: "슬랙주소",
default_payloads: [:git_branch]
)
end
def slack_error(exception)
slack(
message: "<!here> fastlane 빌드 중 문제가 발생하였습니다.",
success: false,
slack_url: "슬랙주소",
default_payloads: [:git_branch, :last_git_commit_message],
attachment_properties: {
fields: [
{
title: "에러 내역",
value: exception
}
]
}
)
end
$ fastlane add_plugin versioningBadge
3.1
$ vi /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>homebrew.mxcl.jenkins</string>
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/java_home</string>
<string>-v</string>
<string>1.8</string>
<string>--exec</string>
<string>java</string>
<string>-Dmail.smtp.starttls.enable=true</string>
<string>-jar</string>
<string>/usr/local/opt/jenkins/libexec/jenkins.war</string>
<string>--httpListenAddress=0.0.0.0</string>
<string>--httpPort=9999</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
$ brew services start jenkins // 젠킨스 시작
$ brew services stop jenkins // 젠킨스 종료
$ brew services restart jenkins //젠킨스 재시작
fastlane을 인지 못할 때, 환경설정 추가.
Name: Path
Value: /bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
Name: LC_ALL
Name: LANG
gitlab에서 로그인 토큰 만드는 법
로그인 토큰 등록
Excute Shell 등록을 해서 fastlane 명령어 호출 완료.
커밋 명령어에 오류가 나기 때문에,
commit_version_bump
push_to_git_remote
.gitignore 파일을 생성하여, 커밋 무시 목록을 만든다.
운영 배포를 아래와 같이 하고 싶으면 옵션 전달을 구현 한다.
# fastlane release bump_type:patch
increment_version_number(
bump_type: "patch" # Automatically increment patch version number
)
increment_version_number(
bump_type: "minor" # Automatically increment minor version number
)
increment_version_number(
bump_type: "major" # Automatically increment major version number
)













댓글
댓글 쓰기