JavaRush /جاوا بلاگ /Random-UR /مسلسل انضمام
Nikita Koliadin
سطح
Днепр

مسلسل انضمام

گروپ میں شائع ہوا۔
سلام، ساتھیوں! اپنے کمپیوٹر کو مسلسل ایک پروجیکٹ بنانے پر مجبور کرتے ہوئے تھک گئے ہیں؟ پھر یہ مضمون آپ کے لئے ہے! مسلسل انضمام - 1اس مضمون میں میں مسلسل انضمام (اس کے بعد صرف CI) سے متعلق مواد کو مختصر اور واضح طور پر پیش کرنے کی کوشش کروں گا، میں ایسے آسان سوالات کے جواب دوں گا جیسے: "یہ کیا ہے؟"، "کیوں؟" اور کیوں؟" اور میں ایک ٹیسٹ پروجیکٹ کی مثال دوں گا۔ یہ مضمون ایک تجربہ کار صارف کے لیے ہے جو کم از کم Build System: Maven سے واقف ہے، Git کو استعمال کرنا جانتا ہے اور GitHub پر پروجیکٹس کو آگے بڑھانے کا طریقہ جانتا ہے ۔

"مسلسل انضمام کیا ہے؟"

آئیے دیکھتے ہیں کہ وکی اس سوال کے بارے میں ہمیں کیا بتاتا ہے : کنٹینیوئس انٹیگریشن (سی آئی، انگلش کنٹینیوئس انٹیگریشن) ایک سافٹ ویئر ڈویلپمنٹ پریکٹس ہے جس میں ورکنگ کاپیوں کو ایک عام مین ڈیولپمنٹ برانچ میں دن میں کئی بار ضم کرنا اور ابتدائی طور پر پروجیکٹ کی بار بار خودکار تعمیرات کرنا شامل ہے۔ ممکنہ نقائص کا پتہ لگانا اور انضمام کے مسائل کے حل۔ خوفناک، ہے نا؟ آئیے اس اصطلاح کو آسان الفاظ میں سمجھانے کی کوشش کرتے ہیں: مسلسل انضمام کچھ مشینوں پر مخصوص کنفیگس کے ساتھ سافٹ ویئر کی تعمیر اور خودکار جانچ کا ایک نظام ہے تاکہ کیڑے اور عدم مطابقت کا پتہ لگایا جا سکے۔ ٹھیک ہے، کوئی مسئلہ نہیں، ہم نے اسے سمجھا، لیکن مندرجہ ذیل منطقی سوال پیدا ہوتا ہے:

ہمیں CI کی ضرورت کیوں ہے؟

