نحوه انتشار یک آرتیفکت جاوا ساخته شده با Gradle در مخزن Nexus قسمت 1

Summarize this content to 400 words in Persian Lang
مخزن Nexus چیست؟
مخزن Nexus یک مدیر مخزن در دسترس عموم از Sonatype است که به سازماندهی، ذخیره و توزیع مصنوعات مورد استفاده در توسعه نرم افزار کمک می کند.
بسیاری از فرمتهای مصنوع مانند Docker، Java، Go، PHP، Python و غیره را پشتیبانی میکند.
مصنوعات به زبان ساده به نتیجه فرآیند ساخت و بسته بندی نرم افزار اشاره دارد
اهمیت انتشار مصنوعات جاوا در یک مخزن مرکزی
انتشار مصنوعات جاوا در یک مخزن مرکزی، مانند Nexus، به چند دلیل یک روش مهم در توسعه نرم افزار مدرن است:
همکاری تیمی: در یک محیط تیمی، یک مخزن مرکزی به توسعه دهندگان اجازه می دهد تا کتابخانه ها، چارچوب ها یا هر کد قابل استفاده مجدد را به راحتی به اشتراک بگذارند.
ادغام با خطوط لوله CI/CD: انتشار در یک مخزن مرکزی اغلب یک مرحله کلیدی در خطوط لوله CI/CD است. مصنوعات را می توان پس از ساخت موفقیت آمیز به طور خودکار در یک مخزن مستقر کرد و آنها را بلافاصله برای آزمایش یا استقرار تولید در دسترس قرار داد.
کنترل نسخه: مخازن مرکزی به توسعه دهندگان اجازه می دهد چندین نسخه از یک مصنوع را مدیریت کنند. این امکان استفاده از نسخه های خاص را فراهم می کند و از سازگاری و ثبات در توسعه پروژه های مختلف اطمینان حاصل می کند.
پیش نیازها
کیت توسعه جاوا 17 نصب شده است.
Gradle نصب و پیکربندی شد.
دسترسی به مخزن Nexus (عمومی یا خصوصی).
درک اولیه از اسکریپت های ساخت Gradle (build.gradle).
یک نمونه EC2 یا هر سرویس ابری دیگری
Nexus را نصب کنید
بنابراین قبل از نصب نکسوس، نمونه EC2 را راهاندازی میکنیم که میتوانیم نکسوس را نصب و اجرا کنیم.
برای نصب جاوا روی نمونه
apt install openjdk-17-jre-headless
وقتی این کار انجام شد، میتوانید با استفاده از این دستور نکسوس را نصب کنید
cd /opt
wget https://download.sonatype.com/nexus/3/nexus-3.71.0-06-unix.tar.gz
ls
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
به صورت یک توپ تار می آید، بنابراین باید آن را استخراج کنیم
tar -xvzf nexus-3.71.0-06-unix.tar.gz
اجرا کنید ls و شما باید این را ببینید
اجرا کنید ls -l برای دیدن فایلها و مالکان، ریشه مالکیت فایلها را دارد، بنابراین باید مالکیت را به یک کاربر Nexus بدهیم که ما ایجاد خواهیم کرد. بهترین تمرین این است که همیشه برای هر سرویسی که می خواهیم اجرا کنیم یک کاربر ایجاد کنیم.
بیایید یک کاربر نکسوس ایجاد کنیم و کاربر را به گروه نکسوس اضافه کنیم
adduser nexus
usermod -aG nexus nexus
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
در حالی که هنوز در پوشه /opt هستید این دستور را اجرا کنید
chown -R nexus:nexus nexus-3.71.0-06
chown -R nexus:nexus sonatype-work
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
پیکربندی نکسوس را تنظیم کنید تا به عنوان یک کاربر نکسوس اجرا شودvim nexus-3.71.0-06/bin/nexus.rc
این باید فایل را در ویرایش vim باز کند run_as_user=”nexus” مثل این
اکنون به کاربر نکسوس بروید و سرویس نکسوس را اجرا کنید
su – nexus
/opt/nexus-3.71.0-06/bin/nexus start
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
از دستور زیر برای بررسی سرویس و پورت در حال اجرا استفاده کنید.
می بینیم که Nexus در پورت 8081 اجرا می شود، اگر پورت در نمونه EC2 شما مسدود شده باشد، باید گروه های امنیتی را برای اجازه دادن به ترافیک ورودی در آن پورت پیکربندی کنید.
بعد از آدرس IP عمومی نمونه خود و شماره پورت نکسوس مانند این استفاده کنید18.232.173.21:8081تا بتوانیم از مرورگر خود به رابط نکسوس دسترسی پیدا کنیم
برای دریافت رمز عبور پیش فرض برای رابط مدیریت به دایرکتوری زیر بروید
/opt/sonatype-work/nexus-3.71.0-06/
cat admin.password
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
از آن برای ورود استفاده کنید، نام کاربری admin است
پس از ورود به سیستم رابط مدیریت باید به این شکل باشد
مخزن maven-releases جایی است که مصنوعاتی را که آزمایش شده اند و آماده استقرار در تولید هستند ذخیره می کنیم.
مخزن maven-snapshots جایی است که مصنوعاتی را که هنوز در مرحله توسعه و آزمایش هستند ذخیره می کنیم.
فرض کنید یک توسعهدهنده در شرکت ما میخواهد یک مصنوع در Nexus منتشر کند، ما نمیتوانیم به او اجازه دهیم از حساب مدیریت استفاده کند، ما باید یک حساب برای آن کاربر ایجاد کنیم.
حرکت به Users برگه و create local user
به قسمت User roles بروید و یک نقش برای کاربر ایجاد شده ایجاد کنید
بهترین روش: ما نمیخواهیم که کاربر ما امتیازات زیادی داشته باشد، بنابراین فقط نقشی را اختصاص میدهیم که در آن کاربر نیاز به انجام وظیفه دارد.
ما در این مورد با gradle می سازیم، اما نقش همچنان مانند maven کار می کند، بنابراین نقش زیر را تنظیم می کنیم
اکنون آن نقشی را که ایجاد کرده ایم به کاربر اختصاص می دهیم
Gradle را با Nexus پیکربندی کنیدتنظیمات و پلاگین زیر را در فایل build.gradle اعمال کنید
group = ‘com.example’
version = ‘1.0.0-SNAPSHOT’
sourceCompatibility = ’17’
targetCompatibility = ’17’
apply plugin: ‘maven-publish’
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این بلوک کد آرتیفکتی را که ما ساخته ایم منتشر می کند
publishing {
// The Artifacts we are going to upload
publications {
maven(MavenPublication) {
artifact(“build/libs/java-react-example-${version}.jar”) {
extension ‘jar’
}
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این بلوک کد آدرسی را که قرار است در آن منتشر کنیم را مشخص می کند.این allowInsecureProtocol = trueبه انتشار اجازه می دهد بدون توجه به این واقعیت که ما از آن استفاده نمی کنیم کار کند https این credentials حساب کاربری را که در مخزن Nexus خود ایجاد کردهایم، اعلام میکند، بنابراین به کاربر اجازه میدهد تا در مخزن منتشر کند.
// The Nexus repo that we will upload the Jar file to
repositories {
maven {
name ‘nexus’
url “http://[Your Public IP]:8081/repository/maven-snapshots/”
// So that it will all HTTP
allowInsecureProtocol = true
credentials {
username project.repoUser
password project.repoPassword
}
}
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
بیایید a ایجاد کنیم gradle.properties در فایل پروژه ما برای ذخیره راز کاربر ما
repoUser = oty
repoPassword = xxxxxxxxxxx
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ایجاد یک settings.gradle اگر وجود نداشت فایل کنید و نام پروژه را اضافه کنید
rootProject.name=”java-react-example”
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اگر قبلاً پروژه را اجرا نکرده اید، آن را منتشر کنید
gradle build
gradle publish
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اکنون می توانیم به مخزن Nexus خود برویم و مصنوعات انتشار خود را مشاهده کنیم
خواندن مبارک!!!لطفا اگر مقاله را دوست داشتید لایک و فالو کنید.متشکرم
مخزن Nexus چیست؟
مخزن Nexus یک مدیر مخزن در دسترس عموم از Sonatype است که به سازماندهی، ذخیره و توزیع مصنوعات مورد استفاده در توسعه نرم افزار کمک می کند.
بسیاری از فرمتهای مصنوع مانند Docker، Java، Go، PHP، Python و غیره را پشتیبانی میکند.
مصنوعات به زبان ساده به نتیجه فرآیند ساخت و بسته بندی نرم افزار اشاره دارد
اهمیت انتشار مصنوعات جاوا در یک مخزن مرکزی
انتشار مصنوعات جاوا در یک مخزن مرکزی، مانند Nexus، به چند دلیل یک روش مهم در توسعه نرم افزار مدرن است:
-
همکاری تیمی: در یک محیط تیمی، یک مخزن مرکزی به توسعه دهندگان اجازه می دهد تا کتابخانه ها، چارچوب ها یا هر کد قابل استفاده مجدد را به راحتی به اشتراک بگذارند.
-
ادغام با خطوط لوله CI/CD: انتشار در یک مخزن مرکزی اغلب یک مرحله کلیدی در خطوط لوله CI/CD است. مصنوعات را می توان پس از ساخت موفقیت آمیز به طور خودکار در یک مخزن مستقر کرد و آنها را بلافاصله برای آزمایش یا استقرار تولید در دسترس قرار داد.
-
کنترل نسخه: مخازن مرکزی به توسعه دهندگان اجازه می دهد چندین نسخه از یک مصنوع را مدیریت کنند. این امکان استفاده از نسخه های خاص را فراهم می کند و از سازگاری و ثبات در توسعه پروژه های مختلف اطمینان حاصل می کند.
پیش نیازها
- کیت توسعه جاوا 17 نصب شده است.
- Gradle نصب و پیکربندی شد.
- دسترسی به مخزن Nexus (عمومی یا خصوصی).
- درک اولیه از اسکریپت های ساخت Gradle (build.gradle).
- یک نمونه EC2 یا هر سرویس ابری دیگری
Nexus را نصب کنید
بنابراین قبل از نصب نکسوس، نمونه EC2 را راهاندازی میکنیم که میتوانیم نکسوس را نصب و اجرا کنیم.
برای نصب جاوا روی نمونه
apt install openjdk-17-jre-headless
وقتی این کار انجام شد، میتوانید با استفاده از این دستور نکسوس را نصب کنید
cd /opt
wget https://download.sonatype.com/nexus/3/nexus-3.71.0-06-unix.tar.gz
ls
به صورت یک توپ تار می آید، بنابراین باید آن را استخراج کنیم
tar -xvzf nexus-3.71.0-06-unix.tar.gz
اجرا کنید ls
و شما باید این را ببینید
اجرا کنید ls -l
برای دیدن فایلها و مالکان، ریشه مالکیت فایلها را دارد، بنابراین باید مالکیت را به یک کاربر Nexus بدهیم که ما ایجاد خواهیم کرد. بهترین تمرین این است که همیشه برای هر سرویسی که می خواهیم اجرا کنیم یک کاربر ایجاد کنیم.
بیایید یک کاربر نکسوس ایجاد کنیم و کاربر را به گروه نکسوس اضافه کنیم
adduser nexus
usermod -aG nexus nexus
در حالی که هنوز در پوشه /opt هستید این دستور را اجرا کنید
chown -R nexus:nexus nexus-3.71.0-06
chown -R nexus:nexus sonatype-work
پیکربندی نکسوس را تنظیم کنید تا به عنوان یک کاربر نکسوس اجرا شودvim nexus-3.71.0-06/bin/nexus.rc
این باید فایل را در ویرایش vim باز کند run_as_user="nexus"
مثل این
اکنون به کاربر نکسوس بروید و سرویس نکسوس را اجرا کنید
su - nexus
/opt/nexus-3.71.0-06/bin/nexus start
از دستور زیر برای بررسی سرویس و پورت در حال اجرا استفاده کنید.
می بینیم که Nexus در پورت 8081 اجرا می شود، اگر پورت در نمونه EC2 شما مسدود شده باشد، باید گروه های امنیتی را برای اجازه دادن به ترافیک ورودی در آن پورت پیکربندی کنید.
بعد از آدرس IP عمومی نمونه خود و شماره پورت نکسوس مانند این استفاده کنید18.232.173.21:8081
تا بتوانیم از مرورگر خود به رابط نکسوس دسترسی پیدا کنیم
برای دریافت رمز عبور پیش فرض برای رابط مدیریت به دایرکتوری زیر بروید
/opt/sonatype-work/nexus-3.71.0-06/
cat admin.password
از آن برای ورود استفاده کنید، نام کاربری admin است
پس از ورود به سیستم رابط مدیریت باید به این شکل باشد
- مخزن maven-releases جایی است که مصنوعاتی را که آزمایش شده اند و آماده استقرار در تولید هستند ذخیره می کنیم.
- مخزن maven-snapshots جایی است که مصنوعاتی را که هنوز در مرحله توسعه و آزمایش هستند ذخیره می کنیم.
فرض کنید یک توسعهدهنده در شرکت ما میخواهد یک مصنوع در Nexus منتشر کند، ما نمیتوانیم به او اجازه دهیم از حساب مدیریت استفاده کند، ما باید یک حساب برای آن کاربر ایجاد کنیم.
حرکت به Users
برگه و create local user
به قسمت User roles بروید و یک نقش برای کاربر ایجاد شده ایجاد کنید
بهترین روش: ما نمیخواهیم که کاربر ما امتیازات زیادی داشته باشد، بنابراین فقط نقشی را اختصاص میدهیم که در آن کاربر نیاز به انجام وظیفه دارد.
ما در این مورد با gradle می سازیم، اما نقش همچنان مانند maven کار می کند، بنابراین نقش زیر را تنظیم می کنیم
اکنون آن نقشی را که ایجاد کرده ایم به کاربر اختصاص می دهیم
Gradle را با Nexus پیکربندی کنید
تنظیمات و پلاگین زیر را در فایل build.gradle اعمال کنید
group = 'com.example'
version = '1.0.0-SNAPSHOT'
sourceCompatibility = '17'
targetCompatibility = '17'
apply plugin: 'maven-publish'
این بلوک کد آرتیفکتی را که ما ساخته ایم منتشر می کند
publishing {
// The Artifacts we are going to upload
publications {
maven(MavenPublication) {
artifact("build/libs/java-react-example-${version}.jar") {
extension 'jar'
}
}
}
این بلوک کد آدرسی را که قرار است در آن منتشر کنیم را مشخص می کند.
این allowInsecureProtocol = true
به انتشار اجازه می دهد بدون توجه به این واقعیت که ما از آن استفاده نمی کنیم کار کند https
این credentials
حساب کاربری را که در مخزن Nexus خود ایجاد کردهایم، اعلام میکند، بنابراین به کاربر اجازه میدهد تا در مخزن منتشر کند.
// The Nexus repo that we will upload the Jar file to
repositories {
maven {
name 'nexus'
url "http://[Your Public IP]:8081/repository/maven-snapshots/"
// So that it will all HTTP
allowInsecureProtocol = true
credentials {
username project.repoUser
password project.repoPassword
}
}
}
}
بیایید a ایجاد کنیم gradle.properties
در فایل پروژه ما برای ذخیره راز کاربر ما
repoUser = oty
repoPassword = xxxxxxxxxxx
ایجاد یک settings.gradle
اگر وجود نداشت فایل کنید و نام پروژه را اضافه کنید
rootProject.name="java-react-example"
اگر قبلاً پروژه را اجرا نکرده اید، آن را منتشر کنید
gradle build
gradle publish
اکنون می توانیم به مخزن Nexus خود برویم و مصنوعات انتشار خود را مشاهده کنیم
خواندن مبارک!!!
لطفا اگر مقاله را دوست داشتید لایک و فالو کنید.
متشکرم