สร้าง Cleanup Policy บน Sonatype Nexus Repository

พอดีเจอปัญหาว่าตัว Nexus มันไม่ Clear เนื่อที่ในส่วนของ Docker ที่ทำไว้ ทำให้ Disk VM มันบวมขึ้นมาเรื่อยๆ และใช่ครับมันเป็น Bug ตั้งแต่ 3.82 "https://community.sonatype.com/t/issue-with-cleanup-policies-preview-displays-artifact-but-they-are-not-cleaned-when-the-cleanup-task-run/14960/11"

ก็เลยต้อง Update เป็น Version 3.91.1 ใช่ครับเจอปัญหาใหม่มาแทน เพราะเจ้า Sonatype Nexus มันลด Repository Limit จาก 100,000 Components เหลือเพียง 40,000 มีคนบ่นมากมาย "Why decreasing component and request limits?" ย้ายไปให้จ่ายเงินนี่แหละ

สำหรับทางแก้มีหลายทางครับ ย้ายไปใช้เจ้าอื่น / ขึ้น nexus อีกตัว หรือ Cleanup Policy สำหรับ Blog นี้ของเลือก Clean Up Policy และมา Recap Step ไว้ด้วย

1. Create Cleanup Policy

ใช้ User ที่มีสิทธิ Admin จากนั้นทำตามขั้นตอนเลยครับ

  • เข้ามาที่ส่วน Admin Panel > Setting > Repository > Create > Cleanup Policy
  • หน้าจอ Cleanup Policy เราสามารถเลือกได้ ว่าจะเอา All Component หรือ ตามประเภท Package ที่ต้องการได้ครับ สำหรับ Rule ที่ใช้ได้กับทุก Package
    - Component Age : ตามอายุของ Package ที่เอาเข้ามา เช่น Package อายุมากกว่า 360 วัน ให้เอาออก
    - Component Usage : ตามจำนวนวันที่ได้ Download มาล่าสุด เช่น 120 วันที่ไม่มีการ Download ให้เอาออก
  • นอกจากนี้มี ถ้าเลือก Package เฉพาะ เช่น NuGet จะมี Option เพิ่มขึ้นมา ตาม RegEx Pattern (Asset Name Matcher เช่น เราอาจจะเอา Package ที่เป็น ลบ Package ที่เป็น Pre-Alpha / Beta ออกไป

ที่ บ จะมีปัญหาคนชอบนำ Package Pre-Alpha / Beta เอาไปส่งลูกค้าขึ้น Prod ผมเลยปรับให้ตัว CI มัน Step เลยเฉพาะลงไปใน Package ด้วย เช่น 3.4.1-Pre-Alpha287 เติม 287 เข้าไป เพราะมีปัญหาตกลงกันไม่ได้เรื่องว่าใครจะเป็น owner ระหว่างกลุ่มคนที่ทำ Common Package กับกลุ่มคนที่เอาไปใช้งาน เลยต้องทำให้มัน Unique เพราะ ถ้า Prod ลูกค้าพังจะได้ตามถูกครับ

  • หลังจากกำหนด Policy เสร็จ เราสามารถลอง Preview ได้ครับ ตาม Repository ที่สนใจ

2. Apply Cleanup Policy

หลังจากที่เราได้กำหนด Clean Up Policy ที่นี้มา Apply กับ Repository ของเรา ซึ่งหลักๆในตัว Sonar เราจะมี Repository 2 แบบ

  • Proxy ทำหน้าที่เป็น Cache และเป็นทางผ่านไปยัง Repo หลักนอกองค์กรอย่าง
    - dotnet > nuget จะไปที่ nuget.org
    - java > maven ไปที่ mvnrepository.com
    - ts/js > npm ไปที่ npmjs.com เป็นต้น
  • Hosted เราตั้งขึ้นมาเองครับ เอา Common Package ขึ้นมา และแชร์ร่วมกันครับ

สำหรับขั้นตอนมี ดังนี้

  • เข้ามาที่ส่วน Admin Panel > Setting > Repository > Repositories
  • เลือก Repository และกด Edit ขึ้นมาครับ และเลือก Cleanp Policy ที่กำหนดไว้ครับ และกด Save

หลังจากนั้นก็รอครับ ปกติมี Task ส่วน Cleanup ลบ Package ตาม Cleanup Policy และ Task สำหรับ Compact Claim พื้นที่กลับมาครับ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.