Fastlane 자동 배포에서 필요 없는 파일을 자동으로 제거하는 방법은?

_____
Q: Fastlane 자동 배포 과정에서 필요 없는 파일을 자동으로 제거하려면 어떻게 해야 하나요?

A: Fastlane 자체는 배포 프로세스 자동화 도구이며, 파일 삭제를 전담하지는 않습니다. 하지만, Fastlane 스크립트(예: `Fastfile`) 내에서 쉘 명령어나 Ruby 스크립트를 활용해 필요 없는 파일을 자동으로 삭제할 수 있습니다. 일반적인 방법은 다음과 같습니다.

---

1. sh 액션 사용하기

Fastlane의 `sh` 액션은 쉘 명령어를 실행할 수 있게 해줍니다. 이를 활용하여 불필요한 파일을 삭제합니다.

```ruby
lane :clean_and_deploy do
불필요한 파일 삭제 예:
sh("rm -rf path/to/unnecessary_files")

이후 빌드 및 배포 작업 수행
build_app
upload_to_app_store
end
```

- `rm -rf` 명령어로 특정 폴더나 파일을 삭제할 수 있습니다.
- 경로와 파일명을 정확히 지정해야 하며, 삭제 전에 꼭 백업이나 확인을 하는 것이 안전합니다.

---

2. Ruby 내장 메서드 사용하기

Ruby의 `FileUtils` 모듈을 통해 파일 삭제를 할 수도 있습니다.

```ruby
lane :clean_and_deploy do
require 'fileutils'

files_to_delete = ["path/to/file1", "path/to/folder_to_remove"]
files_to_delete.each do |file|
if File.exist?(file)
FileUtils.rm_rf(file)
UI.message("Deleted {file}")
else
UI.message("File not found: {file}")
end
end

build_app
upload_to_app_store
end
```

- `FileUtils.rm_rf`는 디렉토리와 파일 모두 재귀적 삭제 가능합니다.
- `UI.message`로 콘솔에 삭제 상태를 알릴 수 있어 디버깅에 도움됩니다.

---

3. 빌드 스크립트 내에서 삭제하기

- Xcode 빌드 설정, 그레이들 스크립트 등 빌드 단계에서 불필요한 파일 삭제 스크립트를 넣는 방법도 있습니다.
- Fastlane에서 빌드 실행 전후에 삭제 스크립트를 실행하도록 구성하면 됩니다.

---

4. `.gitignore` 등의 버전 관리 설정과 병행

- 배포 시 불필요한 파일을 근본적으로 제외하려면 `.gitignore` 혹은 빌드 스크립트에서 아예 포함되지 않도록 관리하는 것이 좋습니다.
- Fastlane은 기본적으로 빌드 후 생성된 아카이브나 산출물을 대상으로 하므로, 소스 파일 정리는 별도로 관리하는 것이 더 효율적입니다.

---

요약

| 방법 | 설명 |
|-----------------------------|------------------------------------------------|
| `sh("rm -rf path")` | 쉘 명령어로 파일/폴더 삭제 |
| Ruby `FileUtils.rm_rf` | Ruby 코드 내에서 삭제, 보다 플랫폼 독립적 |
| 빌드 스크립트에 삭제 명령 추가 | 빌드 전후 단계에서 자동으로 불필요한 파일 정리 |
| 버전 관리 설정 활용 | 배포 환경에 필요 없는 파일 자체를 관리하여 배포 제외 |

---

주의사항
- 삭제 명령어 실행 전 대상 경로와 파일을 반드시 정확히 확인하세요. 잘못된 경로를 지정하면 중요한 파일이 삭제될 위험이 있습니다.
- 자동화 스크립트 실행 시 예외 처리 및 로그 기록을 추가해 문제 발생 시 원인 파악이 쉽도록 하는 것이 좋습니다.

---

Fastlane을 활용한 자동 배포에서 필요 없는 파일 자동 삭제는 `sh` 액션 또는 `FileUtils`를 통해 손쉽게 구현할 수 있습니다. 안전에 유의하며 빌드 파이프라인에 맞게 적절히 적용하세요.
Fastlane을 이용한 자동 배포 과정에서 필요 없는 파일을 제거하는 방법은 몇 가지 단계로 진행할 수 있습니다.

아래에 그 방법을 정리해 보았습니다.

1. Fastlane Actions 사용하기 Fastlane의 `before_all` 또는 `lane` 블록의 시작 부분에서 필요 없는 파일을 제거하는 스크립트를 추가할 수 있습니다.

`sh` 명령을 사용해서 커맨드라인에서 파일을 삭제할 수 있습니다.

```ruby lane :deploy do 필요 없는 파일 제거 sh "rm -rf path/to/unwanted/files/*" 다른 배포 관련 작업 build_app upload_to_store end ```

2. `before_all` 블록을 활용하기 이 방법은 모든 메인 작업이 실행되기 전에 항상 필요 없는 파일을 삭제하고 싶을 때 유용합니다.

```ruby before_all do sh "rm -rf path/to/unwanted/files/*" end ```

3. 환경변수 설정에 따른 파일 삭제 배포 환경에 따라 제거할 파일의 경로가 다르다면, 환경변수를 사용하여 유동적으로 처리할 수 있습니다.

```ruby lane :deploy do unwanted_files_path = ENV['UNWANTED_FILES_PATH'] || 'default/path/to/unwanted/files' sh "rm -rf {unwanted_files_path}/*" 다른 배포 관련 작업 build_app upload_to_store end ```

4. Conditional Logic 추가 어떤 상황에서는 특정 파일을 삭제하지 않도록 조건을 추가할 수도 있습니다.

```ruby lane :deploy do unless ENV['KEEP_UNWANTED_FILES'] sh "rm -rf path/to/unwanted/files/*" end 다른 배포 관련 작업 build_app upload_to_store end ```

5. Custom Rake Tasks 작성 Fastlane은 Rake를 기반으로 하기 때문에, 복잡한 파일 삭제 로직이 필요하다면 Custom Rake Task를 만들어 사용할 수 있습니다.

`Rakefile`에 custom task를 추가합니다: ```ruby namespace :cleanup do desc "Remove unwanted files" task :unwanted_files do sh "rm -rf path/to/unwanted/files/*" end end ``` 이후 Fastlane에서 사용합니다: ```ruby lane :deploy do Rake::Task["cleanup:unwanted_files"].invoke 다른 배포 관련 작업 build_app upload_to_store end ``` 결론 Fastlane을 통해 자동 배포 과정에서 필요 없는 파일을 삭제하는 방법은 다양합니다.

스크립트를 간단하게 추가하거나, 조건부 로직, 환경변수, 또는 커스텀 Rake Task를 활용하여 필요에 맞게 조정할 수 있습니다.

실질적인 배포 프로세스를 단순화하고 깨끗한 배포 환경을 유지하기 위해 이러한 방법들을 유용하게 활용할 수 있습니다.

작성자: 김지연 [비회원] | 작성일자: 1년 전 2025-04-15 23:41:30
조회수: 247 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.