Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
6467f8b
♻️ :: (#343) test ci
leejh08 Dec 30, 2025
50dbede
♻️ :: (#343) xcode cloud log
leejh08 Dec 30, 2025
10d6b13
♻️ :: (#343) ci post clone 파일 제거
leejh08 Dec 30, 2025
62d00b1
♻️ :: (#343) CI, CD 추가
leejh08 Dec 30, 2025
26f1e0a
♻️ :: (#343) ci 수정
leejh08 Dec 30, 2025
65bc384
♻️ :: (#343) tuist ci error
leejh08 Dec 30, 2025
62cb540
♻️ :: (#343) ci mac os version error
leejh08 Dec 30, 2025
0d22b53
♻️ :: (#343) tuist install -> fetch
leejh08 Dec 30, 2025
907690b
♻️ :: (#343) fastlane 경로 수정
leejh08 Dec 30, 2025
f3e2118
♻️ :: (#343) fastfile 절대경로 설정
leejh08 Dec 30, 2025
7502b01
♻️ :: (#343) Simulator destination
leejh08 Dec 30, 2025
58afbf4
♻️ :: (#343) SDK 방식으로 빌드 수정
leejh08 Dec 30, 2025
22ab67d
♻️ :: (#343) iOS 시뮬 설치
leejh08 Dec 30, 2025
0a71a02
♻️ :: (#343) Ci 테스트 제거
leejh08 Dec 30, 2025
26ff490
♻️ :: (#343) 단계 최소화
leejh08 Dec 30, 2025
f5ee08c
♻️ :: (#343) Tuist build 사용
leejh08 Dec 30, 2025
d550ce9
♻️ :: (#343) tuist 프로젝트 경로 이동
leejh08 Dec 30, 2025
ab8b736
♻️ :: (#343) 프로비저닝 세팅
leejh08 Jan 1, 2026
cd308bd
♻️ :: Move fastlane to private submodule for security
leejh08 Jan 1, 2026
dce9ed4
🔧 :: Update fastlane submodule (remove unnecessary files)
leejh08 Jan 1, 2026
7275db6
🔧 :: Update fastlane submodule (remove report.xml)
leejh08 Jan 1, 2026
5fd6605
🔧 :: Setup GitHub Actions workflows for CI/CD
leejh08 Jan 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Lint

on:
pull_request:
branches: [ develop ]
push:
branches: [ develop ]

jobs:
swiftlint:
runs-on: macos-15

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.2'

- name: Install SwiftLint
run: brew install swiftlint

- name: Run SwiftLint
run: swiftlint lint --strict
63 changes: 63 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Release to App Store

on:
push:
branches: [ main ]

jobs:
release:
runs-on: macos-15

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup XCConfig Files
run: |
echo "${{ secrets.XCCONFIG_BASE64 }}" | base64 --decode | tar -xz

- name: Setup Firebase Config Files
run: |
mkdir -p Projects/App/Resources/Firebase
echo "${{ secrets.GOOGLE_SERVICE_DEV_INFO }}" > Projects/App/Resources/Firebase/GoogleService-Dev-Info.plist
echo "${{ secrets.GOOGLE_SERVICE_STAGE_INFO }}" > Projects/App/Resources/Firebase/GoogleService-Stage-Info.plist
echo "${{ secrets.GOOGLE_SERVICE_PROD_INFO }}" > Projects/App/Resources/Firebase/GoogleService-Prod-Info.plist

- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.2'

- name: Cache SPM
uses: actions/cache@v4
with:
path: |
.build
~/Library/Developer/Xcode/DerivedData/**/SourcePackages
key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
restore-keys: |
${{ runner.os }}-spm-

- name: Install mise
uses: jdx/mise-action@v2
with:
install: true

- name: Install Fastlane
run: brew install fastlane

- name: Generate Xcode project with Tuist
run: |
mise exec -- tuist fetch
mise exec -- tuist generate --xcframeworks
env:
TUIST_CI: "1"

- name: Run Fastlane Release
run: fastlane release
env:
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -72,5 +72,23 @@ Tuist/Dependencies
### Tuist cache ###
Tuist/Cache/

### Secrets (handled via GitHub Secrets in CI) ###
XCConfig/
Projects/App/Resources/Firebase/

### Fastlane ###
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/.env
test_output/
*.ipa
*.dSYM.zip
*.mobileprovision

### Ruby/Bundler ###
.bundle/
vendor/bundle/
Gemfile.lock
.claude/
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "fastlane"]
path = fastlane
url = https://github.com/Team-return/JOBIS_fastlane.git
Comment on lines +1 to +3
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Find and examine CI workflow files
find .github/workflows -type f \( -name "*.yml" -o -name "*.yaml" \) 2>/dev/null | head -20

Repository: Team-return/JOBIS-DSM-iOS-v2

Length of output: 223


🏁 Script executed:

# List all files in .github to understand structure
find .github -type f 2>/dev/null | head -20

Repository: Team-return/JOBIS-DSM-iOS-v2

Length of output: 338


🏁 Script executed:

# Search for submodule references in workflow files
rg -i "submodule|checkout" .github/workflows/ --type yaml 2>/dev/null || echo "No workflows found or no matches"

Repository: Team-return/JOBIS-DSM-iOS-v2

Length of output: 705


🏁 Script executed:

# Check if there are any setup instructions or documentation
find . -maxdepth 2 -type f \( -name "README*" -o -name "SETUP*" -o -name "INSTALL*" -o -name ".github*" \) 2>/dev/null | head -20

Repository: Team-return/JOBIS-DSM-iOS-v2

Length of output: 83


🏁 Script executed:

# Examine the .gitmodules file content
cat -n .gitmodules 2>/dev/null || echo ".gitmodules not found"

Repository: Team-return/JOBIS-DSM-iOS-v2

Length of output: 189


🏁 Script executed:

# Check for any SSH config or deploy key setup
find . -type f -name "*deploy*" -o -name "*ssh*" -o -name ".git*" 2>/dev/null | grep -v ".git/" | head -20

Repository: Team-return/JOBIS-DSM-iOS-v2

Length of output: 115


🏁 Script executed:

cat -n .github/workflows/ci.yml

Repository: Team-return/JOBIS-DSM-iOS-v2

Length of output: 2240


🏁 Script executed:

cat -n README.md | head -100

Repository: Team-return/JOBIS-DSM-iOS-v2

Length of output: 5494


🏁 Script executed:

# Check if there's any token or permissions configuration
rg "token|permission|scope" .github/workflows/ci.yml -i

Repository: Team-return/JOBIS-DSM-iOS-v2

Length of output: 114


🏁 Script executed:

# Check for any secrets or environment variables related to auth
rg "secret|env" .github/workflows/ci.yml -i

Repository: Team-return/JOBIS-DSM-iOS-v2

Length of output: 556


팀 개발자 로컬 개발 환경 설정 문서 필요 및 저장소 접근 권한 확인 필요

비공개 JOBIS_fastlane 서브모듈의 접근 설정과 관련하여 다음 사항들을 검토해주세요:

  1. 로컬 개발 환경 설정 문서 부재: README에서 팀 멤버들이 이 저장소를 클론한 후 비공개 서브모듈에 접근할 수 있도록 설정하는 방법에 대한 가이드가 없습니다. 개인용 액세스 토큰(PAT) 또는 SSH 키를 이용한 인증 설정 방법을 문서화해주세요.

  2. CI/CD 환경에서의 저장소 접근 권한: CI 워크플로우에서 GITHUB_TOKEN을 사용하여 submodules: recursive로 체크아웃하도록 설정되어 있습니다. 다만, GITHUB_TOKEN이 같은 조직 내 비공개 저장소의 서브모듈에 접근 가능한 권한을 가지고 있는지 GitHub 저장소 설정에서 확인이 필요합니다.

  3. SSH 사용 검토 (선택사항): 현재 HTTPS URL로 설정되어 있으나, 비공개 저장소의 경우 SSH URL([email protected]:Team-return/JOBIS_fastlane.git)을 사용하는 것이 권한 관리 측면에서 더 명확할 수 있습니다. 팀의 워크플로우에 맞는 방식을 선택해주세요.

🤖 Prompt for AI Agents
.gitmodules lines 1-3: add documentation and update repository access
configuration for the private JOBIS_fastlane submodule; create or update the
project README or a CONTRIBUTING/DEV_SETUP.md describing step-by-step how to
configure local access (both PAT over HTTPS and SSH key setup) to clone the
private submodule, include example git commands and how to store tokens
securely, and instruct developers to add the correct remote URL; verify CI
permissions by checking GitHub repository and organization settings to confirm
whether GITHUB_TOKEN has access to organization-private submodules or document
the need to use a deploy key or a PAT in the CI secrets and update the workflow
to use that credential when checking out submodules; optionally change the
submodule URL to the SSH form ([email protected]:Team-return/JOBIS_fastlane.git) if
the team prefers SSH-based auth and document the chosen approach so CI and
developers use the same method.

3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source "https://rubygems.org"

gem "fastlane", ">= 2.220"
49 changes: 49 additions & 0 deletions Scripts/print-github-secrets.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/bin/bash

# GitHub Secrets 설정을 위한 모든 내용 출력 스크립트
# XCConfig 및 Firebase 설정 파일 내용을 출력

echo "========================================="
echo "GitHub Secrets 설정을 위한 파일 내용"
echo "총 4개의 Secret이 필요합니다"
echo "========================================="
echo ""

echo "=== 1. XCCONFIG_BASE64 ==="
echo "이 내용을 전체 복사하여 GitHub Secret 'XCCONFIG_BASE64'에 추가하세요"
echo "---"
tar -czf - XCConfig | base64
echo ""
echo ""

echo "=== 2. GOOGLE_SERVICE_DEV_INFO ==="
echo "이 내용을 전체 복사하여 GitHub Secret 'GOOGLE_SERVICE_DEV_INFO'에 추가하세요"
echo "---"
cat Projects/App/Resources/Firebase/GoogleService-Dev-Info.plist
echo ""
echo ""

echo "=== 3. GOOGLE_SERVICE_STAGE_INFO ==="
echo "이 내용을 전체 복사하여 GitHub Secret 'GOOGLE_SERVICE_STAGE_INFO'에 추가하세요"
echo "---"
cat Projects/App/Resources/Firebase/GoogleService-Stage-Info.plist
echo ""
echo ""

echo "=== 4. GOOGLE_SERVICE_PROD_INFO ==="
echo "이 내용을 전체 복사하여 GitHub Secret 'GOOGLE_SERVICE_PROD_INFO'에 추가하세요"
echo "---"
cat Projects/App/Resources/Firebase/GoogleService-Prod-Info.plist
echo ""
echo ""

echo "========================================="
echo "다음 단계:"
echo "1. GitHub 저장소 → Settings → Secrets and variables → Actions"
echo "2. New repository secret 클릭"
echo "3. 위 4개 내용을 각각 복사하여 추가"
echo " - XCCONFIG_BASE64"
echo " - GOOGLE_SERVICE_DEV_INFO"
echo " - GOOGLE_SERVICE_STAGE_INFO"
echo " - GOOGLE_SERVICE_PROD_INFO"
echo "========================================="
22 changes: 0 additions & 22 deletions ci_scripts/ci_post_clone.sh

This file was deleted.

1 change: 1 addition & 0 deletions fastlane
Submodule fastlane added at f6b9cd
Loading