yaml 파일로 읽어 실행
This commit is contained in:
parent
daa70e44f2
commit
769ccbad16
6 changed files with 110 additions and 51 deletions
9
.vscode/launch.json
vendored
9
.vscode/launch.json
vendored
|
|
@ -23,7 +23,14 @@
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"type": "dart",
|
"type": "dart",
|
||||||
"program": "./bin/main.dart",
|
"program": "./bin/main.dart",
|
||||||
"args": ["exe", "-j", "-t"]
|
"args": ["exe", "-f ./build_win.yaml"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "test",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "dart",
|
||||||
|
"program": "./test/test.dart",
|
||||||
|
"args": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
30
build_win.yaml
Normal file
30
build_win.yaml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
common:
|
||||||
|
workspace: "."
|
||||||
|
|
||||||
|
commands:
|
||||||
|
### Version 쓰기
|
||||||
|
- command: CreateAppData
|
||||||
|
param:
|
||||||
|
scm: Git
|
||||||
|
name: OTO
|
||||||
|
relativeAssetPath: assets/data
|
||||||
|
returnVersion: "<!common.version>"
|
||||||
|
returnHash: "<!common.hash>"
|
||||||
|
|
||||||
|
### 프로젝트 패키지 업데이트
|
||||||
|
- command: BuildDart
|
||||||
|
param: {}
|
||||||
|
|
||||||
|
### 실행가능한 파일로 빌드
|
||||||
|
- command: BuildDartCompile
|
||||||
|
param:
|
||||||
|
targetDartFile: "./bin/main.dart"
|
||||||
|
buildFileName: oto_cli
|
||||||
|
|
||||||
|
### 최종 zip 파일 형태로 저장
|
||||||
|
- command: Zip
|
||||||
|
param:
|
||||||
|
zipFile: "<!common.workspace>/release/oto_win_v<!common.version>.zip"
|
||||||
|
zipList:
|
||||||
|
- "<!common.workspace>/release/oto_cli.exe"
|
||||||
|
|
@ -23,8 +23,8 @@ class CommandExe extends CommandBase {
|
||||||
startJenkinsBuild(parameters.contains('-t'));
|
startJenkinsBuild(parameters.contains('-t'));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (item.startsWith('-f ')) {
|
if (item.startsWith('-f')) {
|
||||||
startYaml(item.replaceFirst('-f ', ''));
|
startYaml(item.replaceFirst('-f', '').trimLeft());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -32,15 +32,18 @@ class CommandExe extends CommandBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
void startJenkinsBuild(bool isTest) {
|
void startJenkinsBuild(bool isTest) {
|
||||||
Application.instance.build(isTest);
|
Application.instance.build(isTest ? BuildType.test : BuildType.jenkins);
|
||||||
}
|
}
|
||||||
|
|
||||||
void startYaml(String target) {
|
void startYaml(String target) {
|
||||||
var file = File(target);
|
var file = File(target);
|
||||||
if (file.existsSync()) {
|
if (file.existsSync()) {
|
||||||
|
Application.instance
|
||||||
|
.build(BuildType.file, yamlContent: file.readAsStringSync());
|
||||||
} else {
|
} else {
|
||||||
print(
|
CLI.print([
|
||||||
CLI.style('There are no files in path "$target"', color: Color.red));
|
CLI.style('There are no files in path "$target"', color: Color.red)
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@ import 'package:oto_cli/oto/data/data.dart';
|
||||||
import 'package:oto_cli/oto/data/jenkins_data.dart';
|
import 'package:oto_cli/oto/data/jenkins_data.dart';
|
||||||
import 'package:oto_cli/oto/test_data.dart';
|
import 'package:oto_cli/oto/test_data.dart';
|
||||||
|
|
||||||
|
enum BuildType { jenkins, test, file }
|
||||||
|
|
||||||
class Application {
|
class Application {
|
||||||
Application._privateConstructor();
|
Application._privateConstructor();
|
||||||
static final Application _instance = Application._privateConstructor();
|
static final Application _instance = Application._privateConstructor();
|
||||||
|
|
@ -21,7 +23,7 @@ class Application {
|
||||||
return _jenkinsData;
|
return _jenkinsData;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> build(bool isTest) async {
|
Future<void> build(BuildType buildType, {String? yamlContent}) async {
|
||||||
// await test();
|
// await test();
|
||||||
// return;
|
// return;
|
||||||
|
|
||||||
|
|
@ -29,49 +31,51 @@ class Application {
|
||||||
Map<String, dynamic>? jenkinsMap;
|
Map<String, dynamic>? jenkinsMap;
|
||||||
// var envArgs = envArguments(arguments);
|
// var envArgs = envArguments(arguments);
|
||||||
// bool isTest = envArgs.containsKey('isTest'); //for Unit Test
|
// bool isTest = envArgs.containsKey('isTest'); //for Unit Test
|
||||||
if (isTest) {
|
switch (buildType) {
|
||||||
//Test map
|
case BuildType.test:
|
||||||
buildMap = TestData.buildMap;
|
//Test map
|
||||||
jenkinsMap = TestData.jenkinsMap!;
|
buildMap = TestData.buildMap;
|
||||||
print('Start test build...');
|
_jenkinsData = DataJenkins.fromJson(TestData.jenkinsMap!);
|
||||||
} else {
|
print('Start test build...');
|
||||||
String os = Platform.operatingSystem;
|
break;
|
||||||
var enable = true;
|
|
||||||
print('Current OS: $os');
|
case BuildType.jenkins:
|
||||||
print('Start build...');
|
String os = Platform.operatingSystem;
|
||||||
String jsonStr = '';
|
var enable = true;
|
||||||
if (Platform.isMacOS || Platform.isLinux) {
|
print('Current OS: $os');
|
||||||
await Process.run('zsh', [
|
print('Start build...');
|
||||||
'${Directory.current.path}/assets/script/shell/jenkins_env_params.sh'
|
String jsonStr = '';
|
||||||
]).then((ProcessResult result) => jsonStr = result.stdout);
|
if (Platform.isMacOS || Platform.isLinux) {
|
||||||
jenkinsMap = getMapFromJson(jsonStr)!;
|
await Process.run('zsh', [
|
||||||
} else if (Platform.isWindows) {
|
'${Directory.current.path}/assets/script/shell/jenkins_env_params.sh'
|
||||||
print('Win Test!!');
|
]).then((ProcessResult result) => jsonStr = result.stdout);
|
||||||
await Process.run('cmd', [
|
jenkinsMap = getMapFromJson(jsonStr)!;
|
||||||
'/C',
|
} else if (Platform.isWindows) {
|
||||||
'${Directory.current.path}/assets/script/batch/jenkins_env_params.bat'
|
await Process.run('cmd', [
|
||||||
]).then((ProcessResult result) => jsonStr = result.stdout);
|
'/C',
|
||||||
jenkinsMap = getMapFromJson(jsonStr);
|
'${Directory.current.path}/assets/script/batch/jenkins_env_params.bat'
|
||||||
} else {
|
]).then((ProcessResult result) => jsonStr = result.stdout);
|
||||||
enable = false;
|
jenkinsMap = getMapFromJson(jsonStr);
|
||||||
print(
|
} else {
|
||||||
'is not Mac/Windows/Linux. build must be execute in Mac/Windows os system');
|
enable = false;
|
||||||
}
|
print(
|
||||||
if (enable) {
|
'is not Mac/Windows/Linux. build must be execute in Mac/Windows os system');
|
||||||
printBuildStep('Jenkins Variables');
|
}
|
||||||
print(jsonStr);
|
if (enable) {
|
||||||
}
|
printBuildStep('Jenkins Variables');
|
||||||
|
print(jsonStr);
|
||||||
|
}
|
||||||
|
buildMap = getMapFromYaml(await getBuildData());
|
||||||
|
_jenkinsData = DataJenkins.fromJson(jenkinsMap!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BuildType.file:
|
||||||
|
buildMap = getMapFromYaml(yamlContent!);
|
||||||
|
_jenkinsData = DataJenkins.fromJson(TestData.jenkinsMap!);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jenkinsMap != null) {
|
await execute(buildMap!);
|
||||||
_jenkinsData = DataJenkins.fromJson(jenkinsMap);
|
|
||||||
if (!isTest) {
|
|
||||||
var buildStr = await getBuildData();
|
|
||||||
buildMap = getMapFromYaml(buildStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
await execute(buildMap!);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> execute(Map<String, dynamic> buildMap) async {
|
Future<void> execute(Map<String, dynamic> buildMap) async {
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@ dependencies:
|
||||||
ref: master
|
ref: master
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
lints: ^2.0.0
|
lints: ^3.0.0
|
||||||
test: ^1.21.0
|
test: ^1.24.9
|
||||||
build_runner: ^2.1.4
|
build_runner: ^2.1.4
|
||||||
json_serializable: ^6.0.1
|
json_serializable: ^6.0.1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,20 @@
|
||||||
import 'package:test/test.dart';
|
import 'package:test/test.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
test('calculate', () {});
|
setUp(() async {
|
||||||
|
print('[SetUp] Set up initalize enviroments');
|
||||||
|
});
|
||||||
|
group('CLI', () {
|
||||||
|
test('calculate', () {
|
||||||
|
expect(2 + 3, equals(5));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('calculate2', () {
|
||||||
|
expect(2 + 3, equals(6));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
tearDown(() {
|
||||||
|
print('[TearDown] Post process. this doing event failed');
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue