Kotlin을 사용하여 GitHub 작업을 작성했습니다.
내 워크플로우
나는 GitHub의 동작을 보기로 결정했기 때문에 지난 일주일 동안 나는 그것에 관한 모든 것을 보고 읽었다.나는 심지어 게시물 한 편Introduction to GitHub Actions을 썼다.나는 정말 재미있는 것은 네가 더욱 편안하다고 생각하는 언어로 동작을 쓸 수 있다는 것을 발견했다.나도 이렇게 했어!
나는 작은 동작을 썼다.
너는 이곳에서 그것을 찾아 사용할 수 있다. ktlint-pr-comments
Docker용 GitHub 작업
동작을 만드는 데는 세 가지 방법이 있지만, Docker를 사용하는 방법만 우리가 원하는 언어를 사용할 수 있습니다.
이 세 가지 방법 중 주요 두 가지 성분은 다음과 같다.
action.yml
라는 파일, 프로젝트의 루트 폴더에 놓고 동작이 어떻게 실행되고 어떤 입력/출력이 있는지 정의합니다.Dockerfile
또는 하나docker image
가 있는데, 동작의 운행자는 그것을 사용하여 용기를 만들고 그 중에서 동작을 실행하는 코드를 만든다.동작의 실행 가능한 부분을 용기에 복사하고 시작할 때 호출해야 합니다.실행 프로그램은 작업 공간이 작업에 필요한 모든 환경 변수와 입력과 함께 용기에 설치되어 있는지 확인합니다.documentation 에서 더 많은 정보를 읽을 수 있습니다.
Ktlint 홍보 의견
행동 코드
행동은 세 가지 다른 부분이 있다.
첫 번째 섹션에서는 GitHub의 RESTAPI를 사용하여 PR의 모든 변경 사항을 수집하고 Kotlin 파일에 추가되거나 수정된 변경 사항을 보존합니다.이를 위해 저는 kscript를 사용했고 제 습관의 모든 라이브러리, 예를 들어 Reformation과 Moshi를 이용할 수 있습니다.생성된 스크립트에 만족할 때, 나는 그것의
--package
옵션을 사용하여 독립된 바이너리 파일을 만들어서 동작의 Docker 이미지에 복사했다.두 번째 부분은 bash 명령의 조합으로 첫 번째 부분의 결과를 전달함으로써ktlint 바이너리 파일을 실행합니다.
--reporter=json
매개변수를 사용하여 Ktlint를 호출하여 JSON 보고서를 작성합니다.세 번째 부분도 마지막 부분인 kscript 스크립트입니다. 이전에 작성한 보고서와 GitHub의 REST API를 사용하여 PR 차이의 모든 ktlint 오류에 대한 PR 행 주석을 생성합니다. 독립된 바이너리 파일을 다시 만들어서 이미지에 넣습니다.
주:
나는 kscript를 좋아한다. 왜냐하면 나는 내가 알고 있는 모든 라이브러리로 신속하고 간단하게 물건을 작성할 수 있기 때문이다. 그러나 나도 먼저 테스트를 작성하는 것을 좋아한다. 이것은 상당히 어렵다는 것을 증명한다.그래서 내가 결국 한 일은 자신을 코트린 프로젝트의 일원으로 삼는 것이다.나는 나의 테스트 (예를 들어 junit5, hamkrest, MockWeb Server) 를 만들었고, 그 중에서
.kt
개의 적당한 기능을 가진 파일을 만들었다.스크립트를 만들기 위해 .kts
파일을 만들었습니다. 그 중에서 외부 의존 항목을 정의했고 .kt
파일을 포함했습니다.
운영 메타데이터
처음부터 나는 이 동작이 가능한 한 자주적이고 소비자에게 적은 책임을 지게 하고 전원을 꽂기만 하면 재생을 볼 수 있게 하고 싶다
따라서 작업에 필요한 유일한 입력은 영패입니다. kscript 스크립트와 API 통신을 허용하는 데 사용됩니다. 이것은 기본적secrets.GITHUB_TOKEN
으로 작업 흐름에 다음 줄을 추가할 수 있습니다.
- uses: le0nidas/ktlint-pr-comments@v1
with:
repotoken: ${{ secrets.GITHUB_TOKEN }}
Docker 이미지
행동 준비가 다 되기 위해서는 많은 일을 해야 한다.Sdkman, Kotlin, kscript를 설치해야 합니다. 메모리 라이브러리에서 코드를 검색해야 하며, 두 개의 kscript 스크립트가 모두 포장되어 있습니다.이외에 ktlint를 다운로드하여 올바른 경로에 놓아야 합니다
그럼에도 불구하고 몇 초의 시간을 절약하기 위해 나는 모든 준비가 된 사진을 찍기로 결정했다.그래서 메인 지점에 푸시가 있을 때마다 터치하는 workflow를 만들었습니다. 모든 내용을 하나의 이미지로 구축하고 결과를 Docker Hub
따라서, 현재 동작은 이 그림을 사용하여 용기를 실행할 뿐, 다른 의식은 필요 없습니다
주의:
Docker Hub를 사용하기 전에 GitHub 패키지를 사용해 보았지만 퍼블릭은 그렇게 공개되지 않았습니다. 왜냐하면 인증이 있어야 패키지를 검색할 수 있기 때문입니다
총결산
그렇습니다!ktlint의 보고서를 당신의 관계에 평론으로 삼는 행동입니다. 이것은 시도와 잘못된 결과입니다. 제가 그것을 썼기 때문에 배운 행동이지만, 누군가가 그것이 유용하다는 것을 발견하기를 바랍니다.하면, 만약, 만약...p>
그것을 어떻게 사용하는지 예시는 조작된 저장소에서 찾을 수 있습니다. 그 중에서 Idogfood it to the project
제출 범주:
수리원은 반드시
Yaml 파일 또는 코드 링크
회사 명 / ktlint 홍보 평론
ktlint 실행을 위한 Github 작업(https://ktlint.github.io/아무튼.PR에서 변경된 kt 파일입니다.
데이터 경로 설명 파일
Ktlint PR 리뷰 v1
이 작업은 PR에서 변경된 모든 파일.kt
실행ktlint
ktlint에서 발견한 모든 오류에 대해 줄 설명을 합니다
주의, 평론을 하기 위해서는 PR 차이의 한 줄에 오류가 있어야 합니다
활용단어참조
le0nidas/ktlint pr 사용하기 -comments@v1
지원:
repotoken:repotoken
인스턴스
코드:
이름 () {
}
댓글이 달립니다:
View on GitHub
Reference
이 문제에 관하여(Kotlin을 사용하여 GitHub 작업을 작성했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/le0nidas/i-wrote-a-github-action-using-kotlin-3gho텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)