2009-10-17 12 views

Respuesta

6

Heroku establece una variable de entorno con la hash de confirmación ENV['COMMIT_HASH'].

En cuanto a la marca de tiempo, puede pulsar el github api con el hash si aloja allí su código. Parece que el ruby-github gem puede ayudarlo con esto, o puede hacerlo usted mismo con HTTParty.

+7

'ENV ['COMMIT_HASH']' funciona en Bamboo, pero no en Cedar. –

1

Hay grit instalado en Heroku. Para que pueda abrir el repositorio allí usando.

repo = Repo.new(Rails.root + '.git') 
last_commit = repo.commits.first 
p last_commit.id 
p last_commit.authored_date 
+1

Gracias por la sugerencia. Lamentablemente, no funciona para mí en la consola heroku (¿sería diferente en la aplicación en sí?). Después de Repo.new, obtengo 'Grit :: NoSuchPathError:' ¿Alguna idea? –

+0

Tratando de resolver un problema similar, puedo confirmar que esto no funciona como se describe. – Andrew

+1

Esto no funciona, ya que el directorio .git no está disponible en Heroku, al menos no en la pila actual de Cedar. –

0

Creo que tiene que configurar config.gem 'grit' en su aplicación Rails para poder crear el objeto Repo.

Usted puede leer sobre la arena aquí http://github.com/mojombo/grit/

2

La razón de esto es porque cuando su aplicación se implementa en la red de banco de pruebas para servir peticiones, se compila en una "bala" para el despliegue rápido, y esto babosa doesn' Ya tengo el git repo con eso.

+0

Parece ser una respuesta al primer comentario (por Rich Apodaca) a la respuesta http://stackoverflow.com/a/1584452/1034080 (por Damien MATHIEU). –

1

Otra forma de hacerlo es desplegar con una tarea de rake que obtenga la información de versión que desee del repositorio local y actualice una variable de entorno en el lado de Heroku. Luego puede usar una etiqueta, un hash de confirmación o cualquier otra cosa, sin tener que depender de comportamientos del lado de Heroku.

Por ejemplo, si desea utilizar la última etiqueta, en su tarea de rake:

def app_version 
    %x[git describe --tags --abbrev=0].strip 
end 

Luego, en el cuerpo de su tarea:

run "git push blah:blah blah" 
run "heroku config:add APP_VERSION=#{app_version}" 

Me gustaría ser capaz de obtener esa información directamente de Git en Heroku, en lugar de escabullirla indirectamente, pero nunca he sido capaz de encontrar la manera de hacerlo.

Cuestiones relacionadas