Apakah perlu memiliki git repo hanya di openshift? Saya sudah memiliki repo git bitbucket / github dan lebih suka mendorong ke sana saja. Bisakah saya langsung mengaitkannya sehingga openshift mendapat isyarat?
Atau untuk penyederhanaan, saya hanya mendorong di github, tetapi ketika saya ingin menerapkan, saya melakukan sesuatu dengan openshift?
Saya melakukan cek ini tapi saya bingung: itu berbicara tentang penggabungan keluar dan baru (openshift) git?
Jawaban:
Saya mendapat kesan bahwa Anda belum terbiasa menggunakan git. Saya menyarankan Anda untuk masuk ke git untuk memahami sepenuhnya cara mendorong kode Anda ke openshift. Namun demikian izinkan saya mencoba menjelaskan kepada Anda langkah-langkah yang terlibat: Seperti yang akan Anda lakukan dengan git pada umumnya, pendekatan yang dipilih di sini adalah dengan mengkloning repo git Anda yang lain (mis. Di bitbucket) ke mesin lokal Anda:
git clone <bitbucket-repo-url>
Klon lokal Anda kemudian memiliki repo Anda yang lain (bitbucket dll.) Sebagai repo jarak jauh. Repo jarak jauh Anda disimpan dengan alias "origin" (alias default yang digunakan oleh git jika Anda menggandakan). Anda kemudian menambahkan repo openshift sebagai remote ke klon Anda. Anda melakukannya saat secara eksplisit menggunakan alias untuk repo jarak jauh yang Anda tambahkan - saya menggunakan "openshift" sebagai alias di sini:
git remote add openshift -f <openshift-git-repo-url>
Agar dapat mendorong kode dari repo git lokal Anda ke openshift, pertama-tama Anda harus menggabungkan repo openshift dengan klon bitbucket lokal Anda. Anda melakukannya dengan menerbitkan secara lokal:
git merge openshift/master -s recursive -X ours
Dengan perintah ini Anda memberi tahu git untuk menggabungkan cabang master di repo git openshift dengan repo git lokal Anda. Anda menyuruhnya untuk menggabungkan menggunakan strategi penggabungan rekursif dan memilih versi ("milik kami") Anda ketika ada konflik.
Setelah penggabungan dijalankan, Anda siap untuk mendorong repo git Anda ke openshift. Anda melakukannya dengan melakukan:
git push openshift HEAD
Anda memberi tahu git untuk mendorong kode lokal Anda ke cabang HEAD pada repo jarak jauh yang disebut "openshift" (alias kami menyimpan repo git openshift, beberapa paragraf lebih jauh).
btw. Saya menulis blog jboss tools yang mendemonstrasikan cara menggunakan openshift-java-client beberapa bulan yang lalu: https://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-java-client . Anda akan melihat langkah-langkah di atas pada paragraf terakhir "Kita hampir sampai".
sumber
--allow-unrelated-histories
karena git default telah berubah untuk tidak mengizinkan penggabungan riwayat yang tidak terkait.Saya tahu pertanyaannya berumur 2 tahun dan jawaban @adietisheim telah diterima. Saya pribadi tidak suka menggabungkan repo openshift ke klon lokal saya karena saya tidak ingin mencampur repo OpenShift ke dalam cabang master dari repo publik saya.
Dengan asumsi Anda telah menambahkan penggunaan jarak jauh
git remote add openshift <openshift-git-repo-url>
, inilah yang akan saya lakukan:Buat cabang lokal baru
openshift
berdasarkanmaster
cabang tersebut.Anda bisa membuat beberapa komitmen di cabang
openshift
seperti konfigurasi penerapan aplikasi Anda. Kemudian, dorong cabang saat ini ke master pencocokan ref jarak jauh di repositori OpenShift dengan bendera-f
untuk menimpa semuanya dimaster
cabang jarak jauh .Setiap kali saya ingin menerapkan aplikasi saya ke OpenShift, saya akan memeriksa
openshift
cabang lokal dan menggabungkanmaster
cabang dengannya, lalu memaksa push ke OpenShift, namun-f
mungkin tidak diperlukan untuk dorongan berikutnya:sumber
Dari folder proyek Anda, lakukan
Anda dapat membaca Mendorong ke dua asal jarak jauh git dari satu repositori dan Mengubah asal jarak jauh git .
sumber
git push backup master
sudah cukup, Anda tidak perlu menentukan kedua sisi refspec tersebut.git push -u all
ke 'semua' ke remote default. Saat melakukangit push
, itu akan mendorong ke 2 repo!Saya setuju dengan jawaban @adietisheim: Anda perlu memahami lebih baik git sebelum menerapkan dengan openshift =)
Sekarang, meskipun Anda memahami git, belum tentu jelas bagaimana menerapkan repo yang ada jika struktur direktori Anda tidak cocok dengan struktur direktori yang diperlukan oleh openshift, dan jika Anda ingin mempertahankan struktur direktori lama Anda.
Untuk itu, saya punya tips berikut ini:
opsi terpisah yang bergantung pada penyebaran dari yang tidak ke dalam file yang berbeda. Misalnya, saya memisahkan pengaturan database saya dari pengaturan lain menjadi file yang berbeda seperti:
settings_deploy / openshift
settings_deploy / localhost
dan kemudian symlink ke pengujian localhost Anda sebagai sesuatu seperti:
Pilihan lainnya adalah mendeteksi host dengan menggunakan variabel lingkungan:
Ini sedikit lebih sederhana karena memungkinkan Anda untuk meletakkan semua konfigurasi pada satu file. Ini sedikit kurang umum, karena jika salah satu dari host Anda menawarkan
OPENSHIFT_APP_NAME
variabel lingkungan (tidak mungkin untuk yang ini) metode tersebut akan rusak. Bagaimanapun, Anda masih harus memisahkan dengan jelas apa yang bergantung pada penerapan dan yang tidak.buat direktori penerapan lokal
mengkloning template openshift awal ke dalamnya
buat skrip penerapan yang:
hardlink semuanya dari lokal lama Anda yang ada ke lokasi yang benar di
hardlink cepat dibuat dan menggunakan sedikit memori
Anda bisa menggunakan sesuatu seperti:
cp -lrf original_repo_dir deploy_repo_dir
simpan hanya
settings_deploy
file yang benar di repo penerapan:cd deploy_repo
mv settings_deploy/openshift settings_deploy_file
rm -r settings_deploy
memaksa mendorong:
cd deploy_repo
git push -f origin master
bersihkan repo penerapan:
git reset --hard HEAD
git clean -df
bagi mereka yang tertarik dengan django deployment, saya punya contoh di github saya , secara khusus memeriksa
deploy.sh
skrip dan proyekprojects/elearn
yang di-deploy.sumber
Anda seharusnya dapat meneruskan repositori Git yang ada ke dalam pipeline aset melalui
Repositori Git jarak jauh kemudian mengirimkan aplikasi awal untuk OpenShift.
Sebagai kemungkinan kedua, Anda dapat melewati pembuatan repositori OpenSHift Git lokal melalui
lalu gunakan langkah-langkah yang dijelaskan di atas untuk menggabungkan repositori Git jarak jauh OpenShift ke dalam repositori Git lokal Anda.
sumber
Jawaban Mohannd sempurna, tetapi saya ingin merangkum solusi lengkapnya, jika ada orang lain yang membutuhkannya:
Untuk menggunakan repo github Anda sebagai repo Openshift, saat ini tidak ada solusi yang tepat, karena Openhfit menggunakan git hooks untuk memicu penerapan atau penempatan ulang berdasarkan komitmen Anda. Namun, cara paling cerdas adalah menggunakan 2 repo (yang openshift dan github Anda) untuk mendorong kode secara bersamaan.
Untuk melakukannya: Tambahkan remote bernama "semua" dan tambahkan 2 url push ke dalamnya.
Kemudian setel remote dengan nama 'all' sebagai remote push default:
Untuk melakukan dan memasukkan kode Anda, lanjutkan seperti biasa: Ini akan mendorong 2 remote dan menerapkan pada OpenShift
Dan lihat hasilnya:
Semoga ini membantu
sumber
Ada cara untuk melakukan apa yang Anda inginkan, yaitu melewati repo Openshift. Yang perlu Anda lakukan adalah menyiapkan jenkins, dan meminta agar ia melakukan polling pada repositori Anda sendiri.
Ada tautan di sini yang menjelaskan cara menyiapkannya dari awal: http://blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html
sumber
Saya mengalami masalah dalam menerapkan repositori kode yang sudah ada sebelumnya ke Openshift. Dalam konteks khusus saya, di mana saya mencoba menerapkan webapp tomcat, file konfigurasi tomcat Openshift yang disertakan dalam folder .openshift sangat penting.
Yang memperbaikinya bagi saya adalah dimasukkannya folder .openshift di pohon sumber saya yang sudah ada, serta penyertaan profil openshift di file maven pom.xml saya.
Hal ini sangat mungkin terjadi dengan menggabungkan repositori Anda dengan yang upstream baru openshift. Bagi saya, inilah "mengapa" di balik kalimat berikut dalam jawaban bagus adietisheim:
"Agar dapat mendorong kode dari repo git lokal Anda ke openshift, pertama-tama Anda harus menggabungkan repo openshift dengan klon bitbucket lokal Anda."
Dalam kasus saya, penggabungan ini diperlukan untuk mendapatkan file konfigurasi dari direktori .openshift. Butuh waktu lama untuk mengetahuinya karena mendorong tanpa direktori .openshift masih membuat aplikasi saya berhasil dibangun dan diterapkan. Satu-satunya perilaku yang saya lihat adalah laporan tentang file jsp yang hilang, yang membuat saya berpikir bahwa masalahnya terkait dengan konfigurasi web.xml dan servlet saya sendiri.
sumber
Jika Anda menggunakan github, Anda dapat mengonfigurasi travis untuk membuat penerapan setiap kali Anda membuat perubahan di repositori github Anda
http://docs.travis-ci.com/user/deployment/openshift/
sumber
Jika Anda menggunakan java maka ada pendekatan alternatif. Tetapi bahkan dalam pendekatan ini Anda masih akan menggunakan repositori git OpenShift. Repositori git yang disediakan oleh OpenShift adalah cara Anda memberikan OpenShift kode Anda, yang dapat Anda terapkan:
Anda dapat - alih-alih memasukkan kode Anda ke OpenShift git repo - cukup berikan file perang Anda. Anda mengkloning repo git OpenShift ke komputer lokal Anda. Anda kemudian membangun perang dari sumber aplikasi Anda dan meletakkan perang ini ke dalam folder penerapan dalam repo git OpenShift Anda (klon). Anda kemudian menambahkan, melakukan dan mendorong klon lokal Anda ke OpenShift. Setelah dorongan berhasil dijalankan, JBoss AS7 akan memilih perang Anda dan menyebarkannya.
sumber
AMBIL MUDAH!
langkah 1: Buat aplikasi. Dengan metode favorit Anda (dari gitRepository, pra-pembuat Openshift, dll). jika Anda menggunakan metode konsol
langkah 2:
rhc git-clone nameApp
langkah 3:
rhc app-configure nameApp --auto-deploy
langkah 4: NIKMATI!
sumber