๐ฅ๏ธ ๋ฐฑ์๋63 ์ด์ 1 2 3 4 5 ยทยทยท 9 ๋ค์ [CICD] Github Actions์ ๋ค์ํ ๊ธฐ๋ฅ 2. Github Actions์ ๋ค์ํ ๊ธฐ๋ฅ 1. checkout github repository๋ฅผ ๊ฐ์ ธ์์ ์์ ์ ์ํํ ์ ์๋๋ก ํ๋ ์ก์ ๋ง์ผํ๋ ์ด์ค ๊ณต์ ์ก์ ํ์ํ ํ ์คํธ๋ ๋น๋ ์์ ๋ฑ์ ์ํํ ์ ์์ ๋ ํฌ์งํ ๋ฆฌ ๋ด์ฉ์ CICD ์ํฌํ๋ก์ฐ์์ ์ฌ์ฉํ ์ ์์ uses ํค์๋๋ก ์ก์ ์ ๋ถ๋ฌ์ฌ ์ ์์ name: checkout on: workflow_dispatch jobs: no-checkout: runs-on: ubuntu-latest steps: - name: check file list run: cat README.md checkout: runs-on: ubuntu-latest steps: - name: use checkout action uses: actions/checkout@v.. 2024. 3. 22. [CICD] Github Actions์ event Github Actions์ event 1. push ๋ ํ์งํ ๋ฆฌ / .github / workflows / push.yaml ํ์ผ ์์ฑํ๊ธฐ push.yaml name : ์ก์ ์ฐฝ์์ ํํ ๋ ์๊ฐํ ์ด๋ฆ on : ์ํฌํ๋ก์ฐ ํธ๋ฆฌ๊ฑฐ ํ ์ด๋ฒคํธ. ํธ๋ฆฌ๊ฑฐ ํ์ jobs : ์คํ์ํฌ job์ ์งํฉ. ํ์ custom-job-name : job์ด๋ฆ์ ์์ runs on : job์ ์คํ์ํฌ runner ์ง์ ํ๊ธฐ steps : step์ ์งํฉ - name : job์ด ์คํ์ํฌ ์คํญ ์ ์ํ๊ธฐ. ์คํญ๋ง๋ค ์ด๋ฆ์ ๋ช ์์ ์ผ๋ก ์์ฑ/์๋ต ๊ฐ๋ฅ run : step์์ ์คํํ ๋ด์ฉ. |๋ฅผ ์ด์ฉํ๋ฉด ๋ฉํฐ๋ผ์ธ ์ปค๋งจ๋ ์์ฑ ๊ฐ๋ฅ name: push-workflow on: push jobs: push-job: runs-on: ubun.. 2024. 3. 21. [CICD] ๊นํ๋ธ ์ก์ ์ปดํฌ๋ํธ GitHub Action 2023๋ ๋ง์ด ์ฌ์ฉํ๋ CICD๋๊ตฌ 1์ GitHub์ ์๋ํ ๋๊ตฌ ๋จ์ํ ์ํฌํ๋ก์ฐ ~ ๋ณต์กํ ์ํฌํ๋ก์ฐ ๊ตฌ์ถ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ ์๋ํ GitHub ์ ์ฅ์ ๋ด์์ ์ํฌํ๋ก์ฐ๋ฅผ ์ง์ ๊ด๋ฆฌํ ์ ์์ YAML์ ์ด์ฉํด์ ์ํฌํ๋ก์ฐ๋ฅผ ์ฝ๊ฒ ์ค์ ํ ์ ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋จํ๊ฒ ํํํ ์ง๋ ฌํ ์ธ์ด .yml .yaml ํน์ง ๋ค์ํ ์ด๋ฒคํธ(๊นํ๋ธ ์ด๋ฒคํธ)์ ๋ฐ๋ผ ์ํฌํ๋ก์ฐ ์คํ ๊นํ์ก์ ์ปดํฌ๋ํธ workflow ํ๋ ์ด์์ ์์ ์ ์คํํ๋, ๊ตฌ์ฑ ๊ฐ๋ฅํ ์๋ํ ํ๋ก์ธ์ค .github/workflows ๊ฒฝ๋ก์ ํ์ผ์ด ์์ด์ผ ์คํ ๊ฐ๋ฅํจ ์ฌ๋ฌ ์ํฌํ๋ก์ฐ ์์ฑ ๋ฐ ์ฌ์ฉ ๊ฐ๋ฅ ์ด๋ฒคํธ ๋ฐ์์ ์คํ๋จ event ์ํฌํ๋ก์ฐ ์คํ์ ํธ๋ฆฌ๊ฑฐํ๋ ๊นํ๋ธ ๋ ํฌ์งํ ๋ฆฌ ๋ด ํน์ ํ๋ ํธ๋ฆฌ๊ฑฐ ๋ฐฉ์ :.. 2024. 3. 21. [AWS] CloudFront - ELB - S3/EC2 ์ฐ๊ฒฐํ๊ธฐ ๊ฐ์๋ฅผ ๋ง์น๊ณ ์๊ธด ์๋ฌธ์ ์ธํ๋ฐ์ ๋น์ ๊ณต์๋ ์ดํดํ ์ ์๋ AWS ์ ๋ฌธ/์ค์ ๊ฐ์๋ CH.3 ์์ ACM์ธ์ฆ์๋ก ELB๋ฅผ ํตํ HTTPS ํต์ ์ ๋ฐฐ์ฐ๊ณ CH.6 ์์ CloudFront๋ HTTPS๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ฅด์ณ ์ค๋ค. CH.6 ์น ํ์ด์ง ๋ฐฐํฌํ๊ธฐ (S3, CloudFront) ๊ณผ์ ์์๋ ๋๋ฉ์ธ ํธ์คํ ์์ญ์์ ์์ธ์ธ์ฆ์์ A๋ ์ฝ๋๋ฅผ ์ญ์ ํ๊ณ ๋ฒ์ง๋์์ธ์ฆ์๋ฅผ ์ฐ๊ฒฐํ๋ค (CloudFront๋ ๋ฒ์ง๋์๋ง ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์) ๊ฐ์๊ฐ ๋๋๊ณ ๋๋ฉ์ธ์์ ์ญ์ ๋ ์์ธ์ธ์ฆ์(ELB๋ฅผ ์ํ)๋ ์ด๋์ ์ฌ์ฉํ๋๊ฐ? CloudFront ์ ELB ๋ฅผ ๋์์ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ๋์ง ๊ถ๊ธํ๊ธฐ๋ ํ๊ณ , ๋ด ํ๋ก์ ํธ์ ์บ์ฑ ๋ฐ ๋ก๋๋ฐธ๋ฐ์๋ ๊ผญ ์ด์ฉํด๋ณด๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๊ฒ ๋์๋ค. ํด๊ฒฐ ๊ณผ์ [1] .. 2024. 3. 21. [์ธ์ฆ๋ฒํธ] sms ๋ฌธ์ ๋ฐ์ก ๊ตฌํ - ์ฟจ์์ค์ ์์ค (2024) ์ผ๊ฒฝํ ๋ง์ง๋ง API ๊ณผ์ ์ค ํ๋์๋ ๋ฌธ์๋ก ํ์๊ฐ์ ์ธ์ฆ๋ฒํธ ๋ฐ์กํ๊ธฐ ์ฌ๋ฌ ๋ฌธ์๋ฉ์ธ์ง ๋ฐ์ก ์ฌ์ดํธ์ค์ ๋ฌด๋ฃ 300ํฌ์ธํธ๋ฅผ ์ฃผ๋ ์ฟจ์์ค์ ์์ค๋ฅผ ์ ํํจ https://coolsms.co.kr/ ๊ตฌ๊ธ๋ง์ผ๋ก ์ฐพ์ ์ฝ๋๋ค์ ํ์ฌ ์ฟจ์์ค์ ์์ค์์ ์ฌ๋ฆฐ ๊น ์ฝ๋์ ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์์ด์ ์ฟจ์์ค์ ์์ค์ ๊นํ๋ธ๋ฅผ ์ฐธ๊ณ ํ ์ฝ๋๋ก ๊ธ์ ์์ฑํจ ์ฟจ์์ค์ ์์ค ํ์๊ฐ์ ๋ฐ ๋ณธ์ธ์ธ์ฆ ํ๊ธฐ ๋ณธ์ธ์ธ์ฆ์ 300ํฌ์ธํธ ๋ฌด๋ฃ ์ฆ์ ์นด์นด์คํก ์๋ฆผ๋ ๊ฐ๋ฅํ๋ค๊ณ ํจ API Key์ API ๋น๋ฐ๋ฒํธ ํ์ธํ๊ธฐ ๋์๋ณด๋ - ๊ฐ๋ฐ ํญ์์ SDK ์ git repository ํ์ธํ๊ธฐ net.nurigo sdk 4.3.0 ์คํ๋ง ์ฝ๋ private final DefaultMessageService messageService; /** * ๋จ์ผ ๋ฉ์์ง ๋ฐ.. 2024. 2. 29. [Querydsl] ๋์ ์ฟผ๋ฆฌ - Where์์ ๋ค์ค ํ๋ผ๋ฏธํฐ ์ฌ์ฉํ๊ธฐ ๋์ ์ฟผ๋ฆฌ - Where์์ ๋ค์ค ํ๋ผ๋ฏธํฐ ์ฌ์ฉ ์กฐ๋ฆฝ์ ํ ์ ์์, ๋ฉ์๋๋ฅผ ๋ค๋ฅธ ์ฟผ๋ฆฌ์์ ์ฌํ์ฉ ๊ฐ๋ฅํจ ์ฟผ๋ฆฌ ์์ฒด์ ๊ฐ๋ ์ฑ์ด ๋์์ง null ์ฒดํฌ๋ ์ฃผ์ํด์ ์ฒ๋ฆฌํด์ผํจ @Test public void ๋์ ์ฟผ๋ฆฌ_WhereParam() throws Exception { String usernameParam = "member1"; Integer ageParam = 10; List result = searchMember2(usernameParam, ageParam); Assertions.assertThat(result.size()).isEqualTo(1); } private List searchMember2(String usernameCond, Integer ageCond) { return queryFacto.. 2024. 1. 8. [Querydsl] SpringDataJPA + Querydsl + ์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค ์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค ์์ฑ public interface MemberRepositoryCustom { List search(MemberSearchCondition condition); } SpringDataJPA๊ฐ ์ ๊ณตํ๋ ๋ฉ์๋ ์ธ์ ํ์ํ ๋ฉ์๋๊ฐ ์์ ๋ ์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค ๊ตฌํ public class MemberRepositoryImpl implements MemberRepositoryCustom { private final JPAQueryFactory queryFactory; public MemberRepositoryImpl(EntityManager em) { this.queryFactory = new JPAQueryFactory(em); } @Override //ํ์๋ช , ํ๋ช , ๋์ด(ag.. 2024. 1. 7. ์ด์ 1 2 3 4 5 ยทยทยท 9 ๋ค์