fix: 오타 수정 #24
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
# TODO: PR일 때 코드 커버리지 댓글 추가 | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
# paths: [ 'src/**', 'tests/**', '.github/workflows/dotnet-ci.yml' ] | |
paths-ignore: | |
- '**.md' | |
- '**.pptx' | |
- '**.png' | |
#- '.github/workflows/build-docs.yml' | |
#- 'docs/**' | |
# pull_request: | |
# branches: [ main ] | |
# # 솔루션 테스트 결과 trx 추가 | |
# # - dorny/test-reporter@v1 | |
# # - Error: HttpError: Resource not accessible by integration | |
# permissions: | |
# checks: write | |
# 솔루션 테스트 결과 trx 추가 | |
# - https://github.com/EnricoMi/publish-unit-test-result-action?tab=readme-ov-file#permissions | |
# 2024-12-22 22:46:33 +0000 | |
# - github.GithubRetry | |
# - INFO | |
# - Request POST /repos/hhko/better-code-with-ddd/check-runs failed with 403: Forbidden | |
permissions: | |
checks: write | |
pull-requests: write | |
jobs: | |
build: | |
name: Build | |
# 빌드 환경 경우의 수 정의 | |
strategy: | |
matrix: | |
dotnet-version: [ '9.0.x' ] | |
configuration: [ Release ] | |
os: [ ubuntu-24.04 ] | |
# 빌드 환경 지정 | |
runs-on: ${{ matrix.os }} | |
#runs-on: ubuntu-22.04 | |
# $GITHUB_OUTPUT | |
# $GITHUB_STEP_SUMMARY | |
# 환경 변수 | |
# - 규칙: ${{ env.환경_변수_이름 }} | |
# - 예제: ${{ env.solution_dir }} | |
# 예약 변수 | |
# - ${{ github.workspace }} | |
env: | |
solution_file: ./Template/Hello.sln | |
coverage_in_cobertura_files: ./Template/**/*.cobertura.xml | |
coverage_out_dir: ./Template/.build/coverage/output | |
coverage_out_cobertura_file: ./Template/.build/coverage/cobertura.xml | |
#testresult_dirs: ./Template/**/TestResults/**/* | |
trx_files: ./Template/**/*.trx | |
steps: | |
# 형상관리 최신 소스 받기 | |
- name: Checkout | |
uses: actions/checkout@v4 | |
# Git Commit SHA 얻기 | |
# - Deprecating save-state and set-output commands: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ | |
# - GitHub Actions에서 output 변수의 문법 변경: https://blog.outsider.ne.kr/1651 | |
# - Github Actions and creating a short SHA hash: https://dev.to/hectorleiva/github-actions-and-creating-a-short-sha-hash-8b7 | |
# | |
# 동적 변수 만들기 | |
# 규칙 1. $GITHUB_OUTPUT은 "steps.vars.outputs"을 지정한다. | |
# 규칙 2. "키=값" 형식으로 outputs을 정의한다. | |
# 예. ${{ steps.vars.outputs.short_sha }} | |
- name: Set Short Git Commit SHA | |
id: vars | |
run: | | |
calculatedSha=$(git rev-parse --short ${{ github.sha }}) | |
echo "short_sha=$calculatedSha" >> $GITHUB_OUTPUT | |
# .NET SDK 설치 | |
- name: Setup .NET SDK ${{ matrix.dotnet-version }} | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: ${{ matrix.dotnet-version }} | |
# 솔루션 패키지 복원 | |
- name: Restore NuGet Packages | |
run: | | |
dotnet restore ${{ env.solution_file }} \ | |
--verbosity q | |
# 솔루션 빌드 | |
- name: Build | |
run: | | |
dotnet build ${{ env.solution_file }} \ | |
--no-restore \ | |
--configuration ${{ matrix.configuration }} \ | |
--verbosity q | |
# 솔루션 테스트 | |
# | |
# {테스트 프로젝트} | |
# └─TestResults | |
# ├─0ca60e99-32fb-43ac-bbd3-01f5a5ef6886 : XPlat Code Coverage 폴더 | |
# │ └─coverage.cobertura.xml : 코드 커버리지 파일(dotnet-coverage merge 대상) | |
# ├─{username}_{hostname}_2024-03-14_15_16_30 : trx 로그 폴더 | |
# │ └─In | |
# │ └─{hostname} | |
# │ └─coverage.cobertura.xml : 코드 커버리지 파일(사용 안함, Junit 로그 생성시 자동 생성됨) | |
# └─logs.trx : trx 로그 파일 | |
# 테스트와 코드 커버리지 coverage.cobertura.xml 파일 생성 | |
# - name: Find coverage output path | |
# run: | | |
# cp $(find . -name "coverage.cobertura.xml") . | |
- name: Test | |
run: | | |
dotnet test ${{ env.solution_file }} \ | |
--configuration ${{ matrix.configuration }} \ | |
--no-restore \ | |
--no-build \ | |
--collect "XPlat Code Coverage" \ | |
--logger "trx;LogFileName=logs.trx" \ | |
--verbosity q | |
# {솔루션} | |
# └─.build | |
# └─coverage | |
# ├─coverage.cobertura.merged.xml | |
# └─report | |
# ├─... | |
# └─SummaryGithub.md | |
# https://github.com/danielpalme/ReportGenerator-GitHub-Action | |
# | |
# 결과물 | |
# - ./Template/.build/coverage/output/Cobertura.xml | |
# - ./Template/.build/coverage/output/SummaryGithub.md | |
# | |
# .dotnet toool 설치 명령 | |
# /usr/share/dotnet/dotnet tool install dotnet-reportgenerator-globaltool \ | |
# --tool-path reportgeneratortool \ | |
# --version 5.4.1 \ | |
# --ignore-failed-sources | |
# | |
# reportgenerator 명령 | |
# /home/runner/work/better-code-with-ddd/better-code-with-ddd/reportgeneratortool/reportgenerator \ | |
# -reports:./Template/**/*.cobertura.xml \ <- 입력 파일 N개 | |
# -targetdir:./Template/.build/coverage/output \ <- 출력 경로 | |
# -reporttypes:Cobertura;MarkdownSummaryGithub \ <- 출력 타입 | |
# -sourcedirs: \ | |
# -historydir: \ | |
# -plugins: \ | |
# -assemblyfilters:+* \ | |
# -classfilters:+* \ | |
# -filefilters:+* \ | |
# -riskhotspotassemblyfilters:+* \ | |
# -riskhotspotclassfilters:+* \ | |
# -verbosity:Info \ | |
# -title:Code Coverage \ <- 제목 | |
# -tag:2_12382597103 | |
# -license: | |
- name: Generate Coverage Reports | |
uses: danielpalme/[email protected] | |
with: | |
reports: '${{ env.coverage_in_cobertura_files }}' | |
targetdir: '${{ env.coverage_out_dir }}' | |
reporttypes: 'Cobertura;MarkdownSummaryGithub' | |
verbosity: "Info" | |
title: "Code Coverage" | |
tag: "${{ github.run_number }}_${{ github.run_id }}" | |
customSettings: "" # https://github.com/danielpalme/ReportGenerator/wiki/Settings. | |
toolpath: "reportgeneratortool" # dotnet tool. | |
- name: Publish Coverage Reports in Build Summary | |
run: cat "${{ env.coverage_out_dir }}/SummaryGithub.md" >> $GITHUB_STEP_SUMMARY | |
shell: bash | |
# https://github.com/EnricoMi/publish-unit-test-result-action?tab=readme-ov-file#permissions | |
# GitHub Summary | |
# Test Results | |
# 4 files 4 suites 1s ⏱️ | |
# 22 tests 22 ✅ 0 💤 0 ❌ | |
# 23 runs 23 ✅ 0 💤 0 ❌ | |
- name: Publish Test Results | |
uses: EnricoMi/[email protected] | |
if: always() | |
with: | |
files: | | |
${{ env.trx_files }} | |
- name: 출력 | |
run: | | |
echo "출력" | |
pwd | |
echo "./.build 모든 파일" | |
find ./.build | |
# # https://github.com/irongut/CodeCoverageSummary | |
# - name: Publish Code Coverage Report | |
# uses: irongut/[email protected] | |
# with: | |
# filename: ${{ env.coverage_out_cobertura_file }} | |
# badge: true | |
# fail_below_min: false # just informative for now | |
# format: markdown | |
# hide_branch_rate: false | |
# hide_complexity: false | |
# indicators: true | |
# output: both | |
# #thresholds: "10 30" | |
# # 첨부 파일 | |
# - name: Upload Test Results | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: Test-Results | |
# path: ${{ env.testresult_dirs }} | |
# retention-days: 5 | |
# # 첨부 파일 | |
# - name: Upload Combined Coverage XML | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: coverage | |
# path: ${{ env.coverage_out_cobertura_file }} | |
# retention-days: 5 | |
# # 솔루션 테스트 상세 보고서 생성 | |
# - name: Create test detail report | |
# uses: dorny/test-reporter@v1 | |
# if: always() | |
# with: | |
# name: Test Detail Report | |
# path: "tests/**/logs.trx" | |
# reporter: dotnet-trx | |
# # dotnet-coverage 도구 설치 | |
# - name: Install dotnet-coverage tool | |
# run: dotnet tool install -g dotnet-coverage --version 17.9.6 | |
# # 솔루션 코드 커버리지 폴더 생성 | |
# - name: Create coverage folder | |
# run: mkdir -p ${{ env.coverage_dir }} | |
# # 솔루션 코드 커버지리 병합 | |
# # N개 coverage.cobertura.xml 파일을 1개 coverage.cobertura.merged.xml로 통합 | |
# - name: Convert .coverage.xml to .cobertura.merged.xml | |
# run: | | |
# dotnet-coverage merge "**/TestResults/*/*.cobertura.xml" \ | |
# -f cobertura \ | |
# -o ${{ env.coverage_path }} | |
# 솔루션 코드 커버리지 보고서 생성 | |
# {솔루션} | |
# └─.results | |
# └─coverage | |
# ├─coverage.cobertura.merged.xml | |
# └─report | |
# ├─... | |
# └─SummaryGithub.md | |
# - name: Create coverage markdown file | |
# uses: danielpalme/[email protected] | |
# with: | |
# reports: '${{ env.coverage_path }}' | |
# targetdir: '${{ env.coverage_dir }}/report' | |
# reporttypes: 'MarkdownSummaryGithub;Html' | |
# # 솔루션 코드 커버리지 보고서 Summary 업로드 | |
# - name: Upload coverage markdown into github actions summary | |
# run: cat ${{ env.coverage_dir }}/report/SummaryGithub.md >> $GITHUB_STEP_SUMMARY | |
# # 솔루션 테스트 결과 Artifacts 업로드 | |
# - name: Upload coverage files into github actions artifacts | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: coverage_${{ matrix.dotnet-version }}_sha-${{ steps.vars.outputs.short_sha }} | |
# path: ${{ env.coverage_dir }}/report | |
# # 솔루션 코드 커버리지 전송(Codecov) | |
# - name: Upload coverage reports to Codecov | |
# uses: codecov/[email protected] | |
# with: | |
# token: ${{ secrets.CODECOV_TOKEN }} | |
# slug: hhko/ArchDdd |