Saya bertanya-tanya apakah ada cara untuk memaksa Heroku mengkompilasi ulang siput tanpa mendorong komit baru dan / atau memperbarui variabel konfigurasi.
Mengapa saya ingin melakukan ini ?:
Saya menggunakan tumpukan Cedar di Heroku untuk aplikasi Rails 3.2, dan saya mengalami masalah dengan rake assets:precompile
tugas yang gagal (selama kompilasi saja --- nanti berfungsi dengan baik dengan a heroku run
). Saya sangat curiga ini karena variabel lingkungan tertentu tidak tersedia selama waktu kompilasi siput, dan saya pikir heroku labs:enable user_env_compile
fitur eksperimental akan menyelesaikan ini.
Namun, dengan user_env_compile
fitur dihidupkan, perubahan konfigurasi tidak memicu kompilasi ulang siput, dan kode saya tidak berubah, jadi saya tidak punya komitmen baru untuk mendorong.
Tentu saja, saya bisa mendorong komit "dummy" dengan perubahan sepele, yang mungkin merupakan jawaban paling sederhana --- tapi saya bertanya-tanya apakah ada perintah heroku yang akan membiarkan saya langsung mengkompilasi ulang siput.
Terima kasih!
Jawaban:
Kompilasi slug dipanggil dengan hook pre-recept git, jadi satu-satunya cara untuk mengkompilasi ulang adalah dengan menekan komit baru.
Untuk kelengkapan, lihat artikel ini di Heroku untuk kompiler siput . Ini membahas penggunaan kait pra-menerima untuk memohon proses kompilasi siput di bawah judul Kompilasi.
sumber
repo:rebuild
tidak lagi menjadi perintah yang valid di plug-in, seperti yang dapat dilihat di sini: github.com/heroku/heroku-repo/commit/…Solusi paling sederhana untuk saat ini adalah dengan menekan komit kosong .
sumber
git reset HEAD~; git push -f heroku master
. Mengeluarkan biaya waktu dari penyebaran Heroku lain, tapi bersihkan sejarah FTW.~/.profile
tambahkan Anda ini:alias heroku-rebuild="git reset HEAD~; git push -f heroku master"
ataualias heroku-rebuild="git commit --allow-empty -m 'empty commit' && git push heroku master"
jadi Anda cukup mengetikheroku-rebuild
Pendekatan umum saya adalah melakukan:
Tidak yakin saya akan melakukan ini dalam produksi tanpa pasti, karena memang secara teknis menulis ulang komit terakhir tetapi seharusnya tidak menyebabkan masalah dalam teori. Ini sangat baik untuk ketika Anda menguji hal-hal dalam pementasan.
Sebagai bonus tambahan karena kebanyakan orang bermasalah menggunakan Vim untuk mengedit pesan komit
SHIFT-ZZ
akan dengan cepat menyimpan dan keluar dari pesan komit untuk Anda tanpa membuat perubahan apa pun padanya.Pada catatan terkait, saya agak kaget, Heroku masih tidak memiliki fitur ini. Saya sering melihat Heroku gagal digunakan karena masalah pada akhirnya.
Terima kasih kepada Michael Mior untuk ide yang digunakan
-C HEAD
untuk menghindari membuka editor.sumber
git commit --amend -C HEAD
untuk menghindari membuka editor sama sekali dan menjaga pesan komit tetap sama.Heroku telah merilis plugin yang diminta: https://github.com/heroku/heroku-repo
Untuk menginstalnya:
Untuk memaksa membangun kembali:
sumber
Perbarui: heroku repo: rekondisi telah dihapus .
Heroku memiliki Build API yang dapat Anda gunakan, lihat: Membangun dan Melepaskan Menggunakan API
Anda dapat menggunakan perintah repo: membangun kembali jika heroku-repo add-on.
https://github.com/heroku/heroku-repo
sumber
Sepertinya ini belum tersedia. Namun, permintaan fitur telah dibuka pada heroku github repo
Itu juga menyebutkan "cara alternatif untuk membangun yang tidak bergantung pada
git push
"https://github.com/ddollar/heroku-anvil
sumber
Ada plugin heroku untuk ini.
sumber
Hapus cabang, lalu dorong kembali. Tidak perlu menggunakan plugin.
sumber
git push --force
harus bekerja :)sumber