اتصال گیت به سی پنل و آپدیت خودکار از گیت

1 Star2 Stars3 Stars4 Stars5 Stars ۱۲ امتیاز
Loading…

بسم الله الرحمن الرحیم

یکی از ابزارهای توسعه دهنده ها git هست که باهاش میتونیم یک نسخه از تغییرات رو داشته باشیم و همچنین با یک تیم روی یک پروژه کار کنیم و git حواسش به تغییرات و تداخل ها و تاریخچه تغییرات باشه.

از سرویس های معروف ارائه دهنده گیت github هست،که اینجا از این سرویس استفاده می کنیم.

توسعه دهنده ها به چه صورت فایل جدید خود را به سرور منتقل می کنند؟

خب توسعه دهنده ی وب وقتی تغییرات جدیدی در کدش داده میشه باید روی سایت هم اعمال کنه.که معمولا این کار رو به صورت دستی و با ftp انجام میدن،اما این روش بصورت دستی و زمان بر هست.چه بهتر که این روش رو خودکار کنیم و اون هم چه بهتر که خودش از گیت بخونه و بروز کنه.

یکی از پنل های معروف هاستینگ سی پنل هست.گرچه از هر هاستینگ دیگه ای که از cron و ssh پشتیبانی میکنه هم برای این آموزش می تونید استفاده کنید.

خب برای این کار اول باید به ssh و cron هاست دسترسی داشته باشیم.اولی برای اجرای دستورات git و ساخت کلید دومی برای اجرای خودکار این دستورات.

آموزش آپدیت خودکار کد توسط ssh از git

ابتدا روی هاست سی پنل یک کلید با دستور زیر می سازیم،سوالات و فقط اینتر بزنید.به جای ایمیل هم ایمیلی که توی گیت ثبت کردید رو بدید:

ssh-keygen -t ed25519 -C "yourGitEmail@gmail.com"

خب این برای شما کلیدتون رو میسازه.الان باید کلید رو بدیم به گیت تا هاست ما رو بشناسه و بهش اجازه دسترسی بده.اما کلیدها در کدوم مسیر ساخته شدن؟وقتی که دستور بالا رو میزنید و تمام میشه در انتها مسیر ذخیره سازی رو میگه،پس دقت کنید، به این صورت:

Your identification has been saved in /home/username/.ssh/id_ed25519
Your public key has been saved in /home/username/.ssh/id_ed25519.pub

خب محتوای کلید که این دومی باشه ( public key ) رو با دستور زیر می گیریم :

cat /home/username/.ssh/id_ed25519.pub

خب اینجا باید بریم توی گیت و وارد حساب شده و به مسیر زیری بریم:

https://github.com/username/repo/settings/keys

به جای نام کاربری و ریپو مشخصات خودتون رو بزنید. یا وارد ریپوی خودتون بشید بعد از قسمت settings منویDeploy keys و بعد Add deploy key

اینجا یه عنوان می نویسیم. و در قسمت Key محتویات کلیدمون رو اضافه کرده و ذخیره می کنیم.

خب تا اینجا اتصال هاست به گیت انجام شده.حالا بریم یه دستور بزنیم که خودکار از مخزن گیت بفرسته روی هاست.

از سی پنل یه cronjobs جدید می سازیم با هر مدت زمانی که مد نظرتونه.

با دستور زیر مسیری که گیت نصبه رو پیدا می کنیم(اگر نبود باید نصب شه)؛

which git

دقت کنید در cron باید میسر دقیق دستورات داده شه تا کار کنه.برای همین مسیر دقیق گیت رو از دستور بالا گرفتیم،که خروجی چیزی شبیه به این میشه:

$ which git
/usr/local/cpanel/3rdparty/lib/path-bin/git

خب بریم توی پوشه ای که قراره کدها قرار بگیره:

cd /home/username/your-project

خب الان مخزن رو کلون می کنیم روی هاست تا ببینیم اتصال درسته یا نه:

git clone git@github.com:username/your-project.git .

اگر پیام تایید key اومد اینتر و yes رو بزنید.اگر مخزن با موفقیت کلون شد همه چی درسته.

یادتون باشه اگر پروژه متعلقات composer داره دستور composer update هم بزنید.

خب مسیری که پروژه کلون شده رو بر میداریم تا توی cron استفاده کنیم،که میشه این:

/home/username/your-project

با توجه به مسیر بالا و مسیر گیت دستور ما میشه این:

cd /home/username/your-project && /usr/local/cpanel/3rdparty/lib/path-bin/git reset --hard HEAD && /usr/local/cpanel/3rdparty/lib/path-bin/git pull -q origin master 

این دستور رو توی cron وارد کنید و تمام!

راستی اگر پروژه شما لاراول هست با دستور زیر می تونید migrate هم خودکار کنید تا دیتابیس هم خودکار اکی شه:

cd /home/username/your-project && /usr/local/cpanel/3rdparty/lib/path-bin/git reset --hard HEAD && /usr/local/cpanel/3rdparty/lib/path-bin/git pull -q origin master && /home/username/your-project/artisan migrate  

اگر با خطای ssh: connect to host github.com port 22: Connection timed out’ error رو برو شدید از لینک زیر میتونید حلش کنید:

https://gist.github.com/Tamal/1cc77f88ef3e900aeae65f0e5e504794

نظرات شما را پذیراییم