ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Intellij 플러그인 개발기 - ③ [프로젝트 서명, 게시하기]
    툴 사용법/IntelliJ 2023. 5. 7. 16:39

    [1] 프로젝트 서명 만들기

    인텔리 제이에서 친절하게 다 써져있지만, Plugin Signing | IntelliJ Platform Plugin SDK (jetbrains.com)

    혹시나 Window에서 헤멜 수 있으므로 작성한다.

     

    먼저, OpenSSL(TLS, SSL 프로토콜 오픈소스)을 받아야한다. 아니면 다른 방법이 있다면 찾아봐도된다.

    필자는 잘 모르므로 가이드를 따라했다.

    http://slproweb.com/products/Win32OpenSSL.html 에서 최신버전의 Msi 혹은 Exe 파일을 설치하면 된다.

    설치를 하고 나면 

     

    윈도우 검색에 해당 프롬프트가 생성되는데, 이곳에서만 openSSL 명령어가 가능하니 주의하자.

    (혹은 환경변수로 등록하는 방법도 있다.)

    OpenSSL 윈도우 설치 및 사용법 :: 타쿠대디 (tistory.com)

    이분이 정리를 잘해놓으셔서 가져왔다. 그치만 나는 적용하지 않았다.

     

    나는 해당 프롬프트 실행 후 인텔리제이 가이드라인 대로 그대로 적용하였다.

     

    다음은 인텔리제이에 있는 가이드라인 코드들이다.

    우선 펌을 생성하고 (이때 비밀번호를 넣으라는 메시지가 나오는데 꼭 기억하자(아니면 저장)

    openssl genpkey\
      -aes-256-cbc\
      -algorithm RSA\
      -out private_encrypted.pem\ 
      # 원하는 perm 이름
      -pkeyopt rsa_keygen_bits:4096

    RSA형식으로 바꿔주고

    openssl rsa\
      -in private_encrypted.pem\ 
      -out private.pem 
      # 원하는 Peram이름

     

    chain.crt 인증서 체인을 생성한다.

    openssl req\
      -key private.pem\
      -new\
      -x509\
      -days 365\
      -out chain.crt

    중간에 지역이름과 자기이름, 이메일들 써넣으라고 하는데 자기자신에 맞게 써넣으시면 된다.

     

    이제 서명관련해서 만드는 작업이 끝났다..

     

     

    [2] 토큰 만들기

    아주 간단하다.

    플러그인 마이페이지 My profile | JetBrains Marketplace 에서 확인할 수 있다.

    여기에 하고싶은 토큰 이름을 정하고 Generate하면된다. 

    주의 사항은 만들어진 토큰 값을 꼭 저장해놓자. 다시 들어가면 확인 할 수 없다. (다시 생성해야한다.)

     

     

    [3] 플러그인 배포를 위한 환경 변수 등록하기

    build.gradle.kts 파일에 다시 가보자, 그럼 마지막 부분에 해당 코드들이 보일 것 이다.

        signPlugin {
            certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))
            privateKey.set(System.getenv("PRIVATE_KEY"))
            password.set(System.getenv("PRIVATE_KEY_PASSWORD"))
        }
    
        publishPlugin {
            token.set(System.getenv("PUBLISH_TOKEN"))
        }

     

    배포시에 동작하는 gradle 작업인데, 내용을 보자면 위에서 작업한 서명관련 값과 토큰값을 시스템 환경변수로 부터 

    읽어온다는 것이다.

     

    그러면 시스템 환경 변수를 등록해야하는데, 등록하는 방법은 다음과 같다.

    우측 gradle Task 혹은 상단의 gradle Task 에서 Modify Run Configuration을 선택하면 다음과 같은 화면이 나온다.

     

    해당 변수에 등록을 해야하는데 우리가 등록해야 할 것은 다음과 같은 4가지다.

    CERTIFICATE_CHAIN:

    # widnow 는 type, linux는 cat
    type chain.crt
    
    # 실행되었을때
    -----BEGIN CERTIFICATE-----
    MIIF1zCCA7+gAwIBAg
    ....

    명령어를 쳐서 위에서 chain.crt 인증서를 출력하고 복사한다. 

    그리고 이것을 Base64로 한번 인코딩을 해야한다. 인코딩 프로그램을 사용하거나 웹페이지를 이용해도 괜찮다.


    PRIVATE_KEY:

    type ~~.pem
    
    # 실행 후
    -----BEGIN CERTIFICATE-----
    MIIF1zCCA7+gAwIBAgIUI7ilCl8
    ...

    위와 마찬가지로 base64로 인코딩 한다.


    PRIVATE_KEY_PASSWORD: 위에서 pem생성시 저장한 패스워드 입력

    PUBLISH_TOKEN: 위에서 생성한 토큰값 입력

     

    이렇게 뽑아온 데이터들을 

    위와 같이 저장하면된다.

     

     

    [4] 빌드 및 플러그인 마켓에 등록하기

    빌드하기는 무척 쉽다.

    우측 gradle task에 build plugin을 눌러서 TASK를 작동시키면 된다.

    그러면, 좌측 프로젝트 build -> distributions에 

    와 같이 생성되어있는데, 이 Zip파일을 마켓플레이스에 등록하면된다.

     

    이제 플러그인 마켓 페이지로 가보자.

    Upload Plugin | JetBrains Marketplace 이 페이지로 이동하면 된다.

    이러한 화면이 뜨는데, 순서대로

    Plugin File : 아까 Build된 Zip파일을 넣으면된다.

    License: 라이센스가 있다면 넣으면되지만, 없다면 공용 라이센스 (필자는 Apache로) 넣어두었다.

    Source Code: 소스코드 Url이다.(Git Hub 주소)

    Tags: 말그대로 태그인데, 카테고리라고 생각하시면된다.

    Channel: 써놓진 않았지만 Channel에 따라서 모든 사용자가 접근가능한지 일부 채널 사용자에게만

                   가능한지 선택할 수 있다.

     

    이렇게 하면 등록이 완료된다.!!

     

    물론 등록되었다고 끝난것이 아니라 심사가 필요하다.

    젯브레인에서 심사를 또 해주는 모양이다.

     

    이렇게 수동으로 등록하고나면 인텔리제이에서 자동으로 publish할 수 있다.

    Gradle Task에서 publish Plugin을 진행하면 자동으로 인텔리제이 플러그인을 업로드해준다.

Designed by Tistory.