Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/dev-server-cicd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ jobs:
./gradlew build
shell: bash


- name: Configure AWS credentials
if: ${{ github.ref == 'refs/heads/develop'}}
uses: aws-actions/configure-aws-credentials@v4
Expand Down Expand Up @@ -72,4 +73,4 @@ jobs:
--deployment-config-name CodeDeployDefault.AllAtOnce \
--deployment-group-name ${{ secrets.AWS_CODEDEPLOY_DEV_GROUP_NAME }} \
--file-exists-behavior OVERWRITE \
--s3-location bucket=${{ secrets.AWS_S3_DEPLOY_DEV_BUCKET_NAME }},bundleType=zip,key=deploy.zip
--s3-location bucket=${{ secrets.AWS_S3_DEPLOY_DEV_BUCKET_NAME }},bundleType=zip,key=deploy.zip
4 changes: 2 additions & 2 deletions .github/workflows/prod-server-cicd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
- name: Upload build file to S3 and trigger CodeDeploy
if: ${{ github.ref == 'refs/heads/main' }}
run: |
mkdir -p deploy && cp -r deploy-main/* deploy/
mkdir -p deploy && cp -r deploy-prod/* deploy/
zip -r deploy.zip deploy

aws s3 cp deploy.zip s3://${{ secrets.AWS_S3_DEPLOY_PROD_BUCKET_NAME }}/deploy.zip
Expand All @@ -72,4 +72,4 @@ jobs:
--deployment-config-name CodeDeployDefault.AllAtOnce \
--deployment-group-name ${{ secrets.AWS_CODEDEPLOY_PROD_GROUP_NAME }} \
--file-exists-behavior OVERWRITE \
--s3-location bucket=${{ secrets.AWS_S3_DEPLOY_PROD_BUCKET_NAME }},bundleType=zip,key=deploy.zip
--s3-location bucket=${{ secrets.AWS_S3_DEPLOY_PROD_BUCKET_NAME }},bundleType=zip,key=deploy.zip
28 changes: 26 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ plugins {
id 'org.asciidoctor.jvm.convert' version '3.3.2'
}

group = 'store.undabang'
group = 'com.project200'
version = '0.0.1-SNAPSHOT'

java {
Expand All @@ -18,6 +18,9 @@ configurations {
compileOnly {
extendsFrom annotationProcessor
}

asciidoctorExt
mockitoAgent
}

repositories {
Expand All @@ -26,6 +29,7 @@ repositories {

ext {
set('snippetsDir', file("build/generated-snippets"))
springRestDocsVersion = '3.0.3'
}

dependencies {
Expand All @@ -42,14 +46,34 @@ dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
asciidoctorExt "org.springframework.restdocs:spring-restdocs-asciidoctor:${springRestDocsVersion}"

mockitoAgent('org.mockito:mockito-core') {
transitive = false
}

}

tasks.named('test') {
outputs.dir snippetsDir
useJUnitPlatform()
jvmArgs("-javaagent:${configurations.mockitoAgent.asPath}")
}

tasks.named('asciidoctor') {
configurations 'asciidoctorExt'
inputs.dir snippetsDir
dependsOn test
sourceDir file('src/docs/asciidoc')
attributes([
'snippets': snippetsDir
])
dependsOn tasks.named('test')
}

// 생성된 문서를 JAR에 포함시키기
bootJar {
dependsOn tasks.named('asciidoctor') // asciidoctor 작업이 먼저 실행되도록 보장
from("${tasks.named('asciidoctor').get().outputDir}") { // AsciidoctorTask의 outputDir 사용
into 'static/docs'
}
}
2 changes: 1 addition & 1 deletion compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ services:
- 'MYSQL_ROOT_PASSWORD=verysecret'
- 'MYSQL_USER=myuser'
ports:
- '3306'
- '3306'
File renamed without changes.
37 changes: 37 additions & 0 deletions documents/Docker Compose MySQL에 외부 도구로 연결하기.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
## Docker Compose MySQL에 외부 도구로 연결하기
### 1. 현재 포트 확인하기
현재 파일에서 MySQL 포트가 `- '3306'` 형태로 설정되어 있습니다. 이는 Docker가 호스트의 랜덤 포트에 MySQL의 3306 포트를 매핑한다는 의미입니다. 먼저 실제 매핑된 포트를 확인해야 합니다: `compose.yaml`
``` bash
docker ps
```
또는
``` bash
docker-compose ps
```
명령어를 실행하면 다음과 비슷한 출력이 표시됩니다:
```
NAME IMAGE ... PORTS ...
mysql mysql:latest ... 0.0.0.0:32769->3306/tcp ...
```
여기서 32769는 호스트 머신에서 MySQL에 접근할 수 있는 포트 번호입니다.
### 2. 데이터그립에서 연결하기
1. 데이터그립을 실행하고 새 데이터 소스를 생성합니다.
2. MySQL을 선택합니다.
3. 다음 정보를 입력합니다:
- 호스트(Host): localhost
- 포트(Port): 32769 (또는 `docker ps` 명령어로 확인한 포트)
- 사용자(User): 일반 사용자 접속은 `myuser`, 관리자 접속은 `root`
- 비밀번호(Password): 일반 사용자는 `secret`, root 사용자는 `verysecret`
- 데이터베이스(Database): `mydatabase`

4. '테스트 연결'을 클릭하여 연결이 성공하는지 확인합니다.

### 3. MySQL 콘솔로 연결하기
터미널이나 명령 프롬프트에서:
``` bash
# 일반 사용자로 연결
mysql -h127.0.0.1 -P32769 -umyuser -psecret mydatabase

# 또는 root 사용자로 연결
mysql -h127.0.0.1 -P32769 -uroot -pverysecret
```
51 changes: 51 additions & 0 deletions documents/JUnit5ExampleTests.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.project200.undabang;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.restdocs.RestDocumentationContextProvider;
import org.springframework.restdocs.RestDocumentationExtension;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration;
import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath;
import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields;
import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName;
import static org.springframework.restdocs.request.RequestDocumentation.pathParameters;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@ExtendWith({RestDocumentationExtension.class, SpringExtension.class})
@AutoConfigureRestDocs
@SpringBootTest
public class JUnit5ExampleTests {

private MockMvc mockMvc;

@BeforeEach
void setUp(WebApplicationContext webApplicationContext, RestDocumentationContextProvider restDocumentation) {
this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext)
.apply(documentationConfiguration(restDocumentation)) // REST Docs 기능 적용
.build();
}

@Test
public void testExample() throws Exception {
this.mockMvc.perform(get("/api/items/{id}", 1L).accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(document("items/get-by-id", // operation-identifier
pathParameters(parameterWithName("id").description("조회할 아이템의 ID")),
responseFields(
fieldWithPath("id").description("아이템의 고유 식별자"),
fieldWithPath("name").description("아이템의 이름")
)
));
}
}
Binary file added documents/Spring REST Docs 설정 방법.docx
Binary file not shown.
Loading