@@ -6,7 +6,7 @@ C#으로 구성한 sln을 CI/CD를 통해 자동 빌드 및 테스트 하여 배
66### 목표
77- [x] : 1. 목표 선정
88- [x] : 2. 프로젝트 구성
9- - [ ] : 3. CICD 구성
9+ - [x ] : 3. CICD 구성
1010- [ ] : 4. Build & Deploy Test
1111
1212### 제작자
@@ -86,4 +86,61 @@ C#으로 구성한 sln을 CI/CD를 통해 자동 빌드 및 테스트 하여 배
8686
8787<br ><br >
8888
89- # 3. CICD
89+ # 3. CICD 구성
90+
91+ - CICD를 다음과 같이 구성한다.
92+ - window 환경을 사용하기에, 명령어를 Powershell에 맞게 구성한다.
93+ ``` yml
94+ name : Build and Deploy Test
95+
96+ on :
97+ push :
98+ branches :
99+ - ' main'
100+
101+ jobs :
102+ build :
103+ runs-on : windows-latest # 실행할 runner 환경 지정
104+
105+ steps :
106+ - name : Checkout code
107+ uses : actions/checkout@v2
108+
109+ - name : Setup .NET
110+ uses : actions/setup-dotnet@v1
111+
112+ - name : Build and Test
113+ run : |
114+ cd CSharpTest
115+ dotnet build CSharpTest.sln
116+ dotnet test ./UnitTestProject1/UnitTestProject1.csproj
117+ # 빌드 및 테스트 실패 시 바로 종료
118+ if : ${{ job.status == 'success' }}
119+
120+ - name : Merge commit message
121+ run : |
122+ git log -1 --pretty=%B > message.txt
123+ echo "::set-output name=message::$(Get-Content message.txt)"
124+ id : merge_message
125+
126+ # release 태그로부터 version 정보 추출하여 output으로 설정
127+ - name : Get Release Version
128+ if : startsWith(steps.merge_message.outputs.message, 'Release')
129+ run : |
130+ echo "::set-output name=version::$(("${{steps.merge_message.outputs.message}}" -replace 'Release ', ''))"
131+ id : extract_release_version
132+
133+ - name : Create release tag
134+ if : startsWith(steps.merge_message.outputs.message, 'Release')
135+ uses : actions/create-release@v1
136+ env :
137+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
138+ with :
139+ tag_name : ${{ steps.extract_release_version.outputs.version }}
140+ release_name : Release ${{ steps.extract_release_version.outputs.version }} v${{ github.run_number }}
141+ body : ${{ steps.merge_message.outputs.message }}
142+ draft : false
143+ prerelease : false
144+ ` ` `
145+
146+ <br><br>
0 commit comments