복붙노트

[RUBY-ON-RAILS] Heroku가 - 현재의 디스플레이 해시 커밋

RUBY-ON-RAILS

Heroku가 - 현재의 디스플레이 해시 커밋

나는 (heruko 명령을 실행하기 위해 액세스 할 수 없습니다) 그 테스트 팀은 버그 리포트에서 해당 커밋 해시를 포함 할 수 있도록 브라우저에서 커밋 현재 자식의 해시를 표시합니다.

(이 Heroku가 실패하는 이유는 잘 작동 지역에, 나도 몰라) 우선은 모래를 시도했지만 뭔가 깨진하고 Heroku가 작동하지 않습니다.

그래서이 개 환경 변수는 Heroku가에 있다는 것을 발견 :

ENV["COMMIT_HASH"]
ENV["LAST_COMMIT_BY"]

그러나 어느 쪽도 그들 (모두가 전무)를 사용할 수 없습니다.

나는 또한 함께 확인 :

heroku config

그러나 다시, 어느 쪽도 세트는 없습니다.

해시 정보를 검색 할 수있는 방법이 있습니까? 예를 들어 날짜로 더 자식 정보를 가질 수있는 방법이 있습니까?

해결법

  1. ==============================

    1.첫째, Heroku가 "제거합니다 .git 디렉토리를 포함하여 [S] 사용하지 않는 파일"슬러그 컴파일시 이후 있습니다 (Heroku가 다이노에) 앱의 디렉토리 내부에서 일부 자식 명령을 실행할 수 없습니다. 이것은 일반적으로 현재의 해시를 얻을 수있는 가장 쉬운 방법입니다 자식 레브 - 구문 분석 HEAD, 등을 포함한다.

    첫째, Heroku가 "제거합니다 .git 디렉토리를 포함하여 [S] 사용하지 않는 파일"슬러그 컴파일시 이후 있습니다 (Heroku가 다이노에) 앱의 디렉토리 내부에서 일부 자식 명령을 실행할 수 없습니다. 이것은 일반적으로 현재의 해시를 얻을 수있는 가장 쉬운 방법입니다 자식 레브 - 구문 분석 HEAD, 등을 포함한다.

    둘째, Heroku가 있기 때문에, SSH를 호출합니다 - 원격 LS Heroku가 다이노에 자식들과 정보를 검색하려는, 당신은 '(50.19.85.132)이 heroku.com'을 설정할 수없는 호스트의 신뢰성을 말할 메시지를 볼 수 있습니다 공개 키는 Heroku가 동력계에 설치되어 있지 않습니다. 당신은 Heroku가 공개 키를 설치할 수있는 권한이 없습니다.

    당신은 여전히 ​​적어도 두 가지 옵션이 있습니다.

  2. ==============================

    2.그것은 Heroku가 접촉하지 않고, 로베르토는 그의 대답에 대해 쓴 Heroku가 기능을 시도하는 것이 가능합니다. 그것은 Heroku가 랩라고 : 다이나모 메타 데이터를하면하여 사용할 수 있습니다

    그것은 Heroku가 접촉하지 않고, 로베르토는 그의 대답에 대해 쓴 Heroku가 기능을 시도하는 것이 가능합니다. 그것은 Heroku가 랩라고 : 다이나모 메타 데이터를하면하여 사용할 수 있습니다

    heroku labs:enable runtime-dyno-metadata -a <app name>
    

    다음 정보는 환경 변수로 (다음 배포에) 볼 수 있습니다 :

    ~ $ env
    HEROKU_APP_ID:                   9daa2797-e49b-4624-932f-ec3f9688e3da
    HEROKU_APP_NAME:                 example-app
    HEROKU_DYNO_ID:                  1vac4117-c29f-4312-521e-ba4d8638c1ac
    HEROKU_RELEASE_VERSION:          v42
    HEROKU_SLUG_COMMIT:              2c3a0b24069af49b3de35b8e8c26765c1dba9ff0
    HEROKU_SLUG_DESCRIPTION:         Deploy 2c3a0b2
    ...
    
  3. ==============================

    3.2015년 4월 1일로, 힘내 SHA는 환경 변수 SOURCE_VERSION 같은 빌드 프로세스 내에서 사용할 수 있습니다. 참조 : https://devcenter.heroku.com/changelog-items/630

    2015년 4월 1일로, 힘내 SHA는 환경 변수 SOURCE_VERSION 같은 빌드 프로세스 내에서 사용할 수 있습니다. 참조 : https://devcenter.heroku.com/changelog-items/630

    그것은 단지 컴파일 단계에서, 실행중인 응용 프로그램 등으로는 사용할 수 없습니다. 당신은 총알을 고집하고 응용 프로그램에서 파일을 읽을 수있는 파일이 작성하는 사용자 정의 buildpack을 추가 할 수 있습니다.

    내가 그 방법을 테스트하고 여기에 실험 buildpack이있어 : https://github.com/sreid/heroku-buildpack-sourceversion

  4. ==============================

    4.힘내> 1.8.2 지금 우리의 쓰임새를위한 더 나은 일치 사전 푸시 훅을 지원합니다. 여기에 내 현재 훅 스크립트는 다음과 같습니다

    힘내> 1.8.2 지금 우리의 쓰임새를위한 더 나은 일치 사전 푸시 훅을 지원합니다. 여기에 내 현재 훅 스크립트는 다음과 같습니다

    #!/bin/sh
    
    remote="$1"
    url="$2"
    
    if [[ $url =~ heroku ]] ; then
    
        if [[ $url =~ staging ]] ; then
            appname=YOUR_APP_NAME_STAGING
        else
            appname=YOUR_APP_NAME
        fi
    
        hash_name=COMMIT_HASH
        hash=$(git rev-parse HEAD)
        echo Setting $hash_name to $hash
        heroku config:set $hash_name=$hash --app $appname
    fi
    exit 0
    
  5. ==============================

    5.자식 LS-원격 Heroku가 나를 위해 작동합니다. 여기 중복 질문에 대한 답변에서이 있어요.

    자식 LS-원격 Heroku가 나를 위해 작동합니다. 여기 중복 질문에 대한 답변에서이 있어요.

  6. ==============================

    6.Heroku가 당신이 아마 베타에 추가 얻을 수있는 지원을 이메일을 경우, 다이나모 메타 데이터를 지원하는 새로운 기능이 있습니다. 여기에 Heroku가 자신이 그것을 사용하는 장소는 다음과 같습니다

    Heroku가 당신이 아마 베타에 추가 얻을 수있는 지원을 이메일을 경우, 다이나모 메타 데이터를 지원하는 새로운 기능이 있습니다. 여기에 Heroku가 자신이 그것을 사용하는 장소는 다음과 같습니다

    https://github.com/heroku/fix/blob/6c8ab7a/lib/heroku_dyno_metadata.rb

    추가 기능에가 / JSON 파일을 쓰는 등 / Heroku가 / 다이노 - 내용은 다음과 같이 :

    {
       "dyno":{
          "physical_id":"161bfad9-9e83-40b7-b385-78305db2f168",
          "size":1,
          "name":"run.7145"
       },
       "app":{
          "id":null
       },
       "release":{
          "id":50,
          "commit":"2c3a0b24069af49b3de35b8e8c26765c1dba9ff0",
          "description":null
       }
    }
    

    ..so release.commit 당신이 후하고있는 분야이다.

  7. ==============================

    7.culix 및 joshwa 모두 큰 응답이있다. 당신이 당신의 Heroku가 이름을 경우 Heroku가 당신이 더 짧고 더 강력한 .git / 후크 / 사전 푸시 훅을 가질 수 애플 리케이션 당신이 대응하는 것으로 자식 같은 리모컨 :

    culix 및 joshwa 모두 큰 응답이있다. 당신이 당신의 Heroku가 이름을 경우 Heroku가 당신이 더 짧고 더 강력한 .git / 후크 / 사전 푸시 훅을 가질 수 애플 리케이션 당신이 대응하는 것으로 자식 같은 리모컨 :

    #!/bin/bash
    
    remote="$1"
    url="$2"
    
    if [[ $url =~ heroku ]] ; then
        hash_name=COMMIT_HASH
        hash=$(git rev-parse HEAD)
        echo Setting $hash_name to $hash on app $remote
        heroku config:set $hash_name=$hash --app $remote
    fi
    
    exit 0
    
  8. ==============================

    8.그것은 당신이 CI를 사용하고 거기 Heroku가 클라이언트에 대한 액세스 권한이없는 직접 경우 Heroku가 API를 사용하는 것도 가능합니다.

    그것은 당신이 CI를 사용하고 거기 Heroku가 클라이언트에 대한 액세스 권한이없는 직접 경우 Heroku가 API를 사용하는 것도 가능합니다.

    이것은 $ CI_COMMIT_ID 같은 환경에서 해시를 제공합니다 (codeship.com에 사용되는 솔루션 I입니다 :

    # you can use `heroku auth:token` to generate this
    HEROKU_API_KEY="" 
    
    APP_NAME="glorious-flying-birds"
    
    curl -n -X PATCH "https://api.heroku.com/apps/$APP_NAME/config-vars" \
      -H "Authorization: Bearer $HEROKU_API_KEY" \
      -H "Accept: application/vnd.heroku+json; version=3" \
      -H "Content-Type: application/json" \
      -d "{\"GIT_COMMIT_HASH\": \"$CI_COMMIT_ID\"}"
    
  9. ==============================

    9.SOURCE_VERSION라는 Heroku가 컨테이너에 ENV var에가

    SOURCE_VERSION라는 Heroku가 컨테이너에 ENV var에가

    https://devcenter.heroku.com/articles/buildpack-api

    당신은 그것을 사용할 수 있습니다!

  10. from https://stackoverflow.com/questions/14583282/heroku-display-hash-of-current-commit by cc-by-sa and MIT license