Railway(Slack 봇)에 Kotlin 앱 배포

Dec 07 2022
우리는 GitHub(Kotlin으로 작성)에서 제공되는 "Hello world" Slack 봇을 Railway에 배포할 것입니다.
이제 Heroku에는 더 이상 무료 플랜이 없으므로 실험적인 JVM 앱을 위한 새로운 홈을 찾을 때입니다. 철도가 일을합니다.
Unsplash의 Eric Krull 사진

이제 Heroku 에는 더 이상 무료 플랜이 없으므로 실험적인 JVM 앱을 위한 새로운 홈을 찾을 때입니다. 철도 가 일을 합니다.

1. 코드베이스

  1. 새 Kotlin 프로젝트를 만듭니다 .
  2. 아직 만들지 않았다면 git init지금 해야 합니다.
  3. .gitignore다음 을 사용하여 루트에 파일 이 있는지 확인하십시오 .
  4. /.gradle
    /.idea
    /build
    

2. 철도 프로젝트

이전에 만든 Kotlin 앱을 제공할 철도 프로젝트를 설정해야 합니다.

  1. Railway로 이동 ▶ 등록/로그인 ▶ "새 프로젝트" 클릭 ▶ "GitHub 저장소에서 배포" ▶ GitHub에 대한 액세스 제공 ▶ 생성된 프로젝트 선택( slack-hello-bot).
  2. Kotlin 앱의 루트 폴더 에서 다음 콘텐츠로 명명 된 파일 을 만듭니다 . 이것은 Railway가 웹 앱을 시작하기 위해 실행하는 명령을 나타냅니다.Procfile
    web: java -jar build/libs/PROJ_ID-1.0-SNAPSHOT-all.jar
    PROJ_IDsettings.gradle.kts
  3. 철도에는 stage목표물이 필요합니다.
    끝에 다음을 build.gradle.kts추가합니다.
  4. task("stage") {
        dependsOn("shadowJar")
    }
    

  5. 에 다음 종속성을 추가합니다 build.gradle.kts.
  6. dependencies {
      implementation("org.slf4j:slf4j-simple:1.+") 
      implementation("com.slack.api:bolt:1.+")
      implementation("com.slack.api:bolt-servlet:1.+")
      implementation("com.slack.api:bolt-jetty:1.+")
    }
    

    plugins {
       id("com.github.johnrengelman.shadow") version "7.+"
       application
    }
    // at the bottom:
    application {
        mainClass.set("SlackMainKt")
    }
    

fun main() {
   val app = App()
   app.command("/hello") { _, _ ->
      Response.ok("world")
   }
   SlackAppServer(app, getenv("PORT")?.toInt() ?: 8080)
       .start()
}

4. 모든 로컬 Git 변경 사항 을 커밋하고 푸시 합니다. 푸시는 철도 배포를 자동으로 트리거합니다. Railway 대시보드 에서 배포 상태 및 로그를 확인할 수 있습니다 .

4. 슬랙 앱 구성

공식 문서: Java용 Bolt로 앱 빌드 및 Bolt로 시작하기 .

  1. Slack 앱 으로 이동 ▶ “새 앱 만들기”를 클릭합니다.
  2. "처음부터" 선택 ▶ "다음" 클릭 ▶ 앱 이름 지정 ▶ 작업 공간에 할당
  3. 왼쪽 메뉴에서 “OAuth & Permissions”로 이동하고 ▶ “Scopes”로 스크롤 ▶ add chat:write.
  4. 메뉴에서 “슬래시 명령어” ▶ “새 명령어 만들기”를 클릭합니다.

  5. 명령 : 요청 URL : 을 받으려면 Railway 대시보드 ▶ 앱 선택 ▶ "웹" ▶ "설정" ▶ "도메인" 으로 세부 정보를 입력합니다. 간단한 설명 : 변경 사항을 저장합니다.hello
    BASE_APP_URL/slack/events
    BASE_APP_URL
    hello world
  6. Slack UI에서 철도로 Slack 환경 변수를 복사해야 합니다.
    "기본 정보" ▶ "앱 자격 증명" ▶ "서명 비밀" ▶ "표시" 클릭 ▶ 복사합니다. 철도 대시보드로 이동 ▶ 생성된 앱 선택 ▶ "웹" ▶ "변수" ▶ SLACK_SIGNING_SECRET이전에 복사한 값으로 명명된 "새 변수".
  7. Slack UI로 돌아가서 ▶ “OAuth & Permissions”로 이동 ▶ “Install to Workspace” 버튼 클릭 ▶ “Bot User OAuth Token”의 값을 복사합니다. 철도로 돌아가서 ▶ 이름이 지정된 다른 환경 변수를 만들고 SLACK_BOT_TOKEN▶ 복사한 값을 붙여넣습니다.
  8. 앱을 테스트할 시간입니다! Slack으로 이동하고 ▶ /hello아무 채널이나 입력하고 ▶ Enter 키를 누릅니다. 답장 을 받아야 합니다 .world