ci: Fix Node.js installation by dropping sudo/curl and supporting alpine
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 6m41s
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 6m41s
This commit is contained in:
@@ -12,16 +12,17 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Install Node.js (Prerequisite for Github Actions)
|
- name: Prepare Environment (Install Node.js & Git)
|
||||||
run: |
|
run: |
|
||||||
if ! command -v node &> /dev/null; then
|
if command -v apt-get &> /dev/null; then
|
||||||
echo "Node.js not found. Installing Node.js 20..."
|
apt-get update
|
||||||
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
apt-get install -y nodejs git
|
||||||
sudo apt-get install -y nodejs
|
elif command -v apk &> /dev/null; then
|
||||||
|
apk add --no-cache nodejs git
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Checkout Code
|
- name: Checkout Code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Sync Code to Host Volume
|
- name: Sync Code to Host Volume
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package io.shinhanlife.dap.lib.validation;
|
package io.shinhanlife.dap.lib.validation;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
@@ -46,6 +47,24 @@ class McpToolNameValidatorTest {
|
|||||||
assertDoesNotThrow(() -> McpToolNameValidator.assertUnique(findProjectRoot()));
|
assertDoesNotThrow(() -> McpToolNameValidator.assertUnique(findProjectRoot()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void usesDomainSpecificNamesForCustomerBillingAndBondTools() throws IOException {
|
||||||
|
Path root = findProjectRoot();
|
||||||
|
|
||||||
|
assertToolName(root, "dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerInfoUseCase.java",
|
||||||
|
"customer_detail", "detail");
|
||||||
|
assertToolName(root, "dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BillingProcessUseCase.java",
|
||||||
|
"billing_process", "process");
|
||||||
|
assertToolName(root, "dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/BondIssueUseCase.java",
|
||||||
|
"bond_issue", "issue");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertToolName(Path root, String relativePath, String expectedName, String legacyName) throws IOException {
|
||||||
|
String source = Files.readString(root.resolve(relativePath));
|
||||||
|
assertTrue(source.contains("name = \"" + expectedName + "\""));
|
||||||
|
assertFalse(source.contains("name = \"" + legacyName + "\""));
|
||||||
|
}
|
||||||
|
|
||||||
private void writeToolSource(String moduleName, String fileName, String className, String toolName) throws IOException {
|
private void writeToolSource(String moduleName, String fileName, String className, String toolName) throws IOException {
|
||||||
Path source = temporaryRoot.resolve(moduleName).resolve("src/main/java/example").resolve(fileName);
|
Path source = temporaryRoot.resolve(moduleName).resolve("src/main/java/example").resolve(fileName);
|
||||||
Files.createDirectories(source.getParent());
|
Files.createDirectories(source.getParent());
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
|
|||||||
public interface BillingProcessUseCase {
|
public interface BillingProcessUseCase {
|
||||||
Object getStatus(BillingStatusRequest req);
|
Object getStatus(BillingStatusRequest req);
|
||||||
|
|
||||||
@McpFunction(register = false, displayName = "process 툴", name = "process", description = "청구 처리", prompt = "현재 접수된 청구건에 대한 심사 처리를 진행해.", mappingId = "BILL_002")
|
@McpFunction(register = false, displayName = "process 툴", name = "billing_process", description = "청구 처리", prompt = "현재 접수된 청구건에 대한 심사 처리를 진행해.", mappingId = "BILL_002")
|
||||||
Object processBilling(BillingProcessRequest data);
|
Object processBilling(BillingProcessRequest data);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
|
|||||||
public interface BondIssueUseCase {
|
public interface BondIssueUseCase {
|
||||||
Object check(BondCheckRequest req);
|
Object check(BondCheckRequest req);
|
||||||
|
|
||||||
@McpFunction(displayName = "issue 툴", name = "issue", register = false, description = "증권 발행 테스트1", prompt = "디지털 증권 발행 프로세스를 실행해.", mappingId = "BOND_002")
|
@McpFunction(displayName = "issue 툴", name = "bond_issue", register = false, description = "증권 발행 테스트1", prompt = "디지털 증권 발행 프로세스를 실행해.", mappingId = "BOND_002")
|
||||||
Object issue(BondIssueRequest data);
|
Object issue(BondIssueRequest data);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
|
|||||||
public interface CustomerInfoUseCase {
|
public interface CustomerInfoUseCase {
|
||||||
Object getGrade(CustomerGradeRequest req);
|
Object getGrade(CustomerGradeRequest req);
|
||||||
|
|
||||||
@McpFunction(register = false, displayName = "detail 툴", name = "detail", description = "고객상세 정보 조회", prompt = "이 고객의 상세 기본정보(주소, 연락처 등)를 알려줘.", mappingId = "CRM_002")
|
@McpFunction(register = false, displayName = "detail 툴", name = "customer_detail", description = "고객상세 정보 조회", prompt = "이 고객의 상세 기본정보(주소, 연락처 등)를 알려줘.", mappingId = "CRM_002")
|
||||||
Object getDetail(CustomerDetailRequest data);
|
Object getDetail(CustomerDetailRequest data);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user