PersesTitan(페르) 기술블로그

[Jetbrains] 플러그인 배포하기 본문

VaneProject/jetbrains

[Jetbrains] 플러그인 배포하기

PersesTitan(페르) 2024. 9. 19. 00:25

관련 글

Gradle 설정

직접 키를 입력하여도 되지만 공개될 위험성으로 인해 아래와 같은 방법으로 해결할 수 있습니다.

 

Gradle 설정

singPlugin ([Jetbrains] 플러그인 개인키 생성하기 참고)

 - certificateChain : chain.crt파일 값

 - privateKey : private.pem파일 값

 - password : 개인키를 생성할때 입력한 비밀번호를 입력하면 됩니다.

 

publishPlugin ([Jetbrains] 플러그인 공개키 생성하기)

 - token : 발급 받은 token(공개키) 입력

 

방법1 - 환경변수에 값을 세팅하는 방법

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"))
}

 

아래와 같이 Environment Variables에 값을 넣은 후 실행하면 Gradle의 System.getenv(키값)함수를 사용하여 Value를 가져올 수 있습니다.

출처 : plugin jetbrains doc

방법2 - 파일에 값을 세팅하는 방법

아래와 같이 변경해주시면 파일 경로로 개인키를 입력할 수 있게 지원해줍니다.

password와 공개키는 지원하지 않아 직접 만들어서 사용을 하거나 방법1과 같은 방법으로 값을 전달하여 사용할 수 있습니다.

certificateChain -> certificateChainFile

privateKey -> privateKeyFile

import java.util.Properties

(...)
val properties = Properties()
properties.load(project.file("../key/password.properties").inputStream())

signing {
    certificateChainFile.set(file("../key/chain.crt"))
    privateKeyFile.set(file("../key/private.pem"))
    password.set(properties.getProperty("PRIVATE_KEY_PASSWORD"))
}

publishing {
    token.set(properties.getProperty("PUBLISH_TOKEN"))
}
(...)

 

password.properties 

(아래 값들은 예시입니다.)

PRIVATE_KEY_PASSWORD=8awS22%#3(4wVDDBMlTREX
PUBLISH_TOKEN=perm:a961riC....l17oW8t+Qw==

 

플러그인 업로드

Gradle에 buildPlugin을 실행해주시면 배포 파일 생성할 수 있습니다.

환경변수에 등록해야하는 경우 Gradle실행에 Run을 buildPlugin으로 설정해주시고 환경설정 세팅 후 실행을 해주시면됩니다.

 

환경설정이 필요없는 경우 Gradle탭에 buildPlugin을 더블클릭하여 실행해 진행할 수 있습니다.

 

빌드가 완료되었으면 build/distributions위치에 파일이 생성됩니다.

 

성공적으로 파일이 생성되었다면 아래에 접속하여 생성한 파일과 프로젝트 정보를 입력 후 플로그인을 업로드 해주시면 됩니다.

https://plugins.jetbrains.com/plugin/add#intellij

 

Upload Plugin | JetBrains Marketplace

Upload plugin to JetBrains Marketplace

plugins.jetbrains.com