Treat Heroku jak każdy inny zdalny Git repo - można użyć git ls-remote
:
git ls-remote heroku
(heroku
tutaj jest pilot nazwa)
UPDATE:
Ponieważ OP faktycznie chce nabyć SHA w Ruby env, jednym z możliwych sposobów byłoby użycie custom buildpack.
Aby rozpocząć, przejdź do strony Heroku's Ruby Buildpack i rozwidnij ją, aby móc tworzyć własne odmiany. Teraz sklonuj widelec i spójrz na lib/language_pack/ruby.rb
. Dodaj nową metodę, coś w stylu:
def get_SHA
#get SHA
#save SHA to ENV, ala: ENV['SHA'] = retrieved_sha
end
Sposób, w jaki można uzyskać SHA, zależy od Ciebie. Można wykonać polecenie git i używać co wrócił:
git log -1 --format="%H"
Albo można użyć @ poradę avaynshtok i użyć gem Heroku użyć metody releases
.
Następnie, gdy już posiadasz SHA, ustaw go jako ENV var.
Następnie znaleźć metodę compile
w ruby.rb
i dodać metodę get_sha
do końca to:
def compile
Dir.chdir(build_path)
install_ruby
setup_language_pack_environment
allow_git do
install_language_pack_gems
build_bundler
create_database_yml
install_binaries
run_assets_precompile_rake_task
get_sha #your additional method
end
end
Push zmiany z powrotem do GitHub, a teraz udać się do linii poleceń. Musisz dodać nowy config var do aplikacji Heroku:
heroku config:add [email protected]:<your GitHub username>/heroku-buildpack-ruby.git
Zauważ, że musisz upewnić się, że mam zastąpić <your GitHub username>
z ... no, swoją nazwę użytkownika GitHub, więc wskazują na twoje rozwidlone repozytorium.
Wreszcie wykonać ostatnie polecenie, które umożliwia Heroku labs feature który umożliwia dostęp do kompilatora ślimak użytkownik vars:
heroku labs:enable user_env_compile
Teraz powinno być wszystko gotowe. Więc co dokładnie dzieje się teraz? Cóż, kiedy będziesz naciskał na Heroku, Heroku otrzyma zmiany, a następnie zobaczy, że masz niestandardowy zestaw adresów URL buildpack. Więc pobierze twój niestandardowy buildpack z GitHub, a następnie użyje go do stworzenia ślimaka. Oznacza to, że po przejściu przez wszystkie domyślne komendy kompilacji, zakończy się to metodą get_sha
, która powinna ustawić ENV var SHA
na odpowiedni SHA. Teraz powinieneś mieć dostęp do tego ENV var z poziomu Ruby, aby zrobić to, co chcesz.
muszę zapytać czemu? Mówisz "mamy kilkoro ludzi używających tego oddziału do szukania błędów" Nie próbuję trollować, ale zastanawiam się, dlaczego nie zgłosisz błędu w dev, załaduj go, żeby inni zobaczyli i scalili raz " zatwierdzone "lub z jakiegokolwiek powodu, dla którego mają oni przeglądać określoną gałąź w heroku, a nie na swoich własnych urządzeniach. – pjammer
nie ma problemu, nie sądzę, że to trolling - Być może moja metoda nie jest wspierana przez optymalne myślenie, ale jeśli testują aplikację tylko na ich lokalnej maszynie, po prostu nie mogę spać dobrze myśląc, że to będzie działa dokładnie tak samo na Heroku. –
ale czy to jest środowisko przemieszczania dla dobra? Jak wielu facetów siedzi w kodzie? Mam na myśli, że jeśli jest błąd, jeden facet rozgałęzia się od mistrza, naprawia go, aktualizuje etapy. Zatwierdzasz to. Następnie wcielasz się w mistrza i popychasz do produkcji. Wszystko pozwala ci trochę przespać. – pjammer