특정 처리 전후에 ChatWork에 게시하는 'capistrano-around_chatwork'

7818 단어 Chatwork루비
메리 크리스마스!

마지막은 cap deploy 라든지의 전후에 ChatWork에 투고하기 위한 gem의 소개입니다
  • htps : // 기주 b. 코 m / 스에 445 / 카피 st 등의 - d_ 짱과 rk
  • htps : / / 루 바이 게 ms. 오 rg / 게 ms / 카피 st 등의 dd

  • capistrano-chatwork와의 차이



    capistrano에서 ChatWork에 게시하는 플러그인에 htps : // 기주 b. 코 m / 미츠키 좋다 / 카피 st 등의 짱이 있지만 capistrano-chatwork는 cap deploy 앞이나 뒤에 게시하는 반면 capistrano-around_chatwork는 모든 작업 전후에 ChatWork에 게시 할 수 있습니다. .

    샘플




    cap unicorn:start 앞뒤로 ChatWork에 게시했습니다. done task 실행 시간도 자동 계산됩니다.

    사용법



    Capfile
    require "capistrano/around_chatwork"
    

    config/deploy.rb
    set :chatwork_api_token, "YOUR_API_TOKEN"
    set :chatwork_room_id,   00000000
    
    around_chatwork "unicorn:start"
    

    ChatWork의 API token과 통지처의 방 ID를 설정해, 전후를 통지로 둘러싸고 싶은 태스크를 around_chatwork 에 쓰는 것만으로 ok입니다.
    chatwork_api_tokenchatwork_room_id는 capistrano-chatwork와 정확히 동일하므로 capistrano-chatwork를 배포하는 경우 동일한 설정을 공유 할 수 있습니다.

    알림 메시지를 편집하려면 starting_messageending_message를 느낌으로 편집하십시오.

    config/deploy.rb
    set :starting_message, -> {
      "[info][title][#{fetch(:stage)}] :task_name: @#{fetch(:user)}[/title]started[/info]"
    }
    
    set :ending_message, -> {
      "[info][title][#{fetch(:stage)}] :task_name: @#{fetch(:user)}[/title]done (:elapsed_time: sec)[/info]"
    }
    

    문장의 :task_name::elapsed_time:는 후크 된 작업 이름과 작업의 처리 시간으로 바뀝니다.

    자세한 내용



    cap 작업 전후에 동적으로 작업을 설정하고 싶습니다.



    capistrano 3계의 구조는 Rake task가 베이스이므로 이하가 참고가 됩니다

    Rake에서 모든 작업 전후에 다른 작업 수행 - HsbtDiary(2012-02-10)

    실제 코드는 이런 느낌입니다.


    lib/capistrano/around_chatwork.rb
    def around_chatwork(task_name)
      start_time = nil
    
      before_task = Rake::Task.define_task("#{task_name}:__before__") do
        message = Capistrano::AroundChatwork.format_message(fetch(:starting_message), task_name)
        Capistrano::AroundChatwork.post_chatwork(message)
        start_time = Time.now
      end
    
      after_task = Rake::Task.define_task("#{task_name}:__after__") do
        elapsed_time = Time.now - start_time
        message = Capistrano::AroundChatwork.format_message(fetch(:ending_message), task_name, elapsed_time)
        Capistrano::AroundChatwork.post_chatwork(message)
      end
    
      Rake::Task[task_name].enhance([before_task]) do
        Rake::Task[after_task].invoke
      end
    end
    

    좀 강력하지만, around_chatwork 에 건네진 task명의 전후에 실행하고 싶은 task를 각각 동적 생성해, enhanceinvoke 에 건네주고 있습니다.

    그건 그렇고, capistrano의 before/after에서도 마찬가지입니다.
    htps : // 기주 b. m / 카피 st 등의 / 카피 st 등의 / b / b / v3. rb#L5-L18

    좋은 웹페이지 즐겨찾기