آئیے ذرا تصور کریں کہ آپ ایک بڑا پروجیکٹ لکھ رہے ہیں، اور فعالیت کو شامل کرنے/تبدیل کرنے کی ضرورت ہے۔ آپ اسے کامیابی کے ساتھ لکھتے ہیں، ٹیسٹ لکھتے ہیں، اسے لانچ کرتے ہیں، اور سب کچھ ٹھیک لگتا ہے، لیکن نہیں۔ ایسے حالات ہوتے ہیں جب ایک فنکشنلٹی میں تبدیلی دوسرے کو متاثر کرتی ہے، دوسرے تیسرے پر، اور اسی طرح، یہاں تک کہ کوئی بگ کہیں پھسل جائے اور کوئی خرابی واقع نہ ہو جائے۔ ہاں، آپ کہہ سکتے ہیں کہ یہ ممکنہ طور پر ایک ناقص ڈیزائن کردہ پروجیکٹ ہے، اور ہوسکتا ہے کہ آپ درست ہوں، لیکن اگر ایسا نہیں ہے، اور یہ کنکشن واقعی وہاں ہونے چاہئیں تو کیا ہوگا؟ اور کیا ہوگا اگر آپ ایک سے زیادہ بار ایک پروجیکٹ لکھ رہے ہیں اور بنا رہے ہیں، جو اکثر ہوتا ہے؟ آپ نے اپنی نئی تحریری فعالیت پر ٹیسٹ چلائے، اور انہوں نے مثبت نتیجہ دیا۔ آپ نے جلدی سے عہد کیا، پھر کہیں دھکیل دیا اور پہلے ہی یہ سوچ رہے ہیں کہ مہنگی وہسکی پیتے ہوئے گھر میں سگار کیسے پیو گے، لیکن نہیں۔ افسوس، آپ کا ساتھی، یا باس، چاہے کوئی بھی ہو، کہتا ہے کہ آپ کی کمٹمنٹ کی وجہ سے پوری عمارت کریش ہو گئی۔ آپ حیرانی کے ساتھ کہتے ہیں کہ آپ ایک پروگرامر ہیں، آپ نے ہر چیز کو جانچ لیا ہے۔ لیکن اکثر پورے پروجیکٹ کو مسلسل جانچنے کے لیے کوئی وقت نہیں ہوتا، اور آپ نے صرف اپنے کوڈ کے ٹکڑے کی جانچ کی جس میں آپ نے تبدیلیاں کیں، نہ کہ پوری اسمبلی کو۔ یہ وہ جگہ ہے جہاں CI ہماری مدد کے لیے آتا ہے۔ کسی بھی وسیلہ پر ہر دھکے کے ساتھ، CI آپ کے پروجیکٹ کو شروع سے بنائے گا، تمام ٹیسٹ چلائے گا، اور صرف اس صورت میں جب تمام ٹیسٹ پاس ہو جائیں اور پروجیکٹ بن جائے، بلڈ کو پاسنگ اسٹیٹس ملے گا ۔ بصورت دیگر آپ کو واپسی کرنے کا موقع ملے گا اور دیکھیں گے کہ کیا غلط ہوا۔ لہذا، یہ سوال پوچھنے کا وقت ہے "یہ کیوں اور دوسری صورت میں نہیں؟" اور سافٹ ویئر کے نفاذ پر ایک نظر ڈالیں۔ مثال جیسا کہ میں پہلے ہی کہہ چکا ہوں، مضمون ان لوگوں کے لیے ہے جو Maven اور Git سے واقف ہیں۔ اس لیے، میں امید کروں گا کہ آپ جانتے ہوں گے کہ میں CI وغیرہ کو ترتیب دینے کے علاوہ کیسے اور کیا کرتا ہوں۔
  1. سب سے پہلے، آئیے ایک سادہ Maven ٹیسٹ پروجیکٹ بنائیں اور اس میں ایک کلاس بنائیں جو پرنٹ کرے "Hello World!" اور کچھ آسان آپریشن کرتا ہے، اور آئیے اس کلاس کے لیے آسان ترین ٹیسٹ لکھتے ہیں۔

    نتیجے کے طور پر، ہمارے پاس ایک قدیم پروجیکٹ ڈھانچہ ہونا چاہئے:

    مسلسل انضمام - 2

    تمام ذرائع میرے GitHub پر ہوں گے۔ اس سے کوئی فرق نہیں پڑتا کہ آپ اپنے مین میں کیا لکھتے ہیں اور کون سے ٹیسٹ ہوں گے۔

  2. ہم اپنے پروجیکٹ کو GitHub کی طرف دھکیلتے ہیں۔

  3. اب آتا ہے مزے کا حصہ۔ CI سے، میں نے Travis CI کو اس کی دستیابی اور وشوسنییتا کی وجہ سے منتخب کیا۔ ٹریوس اپنے سورس کوڈ کی میزبانی کے لیے GitHub کا استعمال کرتا ہے۔

    تو، Travis CI ویب سائٹ پر جائیں اور GitHub کے ذریعے لاگ ان ہوں۔ پروفائل میں ہم اپنے پروجیکٹ کو جوڑتے ہیں:

    مسلسل انضمام - 3

    ہر دھکے کے ساتھ اسمبلی کے لیے سب کچھ تیار ہے، لیکن سوال یہ ہے کہ کیسے جمع کیا جائے؟

  4. ہم اپنے پیارے IDEA پر واپس آتے ہیں اور .travis.yml فائل بناتے ہیں۔

    یہ فائل Travis build config کے لیے ذمہ دار ہے۔ آئیے سب سے زیادہ مقبول ترتیب کو دیکھتے ہیں:

    • آپ کو اس زبان کی وضاحت کرنے کی ضرورت ہے جس میں پروجیکٹ کو لاگو کیا گیا ہے۔
    • تعمیر کو تیز تر بنانے کے لیے ڈائریکٹریز کے راستے کی وضاحت کریں ۔
    • کامیاب یا ناکام اسمبلی کے بارے میں اطلاعات کا طریقہ بتائیں ۔

    یہ وہی ہے جو ایک عام ٹریوس تشکیل کی طرح نظر آنا چاہئے:

    # https://docs.travis-ci.com/user/languages/java/
    language: java
    jdk: oraclejdk9
    
    # Improve Build Speed https://dzone.com/articles/travis-ci-tutorial-java-projects
    cache:
      directories:
      - $HOME/.m2
    
    # Notifications https://docs.travis-ci.com/user/notifications/
    notifications:
      email:
        recipients:
          - qThegamEp@gmail.com
        on_success: always # default: change
        on_failure: always # default: always

    میں نے وضاحت کے لیے لنکس کے ساتھ تبصرے شامل کیے ہیں۔

  5. ہم دوبارہ GitHub پر دھکیلتے ہیں اور Travis ویب سائٹ کھولتے ہیں ، پروجیکٹ کو منتخب کرتے ہیں اور تعمیر کی نگرانی کرتے ہیں۔ نتیجے کے طور پر، ہمیں ایک کامیاب تعمیر کے بارے میں ایک اطلاع موصول ہوتی ہے:

    مسلسل انضمام - 4 مسلسل انضمام - 5

    اس کے علاوہ سائٹ پر ہم اپنے پروجیکٹ کی کامیاب اسمبلی کے ساتھ ایک بیج دیکھ سکتے ہیں، جسے ہم اپنے README.md میں داخل کر سکتے ہیں:

    مسلسل انضمام - 6
مفید لنکس: متن میں غلطیاں اور کوتاہیاں ہوسکتی ہیں۔ آپکی توجہ کا شکریہ!
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION