diff --git a/README.md b/README.md
index ae6ec09..181f953 100644
--- a/README.md
+++ b/README.md
@@ -100,7 +100,6 @@ pipeline:
```yaml
- if:
condition-string: " == prod"
- type: string
on-true:
- exe: deployProd
on-false:
@@ -125,8 +124,7 @@ pipeline:
```yaml
- while:
- condition-string: " < 3"
- type: int
+ condition-int: < 3
on-do:
- exe: checkStatus
```
@@ -135,20 +133,21 @@ pipeline:
```yaml
- switch:
- value:
+ condition-string:
cases:
- prod:
- - exe: deployProd
- dev:
- - exe: deployDev
+ - value: prod
+ tasks:
+ - exe: deployProd
+ - value: dev
+ tasks:
+ - exe: deployDev
```
### wait-until — 대기
```yaml
-- wait-until-true:
- condition-string: " == complete"
- interval: 10
+- async: buildStep
+- wait-until-string: != complete
```
### async — 비동기 실행
@@ -175,7 +174,11 @@ pipeline:
| `BuildFlutter` | flutter build |
| `BuildDart` | dart build |
| `BuildDartCompile` | dart compile |
+| `BuildDotNet` | dotnet build |
| `BuildMSBuild` | MSBuild (.NET) |
+| `XcodeprojAddFile` | Xcode 프로젝트 파일 추가 |
+| `CodeSign` | macOS codesign |
+| `CodeSignVerify` | codesign 검증 |
| `ProductBuild` | macOS productbuild |
| `Notarize` | macOS 공증 |
@@ -227,7 +230,7 @@ pipeline:
| `Upload` | FTP 업로드 |
| `Download` | FTP 다운로드 |
| `WebRequest` | HTTP 요청 |
-| `WebFile` | HTTP 파일 다운로드 |
+| `WebFile` | HTTP multipart 파일 업로드 |
| `URLInfo` | URL 정보 파싱 |
### 문자열 / 유틸
@@ -237,7 +240,6 @@ pipeline:
| `Print` | 메시지 출력 |
| `SetValue` | property 값 직접 설정 |
| `Delay` | 지연 (초) |
-| `Timer` | 경과 시간 측정 |
| `StringSub` | 문자열 자르기 |
| `StringReplace` | 문자열 치환 |
| `StringReplacePattern` | 정규식 치환 |
@@ -304,8 +306,9 @@ DataBuildiOS extends DataParam {
1. lib/oto/data/*.dart DataParam 상속 모델 정의 + @JsonSerializable
2. lib/oto/commands/command.dart CommandType enum에 값 추가
3. lib/oto/commands/{category}/ Command 상속 클래스 구현
-4. lib/oto/commands/command_registry.dart registerAllCommands()에 등록
-5. dart run build_runner build *.g.dart 생성
+4. Command.register(..., spec: CommandSpec(...))에 구현체/데이터 모델/샘플 경로 등록
+5. lib/oto/commands/command_registry.dart registerAllCommands()에 등록 함수 연결
+6. dart run build_runner build *.g.dart 생성
```
---
@@ -341,7 +344,6 @@ scheduler:
```
lib/
├── cli/ # CLI 인자 파싱, 스케줄러 관리
-├── framework/ # 플랫폼 추상화, ProcessExecutor, 로깅
└── oto/
├── application.dart # 싱글턴 오케스트레이터
├── commands/ # 커맨드 구현체 (카테고리별)
@@ -368,5 +370,5 @@ dart run build_runner build # 데이터 모델 생성
## 에러 처리
- `Application.build()`는 `catch (e, stacktrace)`로 Exception과 Error 모두 처리
-- 실패 시 `exit(10)` 으로 부모 프로세스에 실패 신호 전달
+- 실패 시 `BuildResult.failure(..., exitCode: 10)`을 반환하고 CLI가 부모 프로세스에 exit code 전달
- `passExitCodes`로 성공으로 간주할 exit code 지정 가능
diff --git a/agent-ops/rules/project/domain/command/rules.md b/agent-ops/rules/project/domain/command/rules.md
index 8074d18..95bfe0a 100644
--- a/agent-ops/rules/project/domain/command/rules.md
+++ b/agent-ops/rules/project/domain/command/rules.md
@@ -18,6 +18,7 @@
## 주요 구성 요소
- `Command` (`command.dart`) — 커맨드 베이스 클래스, `CommandType` enum
+- `CommandSpec` (`command.dart`) — CommandType → category/dataModel/samplePath 메타데이터
- `CommandRegistry` (`command_registry.dart`) — CommandType → Command 매핑 등록소
- `DataParam` (`base_data.dart`) — 모든 커맨드 파라미터의 베이스
- `DataCommand` (`command_data.dart`) — 모든 커맨드에 전달되는 통합 컨테이너
@@ -38,6 +39,7 @@
## 유지할 패턴
- 새 커맨드는 반드시 `Command` 상속 후 `CommandRegistry`에 등록
+- `Command.register()`에는 `CommandSpec`을 함께 전달해 category, dataModel, samplePath를 기록
- 파라미터 모델은 `DataParam` 상속 + `@JsonSerializable`
- `*.g.dart`는 `dart run build_runner build`로 생성한다. 생성 파일 직접 수정은 생성 불가한 긴급 상황에서만 한다
- `getWorkspace()`: workspace 필드 → `property['workspace']` → `commonData.workspace` 순으로 resolve
diff --git a/agent-ops/rules/project/domain/sample/rules.md b/agent-ops/rules/project/domain/sample/rules.md
index 892f0ae..ad72354 100644
--- a/agent-ops/rules/project/domain/sample/rules.md
+++ b/agent-ops/rules/project/domain/sample/rules.md
@@ -10,10 +10,14 @@ AI가 파이프라인 YAML을 작성하거나 검토할 때 가장 먼저 읽는
- `assets/yaml/sample/` — 카테고리별 샘플 YAML 파일
+## 제거된 레거시 경로
+
+- `assets/yaml/example/` — 기존 실험용 파일. 새 예제 재작성 전 혼선을 줄이기 위해 제거됨
+- `assets/templates/` — 알림 테스트 템플릿. 새 예제 재작성 전 혼선을 줄이기 위해 제거됨
+- 루트/`assets/` 하위의 구형 테스트 YAML/XML (`build_*.yaml`, `slack_test.yaml`, `pipeline-test*.yaml`, `scheduler*.yaml`, `assets/config.xml`, `assets/example.yaml`)은 현재 형상과 맞지 않아 제거됨
+
## 제외 경로
-- `assets/yaml/example/` — 기존 실험용 파일 (샘플 도메인 아님)
-- `assets/templates/` — 알림 템플릿 (샘플 도메인 아님)
- `lib/oto/data/` — 실제 파라미터 모델은 command 도메인
## 주요 구성 요소
diff --git a/agent-ops/rules/project/rules.md b/agent-ops/rules/project/rules.md
index dab4ec0..a6b27b3 100644
--- a/agent-ops/rules/project/rules.md
+++ b/agent-ops/rules/project/rules.md
@@ -61,6 +61,7 @@ lib/
- 모든 커맨드 파라미터는 `DataParam` (`lib/oto/data/base_data.dart`) 상속
- JSON 직렬화: `json_annotation` 사용, 생성 파일은 `*.g.dart`
+- `CommandSpec` — 커맨드의 category, dataModel, samplePath 메타데이터
- `DataCommon` – Jenkins 환경 데이터 (workspace, job name, build number 등)
- `DataCommand` (`command_data.dart`) – 모든 `Command.execute()`에 전달되는 통합 컨테이너
@@ -69,14 +70,15 @@ lib/
1. `lib/oto/data/*_data.dart`에 데이터 모델 정의 (`DataParam` 상속)
2. `lib/oto/commands/command.dart`의 `CommandType` enum에 값 추가
3. `Command` 상속하여 커맨드 클래스 구현
-4. `lib/oto/commands/command_registry.dart`에 등록
-5. 관련 `assets/yaml/sample/**` 샘플 갱신 필요 여부 확인
-6. `@JsonSerializable` 클래스 추가/변경 시 `dart run build_runner build` 실행
+4. `Command.register(..., spec: CommandSpec(...))`에 구현체/데이터 모델/샘플 경로 등록
+5. `lib/oto/commands/command_registry.dart`의 `registerAllCommands()`에 등록 함수 연결
+6. 관련 `assets/yaml/sample/**` 샘플 갱신 필요 여부 확인
+7. `@JsonSerializable` 클래스 추가/변경 시 `dart run build_runner build` 실행
## 에러 처리
- `Application.build()`는 `catch (e, stacktrace)` (Exception이 아닌 Error 포함 캐치)
-- 에러 시 `exit(10)` 호출로 부모 프로세스에 실패 신호 전달
+- 에러 시 `BuildResult.failure(..., exitCode: 10)`을 반환하고 CLI 진입점이 부모 프로세스에 실패 exit code를 전달
## 스킬 기반 작업 흐름
diff --git a/assets/config.xml b/assets/config.xml
deleted file mode 100644
index 981e3de..0000000
--- a/assets/config.xml
+++ /dev/null
@@ -1,778 +0,0 @@
-
-
-
- 빌드 가이드 문서
-
-https://lgtest.atlassian.net/wiki/spaces/FE/pages/78217452/AOS+Jenkins
- false
-
-
-
- 15
- -1
- -1
- -1
- false
-
-
-
-
-
- url
- LT환경 설정화면이 없이 고정주소 빌드가 필요할때 사용해 주세요.
-공백일경우 앱시작시 LT환경 설정이 나옵니다.
-(http또는 https를 포함한 주소를 넣어주세요. 공백이 포함되거나, 마지막 /가 포함되면 정상 실행이 되지 않을수 있습니다.)
- false
-
-
- modify_app_id
- App ID를 변경합니다. 'com.lguplus.mobile.cs' 에서 추가로 값이 추가되어 운영버전의 앱과 중복 설치 가능하게 됩니다.
-예를들어 myapp로 설정시 App ID 'com.lguplus.mobile.cs.myapp'으로 빌드되며, 앱이름은 '당신의 U+ (myapp)로 설정됩니다. 앱아이콘은 dev띠를 두릅니다.
-공백일경우 운영과 동일한 App ID로 빌드됩니다.
-(텍스트내 공백무시, 대문자 무시, 기호불가, 10자 한정, 10자 초과시 자름)
- dev
- true
-
-
- slack_message
- 빌드 완료시 Slack에 메세지를 보낼때, 어떤용도의 빌드인지 알기 위한 판별용 메세지입니다.
-등록된 사용자의 경우 멘션(@김아무개) 사용도 가능합니다.
- false
-
-
- branch
- 빌드할 브런치입니다. 특정 feature 브런치용 빌드를 원하신다면 설정에서 이 항목에 추가해주세요.
-(수정권한이 없으면 앱파트에 요청해주세요.)
-
-
- main
- develop
- release/7.0.6
- release/7.0.7
- release/7.0.10
- release/7.0.11
- release/6.0.38_test
- feature/DCBGIT-21704_U+2.0크롬판별_이슈
- feature/DCBGIT-20848_LT빌드-자동화
- feature/DCBGIT-18853_딥링크_이동페이지_변경
- feature/DCBGWBS-6721_가속화002_챗봇
- feature/DCBGQA-6078_용어사전pdf_다운로드이슈
- feature/DCBGIT-24352_디바이스식별자전달
-
-
-
-
- slack_channel
- 알림을 보낼 Slack 채널을 선택합니다.
-
-
- 디지털fe-앱빌드
- 디지털fe-앱빌드_테스트
-
-
-
-
- debuggable
- 디버깅 가능한 빌드인지 여부입니다. 체크시 디버깅 가능한 빌드로 빌드 됩니다.
- true
-
-
- share
- 외부공유용 (Firebase 이용)
- false
-
-
- obfuscation
- 난독화를 할지 여부 입니다.
- false
-
-
- release
- 메인 url을 제외한 빌드세팅을 Release환경으로 선택하여 빌드 합니다. (메인 url은 위에 있는 url필드 값을 따라갑니다.)
- false
-
-
- BuildData
- 빌드용 스크립트입니다. 터치하지 마세요.
- ---
-############################ Properties ############################
-
-property:
- workspace: '${WORKSPACE}'
- slackChannel: '${slack_channel}'
- slackMessage: '${slack_message}'
- branch: '${branch}'
- url: '${url}'
- appID: '${modify_app_id}'
- share: '${share}'
- obfuscation: '${obfuscation}'
- release: '${release}'
- urlValue: https://mstg.lguplus.com
- fileUrl: http://febuild.uhdcsre.com:8080/job/mcs-aos/${BUILD_NUMBER}/artifact/app/build/outputs/apk/mobileCS/lt/{FILE}
- urlMessage: ''
- appIDMessage: ''
- portValue: ''
- enableDevTool: 'true'
- gradlePath: <!property.workspace>/app/build.gradle
- stringsPath: <!property.workspace>/app/src/main/res/values/strings.xml
- manifestPath: <!property.workspace>/app/src/main/AndroidManifest.xml
- buildPath: <!property.workspace>/app/build/outputs/apk/mobileCS/lt
- config: |
- {
- "version": "VERSION",
- "versionCode": VERSION_CODE,
- "gitHash": "GIT_HASH",
- "buildDate": "BUILD_DATE"
- }
- templateLt: |
- lt {
- debuggable ${debuggable}
- signingConfig null
-
- buildConfigField 'boolean', 'ENABLE_DEVTOOL', "{ENABLE_DEVTOOL}"
- buildConfigField 'boolean', 'DEV', "${debuggable}"
- buildConfigField 'String', 'DEBUG_LOG_TAG', '"MobileCS_STG"'
- buildConfigField 'String', 'HTTP_WEB_URL', '"{HTTP_URL}"'
- buildConfigField 'String', 'WEB_URL', '"{URL}"'
- buildConfigField 'String', 'PUSH_APPLICATION_ID', '"custm_FCM1"'
- buildConfigField 'String', 'PUSH_SERVICE_ID', '"30153"'
- buildConfigField 'String', 'PUSH_URL', '"http://222.231.13.33:5556"'
- buildConfigField 'String', 'PUSH_AUTH', '"auth=0000002359;C20384A50EBCD4FD2A1B"'
- buildConfigField 'String', 'CHATBOT_URL', '"https://chatbot-stg.lguplus.com/?fromChan=APP"'
- buildConfigField 'String', 'FIDO_URL', '"https://stg-onps.uplus.co.kr"'
- buildConfigField 'String', 'FIDO_BIZ_API_URL', '"https://stg.uplus.co.kr/uhdc/fo/apcm/authbio/v1"'
- buildConfigField 'String', 'FIDO_SITE_ID', '"SIT01UPLUS0000000000"'
- buildConfigField 'String', 'FIDO_SVC_ID', '"SVC01SIT01UPLUS00000"'
- buildConfigField 'String', 'USIM_AGENT_API_KEY', '"a6AwmI2XEWup9MALI/Z/ASzDs87gcNmKifk2iyUUChs="'
- buildConfigField 'String', 'SERVER_TYPE', '"STG"'
- buildConfigField "java.util.Map<String, String>", "LT_ENVIRONMENT_MAP", "new java.util.HashMap<String, String>() {{ " +
- " put(\"QA (https)\", \"https://mstg.lguplus.com\");" +
- " put(\"QA\", \"http://mstg.lguplus.com\");" +
- " put(\"운영\", \"https://app.lguplus.com\");" +
- " put(\"PRE\", \"https://mpre.lguplus.com\");" +
- " put(\"DEV\", \"http://mdev.uplus.com\");" +
- "}}"
-
- manifestPlaceholders = [buildType: ""]
- }
- templateRelease: |
- lt {
- debuggable ${debuggable}
- minifyEnabled false
- shrinkResources false
- signingConfig null
-
- buildConfigField 'boolean', 'ENABLE_DEVTOOL', "{ENABLE_DEVTOOL}"
- buildConfigField 'boolean', 'DEV', "${debuggable}"
- buildConfigField 'String', 'DEBUG_LOG_TAG', '"MobileCS"'
- buildConfigField 'String', 'HTTP_WEB_URL', '"{HTTP_URL}"'
- buildConfigField 'String', 'WEB_URL', '"{URL}"'
- buildConfigField 'String', 'PUSH_APPLICATION_ID', '"custm_FCM1"'
- buildConfigField 'String', 'PUSH_SERVICE_ID', '"21016"'
- buildConfigField 'String', 'PUSH_URL', '"http://upushgw.uplus.co.kr:5556"'
- buildConfigField 'String', 'PUSH_AUTH', '"auth=0000002415;CDAC132152FCB4F4499F"'
- buildConfigField 'String', 'CHATBOT_URL', '"https://chatbot.lguplus.com/?fromChan=APP"'
- buildConfigField 'String', 'FIDO_URL', '"https://onps.uplus.co.kr"'
- buildConfigField 'String', 'FIDO_BIZ_API_URL', '"https://app.lguplus.com/uhdc/fo/apcm/authbio/v1"'
- buildConfigField 'String', 'FIDO_SITE_ID', '"SIT01UPLUS0000000000"'
- buildConfigField 'String', 'FIDO_SVC_ID', '"SVC01SIT01UPLUS00000"'
- buildConfigField 'String', 'USIM_AGENT_API_KEY', '"mV/yWnRgD2wQn5sjzokKGVJZDdVKDnLPkvS4cG+jwZE="'
- buildConfigField 'String', 'SERVER_TYPE', '"PROD"'
- buildConfigField "java.util.Map<String, String>", "LT_ENVIRONMENT_MAP", "new java.util.HashMap<String, String>()"
-
- manifestPlaceholders = [buildType: ""]
- }
- slackMessageAdd: |
- "text": "<!property.slackMessage>",
- slackMessageJson: |
- {
- "channel": "<!property.slackChannel>",
- {SLACK_MESSAGE}
- "attachments": [
- {
- "color": "#81CA3F",
- "author_name": "Android",
- "fields": [
- {
- "value": "```Builder: ${BUILD_USER}\nJob URL: ${BUILD_URL}\nBranch: ${GIT_BRANCH}\nGitHash: ${GIT_COMMIT}\nVersion: {VERSION}\nVersion Code: {VERSION_CODE}\nRelease 환경: ${release}\n{URL}DevTool 활성: {DEVTOOL}\n{APPID}Date: {DATE}```"
- }
- ],
- "image_url": "https://api.qrserver.com/v1/create-qr-code/?data={FILE_URL}&size=150x150",
- "actions": [
- {
- "type": "button",
- "name": "build",
- "text": "Download",
- "url": "{FILE_URL}"
- }
- ]
- }
- ]
- }
-
-
-
-############################# Pipeline #############################
-
-pipeline:
- id: main
- workflow:
- # Set app info
- - exe: create-app
-
- # Set envValue
- - if:
- condition-bool: <!property.release> == true
- on-true:
- - exe: set-release
- on-false:
- - exe: set-lt
-
- # Set urlValue
- - contain:
- list: <!property.url>
- target: '{url}'
- on-false:
- - exe: parse-url
- - if:
- condition-string: <!property.port> != 443
- on-true:
- - if:
- condition-string: <!property.port> != 80
- on-true:
- - exe: set-port
- - exe: set-url
-
- # Gradle에 Signing 정보 입력
- - exe: gradle-read
- - exe: append-sign
- - exe: replace-http-url
- - exe: replace-url
- - exe: replace-env
- - exe: gradle-write
-
- - contain:
- list: <!property.appID>
- target: '{modify_app_id}'
- on-false:
- - exe: set-appid-message
- # 앱이름 변경
- - exe: strings-read
- - exe: app-rename
- - exe: strings-write
-
- # 파일 권한 및 아이콘 변경
- - exe: manifest-read
- - exe: replace-icon
- - exe: replace-permission
- - exe: manifest-write
-
- # Listing Files
- - exe: files
- - foreach:
- iterator: <!property.files>
- setValue: <@property.file>
- on-do:
- # Pacckage name replace
- - exe: file-read
- - exe: replace-package
- - exe: file-write
-
- # Config 작성
- - exe: set-config
- - exe: write-config
-
- # Gradle 빌드
- - exe: build
-
- # Slack Message가 빈값일때 empty 세팅
- - contain:
- list: <!property.slackMessage>
- target: '{slack_message}'
- on-true:
- - exe: set-slack-message-empty
-
- # Listing Build Files
- - exe: files-build
- - foreach:
- iterator: <!property.files>
- setValue: <@property.fileBuild>
- on-do:
- - contain:
- list: <!property.fileBuild>
- target: output-metadata.json
- on-true:
- - exe: read-build-meta
- - if:
- condition-string: <!property.enableDevTool> == false
- on-true:
- - exe: replace-file-name
- - exe: rename-build-file
- - exe: set-file-name
-
-
- - exe: set-slack-message
- - exe: slack
-
-############################# Commands #############################
-
-commands:
-### Create App Data
-- command: CreateAppData
- id: create-app
- param:
- scm: Git
- name: mcs
- relativeAssetPath: app/src/main/assets
- setVersion: <@property.version>
- setHash: <@property.hash>
- setDate: <@property.date>
-
-### Set Lt
-- command: SetValue
- id: set-lt
- param:
- values-string:
- envValue: <!property.templateLt>
-
-### Set Release
-- command: SetValue
- id: set-release
- param:
- values-string:
- envValue: <!property.templateRelease>
- urlValue: http://app.lguplus.com
-
-### Parse URL
-- command: URLInfo
- id: parse-url
- param:
- url: <!property.url>
- setScheme: <@property.scheme>
- setHost: <@property.host>
- setPort: <@property.port>
-
-### Set Port Value
-- command: SetValue
- id: set-port
- param:
- values-string:
- portValue: :<!property.port>
-
-### Set default url
-- command: SetValue
- id: set-url
- param:
- values-string:
- urlValue: <!property.scheme>://<!property.host><!property.portValue>
- urlMessage: 'URL: <!property.scheme>://<!property.host><!property.portValue>\n'
- enableDevTool: 'false'
-
-### Gradle Read
-- command: FileRead
- id: gradle-read
- param:
- showPrint: false
- path: <!property.gradlePath>
- setContent: <@property.gradle>
-
-### Set Signing Option
-- command: StringReplace
- id: append-sign
- param:
- showPrint: false
- text: <!property.gradle>
- pair:
- - from: android {
- to: |
- android {
- signingConfigs {
- Lt {
- storeFile file("keystore.dat")
- storePassword "123456"
- keyAlias "kingkor"
- keyPassword "123456"
- }
- }
- setValue: <@property.gradle>
-
-### Replace http url
-- command: StringReplace
- id: replace-http-url
- param:
- showPrint: true
- text: <!property.urlValue>
- pair:
- - from: https://
- to: http://
- setValue: <@property.httpUrlValue>
-
-### Replace url
-- command: StringReplace
- id: replace-url
- param:
- showPrint: true
- text: <!property.envValue>
- pair:
- - from: '{HTTP_URL}'
- to: <!property.httpUrlValue>
- - from: '{URL}'
- to: <!property.urlValue>
- - from: '{ENABLE_DEVTOOL}'
- to: <!property.enableDevTool>
- setValue: <@property.envValue>
-
-### Replace env
-- command: StringReplacePattern
- id: replace-env
- param:
- startAt: 0
- showPrint: true
- startPattern: 'lt {'
- endPattern: ' }'
- text: <!property.gradle>
- value: <!property.envValue>
- setValue: <@property.gradle>
-
-### Gradle Write
-- command: FileWrite
- id: gradle-write
- param:
- path: <!property.gradlePath>
- content: <!property.gradle>
-
-### App ID Message
-- command: SetValue
- id: set-appid-message
- param:
- values-string:
- appIDMessage: '변경된 App ID: com.lguplus.mobile.cs.<!property.appID>\n'
-
-### Strings Read
-- command: FileRead
- id: strings-read
- param:
- showPrint: false
- path: <!property.stringsPath>
- setContent: <@property.strings>
-
-### Replace App Name
-- command: StringReplace
- id: app-rename
- param:
- showPrint: false
- text: <!property.strings>
- pair:
- - from: <string name="app_name">당신의 U+</string>
- to: <string name="app_name">당유(<!property.appID>)</string>
- setValue: <@property.strings>
-
-### Strings Write
-- command: FileWrite
- id: strings-write
- param:
- path: <!property.stringsPath>
- content: <!property.strings>
-
-### Manifest Read
-- command: FileRead
- id: manifest-read
- param:
- showPrint: false
- path: <!property.manifestPath>
- setContent: <@property.manifest>
-
-### Replace Icon
-- command: StringReplace
- id: replace-icon
- param:
- showPrint: false
- text: <!property.manifest>
- pair:
- - from: android:icon="@drawable/ic_launcher"
- to: android:icon="@drawable/ic_launcher_dev"
- setValue: <@property.manifest>
-
-### Replace Permission
-- command: StringReplace
- id: replace-permission
- param:
- showPrint: false
- text: <!property.manifest>
- pair:
- - from: </application>
- to: |
- </application>
-
- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage"/>
-
- setValue: <@property.manifest>
-
-### Manifest Write
-- command: FileWrite
- id: manifest-write
- param:
- path: <!property.manifestPath>
- content: <!property.manifest>
-
-### Files Listing
-- command: Files
- id: files
- param:
- path: <!property.workspace>/app
- recursive: true
- ignoreRegExs:
- - ^.*\/\.[a-zA-Z0-9_-]+\/.* # .git .idea etc..
- - ^.*\.(png|jpg|jpeg|gif|bmp)$ # image files
- - ^.*\.(txt|so|mk|crt|ttf)$ # ignore ext
- - /build/
- - /buildScript/
- - /schemas/
- - /libs/
- - /aars/
- - /mobileCS/
- - /.DS_Store
- - /proguard-rules.pro
- - /lint.xml
- - /.gitignore
- setFiles: <@property.files>
-
-### File Read
-- command: FileRead
- id: file-read
- param:
- showPrint: false
- path: <!property.file>
- setContent: <@property.fileContent>
-
-### Replace Package
-- command: StringReplace
- id: replace-package
- param:
- showPrint: false
- text: <!property.fileContent>
- pair:
- - from: com.lguplus.mobile.cs
- to: com.lguplus.mobile.cs.<!property.appID>
- setValue: <@property.fileContent>
-
-### Strings Write
-- command: FileWrite
- id: file-write
- param:
- path: <!property.file>
- content: <!property.fileContent>
-
-### Print
-- command: Print
- id: print
- param:
- message: 'File: <!property.file>'
-
-### Set Config
-- command: StringReplace
- id: set-config
- param:
- showPrint: false
- text: <!property.config>
- pair:
- - from: GIT_HASH
- to: ${GIT_COMMIT}
- - from: BUILD_DATE
- to: <!property.date>
- setValue: <@property.config>
-
-### Write Config
-- command: FileWrite
- id: write-config
- param:
- path: <!property.workspace>/app/src/main/assets/config.json
- content: <!property.config>
-
-### Build Gradle
-- command: Shell
- id: build
- param:
- commands:
- - ./gradlew clean assembleLt
-
-### Build Files Listing
-- command: Files
- id: files-build
- param:
- path: <!property.workspace>/app/build/outputs/apk/mobileCS/lt
- recursive: false
- setFiles: <@property.files>
-
-### Read build meta
-- command: JsonReaderFile
- id: read-build-meta
- param:
- path: <!property.fileBuild>
- pair:
- - from: elements[0].versionCode
- setValue: <@property.versionCode>
- - from: elements[0].versionName
- setValue: <@property.versionName>
- - from: elements[0].outputFile
- setValue: <@property.fileBuildName>
- - from: elements[0].outputFile
- setValue: <@property.fileBuildReplacedName>
-
-### Replace file name
-- command: StringReplace
- id: replace-file-name
- param:
- showPrint: false
- text: <!property.fileBuildName>
- pair:
- - from: '_lt_'
- to: '_<!property.host>_'
- setValue: <@property.fileBuildReplacedName>
-
-### Rename Build File
-- command: Rename
- id: rename-build-file
- param:
- renameMap:
- <!property.workspace>/app/build/outputs/apk/mobileCS/lt/<!property.fileBuildName>: <!property.workspace>/app/build/outputs/apk/mobileCS/lt/<!property.fileBuildReplacedName>
-
-### Set File Name
-- command: StringReplace
- id: set-file-name
- param:
- showPrint: false
- text: <!property.fileUrl>
- pair:
- - from: '{FILE}'
- to: <!property.fileBuildReplacedName>
- setValue: <@property.fileUrl>
-
-### Set Slack Message
-- command: StringReplace
- id: set-slack-message
- param:
- showPrint: false
- text: <!property.slackMessageJson>
- pair:
- - from: '{SLACK_MESSAGE}'
- to: <!property.slackMessageAdd>
- - from: '{APPID}'
- to: <!property.appIDMessage>
- - from: '{DATE}'
- to: <!property.date>
- - from: '{VERSION}'
- to: <!property.versionName>
- - from: '{VERSION_CODE}'
- to: <!property.versionCode>
- - from: '{URL}'
- to: <!property.urlMessage>
- - from: '{DEVTOOL}'
- to: <!property.enableDevTool>
- - from: '{FILE_URL}'
- to: <!property.fileUrl>
- setValue: <@property.slackMessageJson>
-
-### Set Slack Message to empty
-- command: SetValue
- id: set-slack-message-empty
- param:
- values-string:
- slackMessageAdd: ''
-
-### Slack
-- command: Slack
- id: slack
- param:
- token: xoxb-3457711939825-8629587578534-ysH4Q5R0lM8gdgJ8dx3z6xI7
- messageJson: <!property.slackMessageJson>
- idMap:
- 박형윤: U03L21XV6LE
- 이동명: U05A94D57RS
- 심재진: U03L8HZCN75
- 이미영: U04H7HMV4R2
- 김시형: U03LYCJ1XU0
- 김가영: U050BN7EH8W
- 김낙운: U05DRP0N295
- 한희경: U03KU1YJUG7
- false
-
-
-
-
-
- 2
-
-
- https://gitlab.uhdcsre.com/app-developer/lgup-mcs-aos.git
- bfd6fb6a-e36e-4d12-87a8-4c6ca93bc28b
-
-
-
-
- */${branch}
-
-
- false
-
-
-
- mac-mini-m2
- false
- false
- false
- false
-
- false
-
-
- # Load .zprofile if it exists
-if [ -f ~/.zprofile ]; then
- source ~/.zprofile
-fi
-
-# Load .bash_profile if it exists
-if [ -f ~/.bash_profile ]; then
- source ~/.bash_profile
-fi
-
-# Load .bashrc if it exists (optional)
-if [ -f ~/.bashrc ]; then
- source ~/.bashrc
-fi
-
-# Load .zshrc if it exists (optional)
-if [ -f ~/.zshrc ]; then
- source ~/.zshrc
-fi
-
-echo $PATH
-BASEDIR=$(dirname $0)
-#echo "===> Script location: ${BASEDIR}"
-#cd ${BASEDIR}/../../..
-echo "===> Build Project Path: ${PWD}"
-
-echo ${BUILD_USER}
-echo ${BUILD_USER_ID}
-
-oto exe -j
-
-
-
-
-
- app/build/outputs/apk/mobileCS/lt/*.apk
- false
- false
- false
- true
- true
- false
-
-
-
-
- xterm
-
-
-
\ No newline at end of file
diff --git a/assets/example.yaml b/assets/example.yaml
deleted file mode 100644
index 8d57f4d..0000000
--- a/assets/example.yaml
+++ /dev/null
@@ -1,93 +0,0 @@
----
-import:
- - #외부 정의 파이프라인 로드
-
-#전역 변수(