성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
[정성태] 저렇게 조각 코드 말고, 실제로 재현이 되는 예제 프로젝트를 압...
[정성태] Modules 창(Ctrl+Shift+U)을 띄워서, 해당 Op...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>github workflow/actions에서 nuget 패키지 등록하는 방법</h1> <p> 물론 이에 대해서도 github marketplace에 등록된 action이 있으므로,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Publish NuGet ; <a target='tab' href='https://github.com/marketplace/actions/publish-nuget'>https://github.com/marketplace/actions/publish-nuget</a> </pre> <br /> 아래와 같은 방법으로 사용하면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Use GitHub actions to publish NuGet packages ; <a target='tab' href='https://lukelowrey.com/use-github-actions-to-publish-nuget-packages/'>https://lukelowrey.com/use-github-actions-to-publish-nuget-packages/</a> </pre> <br /> 따라서, <a target='tab' href='https://www.sysnet.pe.kr/2/0/11034#nuget_api_key'>nuget에 등록하는데 사용하는 API key</a>를 "<a target='tab' href='https://www.sysnet.pe.kr/2/0/12546'>Encrypted secrets</a>"에 (이 글에서는 NUGET_API_KEY라는 이름으로) 등록한 후, 다음과 같은 식으로 사용하는 코드를 추가하면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > - name: Publish NuGet id: pub_nuget uses: brandedoutcast/publish-nuget@v2.5.5 with: PROJECT_FILE_PATH: ./XmlSrcGenerator/XmlSrcGenerator.csproj NUGET_KEY: ${{secrets.NUGET_API_KEY}} TAG_COMMIT: false INCLUDE_SYMBOLS: true </pre> <br /> 만약 이렇게 등록한 nupkg 파일을 github의 release에도 올리고 싶다면 "<a target='tab' href='https://www.sysnet.pe.kr/2/0/12542'>github repo의 Release 활성화 및 Actions를 이용한 자동화 방법</a>" 글에서 소개했던 create_release 작업의 추가와 함께 아래와 같은 actions/upload-release-asset 작업이 필요합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > - name: Upload Nuget Release Asset id: upload-nuget-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} asset_path: ${{ steps.pub_nuget.outputs.PACKAGE_PATH }} asset_name: ${{ steps.pub_nuget.outputs.PACKAGE_NAME }} asset_content_type: application/octet-stream </pre> <br /> 참고로, action의 "OUTPUTS" 변수들은 모두 대소문자 구분을 하기 때문에 반드시 문서를 확인하시고 정확히 일치하는 이름을 사용해야 합니다. (예를 들어 위의 yml에서 outputs.package_path라고 쓰면 빈 문자열이 반환됩니다.)<br /> <br /> 마지막으로 위에서 설명한 내용의 실제 사용 예를 다음의 yml 파일에 적용했습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > XmlCodeGenerator/.github/workflows/git-releases.yml ; <a target='tab' href='https://github.com/stjeong/XmlCodeGenerator/blob/master/.github/workflows/git-releases.yml'>https://github.com/stjeong/XmlCodeGenerator/blob/master/.github/workflows/git-releases.yml</a> </pre> <br /> <hr style='width: 50%' /><br /> <a name='nuget_re_register'></a> <br /> 이미 같은 버전의 패키지가 nuget에 등록되어 있다면 actions/upload-release-asset 작업은 실패 없이 그냥 넘어가게 됩니다. 단지 이런 경우 output으로 출력하는 outputs.PACKAGE_PATH 값이 비어 있게 됩니다. 그래서 이런 상황이라면 nupkg 파일을 github releases에도 업로드하는 actions/upload-release-asset 작업을 수행하는 경우 다음과 같이 오류 메시지가 발생하며 빌드 실패를 합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Run actions/upload-release-asset@v1 with: upload_url: https://uploads.github.com/repos/stjeong/XmlCodeGenerator/releases/39255023/assets{?name,label} asset_content_type: application/octet-stream env: SOLUTION_FILE_PATH: . BUILD_CONFIGURATION: Release GITHUB_TOKEN: *** Error: Input required and not supplied: asset_path </pre> <br /> 만약 실패를 원하지 않는다면 if 조건을 추가해 upload-release-asset 작업을 생략하는 식으로 대응할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > - name: Upload Nuget Release Asset <span style='color: blue; font-weight: bold'>if: steps.pub_nuget.outputs.PACKAGE_PATH != ''</span> id: upload-nuget-release-asset uses: actions/upload-release-asset@v1 ...[생략]... </pre> <br /> <hr style='width: 50%' /><br /> <a name='nuget_token_expiration'></a> <br /> 기타 유의할 점이 하나 있다면, nuget api token의 만료가 보통 1년 단위이기 때문에 매해 secrets.NUGET_API_KEY를 갱신시켜줘야 한다는 것을 잊지 마시고. ^^<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
5364
(왼쪽의 숫자를 입력해야 합니다.)