Kotlin을 사용하여 GitHub 작업을 작성했습니다.

내 워크플로우


나는 GitHub의 동작을 보기로 결정했기 때문에 지난 일주일 동안 나는 그것에 관한 모든 것을 보고 읽었다.나는 심지어 게시물 한 편Introduction to GitHub Actions을 썼다.나는 정말 재미있는 것은 네가 더욱 편안하다고 생각하는 언어로 동작을 쓸 수 있다는 것을 발견했다.나도 이렇게 했어!
나는 작은 동작을 썼다.
  • PR에서 변경된 모든 파일 수집,
  • 보유를 보류합니다.kt 접미사,
  • 에서 ktlint 및
  • 실행
  • PR에서 ktlint가 보고한 모든 오류에 대한 논평
  • 이 모든 것은 Kotlin과 bash를 사용합니다!
    너는 이곳에서 그것을 찾아 사용할 수 있다. 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

    좋은 웹페이지 즐겨찾기