ci: Fix Node.js installation by dropping sudo/curl and supporting alpine
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 6m41s

This commit is contained in:
jade
2026-07-27 13:09:01 +09:00
parent 7b8c38489e
commit c8dd43221e
5 changed files with 29 additions and 9 deletions

View File

@@ -12,16 +12,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Install Node.js (Prerequisite for Github Actions)
- name: Prepare Environment (Install Node.js & Git)
run: |
if ! command -v node &> /dev/null; then
echo "Node.js not found. Installing Node.js 20..."
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
if command -v apt-get &> /dev/null; then
apt-get update
apt-get install -y nodejs git
elif command -v apk &> /dev/null; then
apk add --no-cache nodejs git
fi
- name: Checkout Code
uses: actions/checkout@v4
uses: actions/checkout@v3
- name: Sync Code to Host Volume
run: |

View File

@@ -1,6 +1,7 @@
package io.shinhanlife.dap.lib.validation;
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.assertTrue;
@@ -46,6 +47,24 @@ class McpToolNameValidatorTest {
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 {
Path source = temporaryRoot.resolve(moduleName).resolve("src/main/java/example").resolve(fileName);
Files.createDirectories(source.getParent());

View File

@@ -11,6 +11,6 @@ import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
public interface BillingProcessUseCase {
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);
}

View File

@@ -11,6 +11,6 @@ import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
public interface BondIssueUseCase {
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);
}

View File

@@ -11,6 +11,6 @@ import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
public interface CustomerInfoUseCase {
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);
}