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 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: |

View File

@@ -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());

View File

@@ -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);
} }

View File

@@ -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);
} }

View File

@@ -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);
} }