โครงการนี้ทำจากสององค์ประกอบ:
| การพึ่งพาอาศัยกัน | ความต้องการเวอร์ชัน |
|---|---|
| ชวา | 17 |
| หนอง | 3.9 |
| mysql | 8.3 |
| เวที | 10.13 |
| CLOC 1 | 2.00 |
| Git 1 | 2.43 |
ก่อนที่จะเลือกว่าจะเริ่มต้นด้วยกระดานชนวนที่สะอาดหรือฐานข้อมูลล่วงหน้าให้ตรวจสอบให้แน่ใจว่าเป็นไปตามข้อกำหนดต่อไปนี้:
เขตเวลาฐานข้อมูลถูกตั้งค่าเป็น +00:00 คุณสามารถตรวจสอบสิ่งนี้ผ่าน:
SELECT @@ global . time_zone , @@ session . time_zone ; ตัวกำหนดตารางเวลาเปิด ON คุณสามารถตรวจสอบสิ่งนี้ผ่าน:
SELECT @@ global . event_scheduler ; การบันทึกไบนารีในระหว่างการสร้างฟังก์ชั่นที่เก็บไว้ถูกตั้งค่าเป็น 1 คุณสามารถตรวจสอบสิ่งนี้ผ่าน:
SELECT @@ global . log_bin_trust_function_creators ; ฐานข้อมูล gse มีอยู่ เพื่อสร้าง:
CREATE DATABASE gse CHARACTER SET utf8 COLLATE utf8_bin; ผู้ใช้ gseadmin มีอยู่ เพื่อสร้างหนึ่งรัน:
CREATE USER IF NOT EXISTS ' gseadmin ' @ ' % ' IDENTIFIED BY ' Lugano2020 ' ;
GRANT ALL ON gse. * TO ' gseadmin ' @ ' % ' ;หากคุณต้องการเริ่มต้นด้วยฐานข้อมูลที่ว่างเปล่าไม่มีอะไรให้คุณทำอีกแล้ว ตารางที่ต้องการจะถูกสร้างขึ้นผ่านการย้ายถิ่นของ Flyway ในระหว่างการเริ่มต้นเริ่มต้นของเซิร์ฟเวอร์ อย่างไรก็ตามหากคุณต้องการให้ฐานข้อมูลท้องถิ่นของคุณมีข้อมูลล่วงหน้าพร้อมข้อมูลที่เรารวบรวมไว้คุณสามารถใช้การถ่ายโอนข้อมูล SQL ที่เรานำเสนอได้ เราโฮสต์การถ่ายโอนข้อมูลนี้พร้อมกับการทำซ้ำสี่ครั้งก่อนหน้านี้บน Dropbox หลังจากเลือกและดาวน์โหลดการถ่ายโอนข้อมูลฐานข้อมูลคุณสามารถนำเข้าข้อมูลได้โดยดำเนินการ:
gzcat < gse.sql.gz | mysql -u gseadmin -pLugano2020 gse ก่อนที่จะพยายามเรียกใช้เซิร์ฟเวอร์คุณควรสร้างโทเค็นการเข้าถึงส่วนบุคคลของคุณเอง (PAT) ตัวรวบรวมข้อมูลขึ้นอยู่กับ GraphQL API ซึ่งไม่สามารถเข้าถึงได้โดยไม่ต้องรับรองความถูกต้อง ในการเข้าถึงข้อมูลที่ได้รับจาก GitHub API โทเค็นจะต้องมีขอบเขต repo
เมื่อเสร็จแล้วคุณสามารถเรียกใช้เซิร์ฟเวอร์ในเครื่องโดยใช้ Maven:
mvn spring-boot:runหากคุณต้องการใช้ประโยชน์จากโทเค็นเมื่อคลานระบุไว้ในอาร์กิวเมนต์รัน:
mvn spring-boot:run -Dspring-boot.run.arguments=--ghs.github.tokens= < your_access_token >หรือคุณสามารถรวบรวมและเรียกใช้ขวดโดยตรง:
mvn clean package
ln target/ghs-application- * .jar target/ghs-application.jar
java -Dghs.github.tokens= < your_access_token > -jar target/ghs-application.jar นี่คือรายการของอาร์กิวเมนต์เฉพาะโครงการที่สนับสนุนโดยแอปพลิเคชันที่คุณสามารถค้นหาได้ใน application.properties :
| ชื่อตัวแปร | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
ghs.github.tokens | รายการ <String> | รายการโทเค็นการเข้าถึงส่วนบุคคลของ GitHub (PATS) ที่จะใช้สำหรับการขุด GitHub API ต้องไม่มีสตริงว่างเปล่า | |
ghs.github.api-version | สาย | 2022-11-28 | GitHub API รุ่นใช้ในการดำเนินการต่าง ๆ |
ghs.git.username | สาย | การเข้าสู่ระบบบัญชี GIT ที่ใช้ในการโต้ตอบกับระบบควบคุมเวอร์ชัน | |
ghs.git.password | สาย | รหัสผ่านที่ใช้เพื่อตรวจสอบบัญชี GIT ที่ระบุ | |
ghs.git.config | แผนที่ <สตริงสตริง> | ดู Application.properties | การกำหนดค่า GIT เฉพาะกับแอปพลิเคชัน 2 |
ghs.git.folder-prefix | สาย | GHS-Clone- | คำนำหน้าใช้สำหรับไดเรกทอรีชั่วคราวที่เก็บข้อมูลที่วิเคราะห์จะถูกโคลน ต้องไม่ว่างเปล่า |
ghs.git.ls-remote-timeout-duration | ระยะเวลา | 1m | เวลาสูงสุดที่อนุญาตสำหรับการแสดงรายการรีโมทของที่เก็บ GIT |
ghs.git.clone-timeout-duration | ระยะเวลา | 5m | เวลาสูงสุดที่อนุญาตสำหรับการโคลนนิ่งที่เก็บ Git |
ghs.cloc.max-file-size | ทำให้เป็นข้อมูล | 25MB | เกณฑ์ขนาดไฟล์สูงสุดสำหรับการวิเคราะห์ด้วย cloc |
ghs.cloc.timeout-duration | ระยะเวลา | 5m | เวลาสูงสุดอนุญาตให้คำสั่ง cloc ดำเนินการ |
ghs.crawler.enabled | บูลีน | จริง | ระบุว่าเปิดใช้งานงานคลานที่เก็บข้อมูลหรือไม่ |
ghs.crawler.minimum-stars | int | 10 | ขอบเขตที่ต่ำกว่ารวมสำหรับจำนวนดาวที่โครงการจำเป็นต้องมีเพื่อที่จะได้รับการรวบรวมโดย Crawler ต้องไม่เป็นลบ |
ghs.crawler.languages | รายการ <String> | ดู Application.properties | รายการชื่อภาษาที่จะถูกกำหนดเป้าหมายระหว่างการรวบรวมข้อมูล ต้องไม่มีสตริงว่างเปล่า เพื่อให้แน่ใจว่าการดำเนินงานที่เหมาะสมชื่อจะต้องตรงกับชื่อที่ระบุในนักภาษาศาสตร์ |
ghs.crawler.start-date | วันที่ | 2008-01-01T00: 00: 00Z | วันที่เริ่มต้นของตัวรวบรวมข้อมูลเริ่มต้น: วันที่เร็วที่สุดสำหรับการรวบรวมข้อมูลที่เก็บข้อมูลในกรณีที่ไม่มีงานรวบรวมข้อมูลก่อนหน้า รูปแบบค่า: yyyy-MM-ddTHH:MM:SSZ |
ghs.crawler.delay-between-runs | ระยะเวลา | PT6H | ความล่าช้าระหว่างการทำงานของตัวรวบรวมข้อมูลต่อเนื่องซึ่งแสดงเป็นสตริงระยะเวลา |
ghs.analysis.enabled | บูลีน | จริง | ระบุว่าเปิดใช้งานงานการวิเคราะห์หรือไม่ |
ghs.analysis.delay-between-runs | ระยะเวลา | PT6H | ความล่าช้าระหว่างการวิเคราะห์อย่างต่อเนื่องซึ่งแสดงเป็นสตริงระยะเวลา |
ghs.analysis.max-pool-threads | int | 3 | จำนวนเธรดสดสูงสุดที่อุทิศให้กับการวิเคราะห์ที่เก็บพร้อมกัน ต้องเป็นบวก |
ghs.clean-up.enabled | บูลีน | จริง | ระบุว่างานที่รับผิดชอบในการลบที่เก็บที่ไม่พร้อมใช้งาน (ทำความสะอาด) เปิดใช้งานหรือไม่ |
ghs.clean-up.cron | crontrigger | 0 0 0 * * 1 | ความล่าช้าระหว่างการทำความสะอาดที่เก็บต่อเนื่องซึ่งแสดงเป็นการแสดงออกของสปริงโครน |
วิธีที่ง่ายที่สุดในการเปิดตัวส่วนหน้าคือผ่านสคริปต์ NPM ที่ให้ไว้:
npm run dev คุณยังสามารถใช้เว็บเซิร์ฟเวอร์ในตัวของ IDE หรือเว็บเซิร์ฟเวอร์อื่น ๆ ที่คุณเลือก ไม่ว่าคุณจะเลือกวิธีใดสำหรับโฮสติ้งใด CORS back-end จำกัด ให้คุณใช้พอร์ต 3030 และ 7030
สแต็กการปรับใช้ประกอบด้วยคอนเทนเนอร์ต่อไปนี้:
| ชื่อบริการ/คอนเทนเนอร์ | ภาพ | คำอธิบาย | เปิดใช้งานโดยค่าเริ่มต้น |
|---|---|---|---|
gse-database | mysql | ฐานข้อมูลแพลตฟอร์ม | |
gse-migration | เวที | การประหารชีวิตการโยกย้ายฐานข้อมูล | |
gse-backup | FileFit/DB-backup | การสำรองฐานข้อมูลอัตโนมัติ | |
gse-server | SEART/GHS-Server | แอปพลิเคชันสปริงบูตเซิร์ฟเวอร์ | |
gse-website | seart/ghs-website | Nginx Web Server ทำหน้าที่เป็นซัพพลายเออร์ HTML | |
gse-watchtower | containrrr/watchtower | การอัปเดตภาพ Docker Automatic |
ห่วงโซ่การพึ่งพาบริการสามารถแสดงได้ดังนี้:
กราฟ RL
GSE-Migration-> | service_healthy | GSE-database
gse-backup-> | service_completed_successfully | การอพยพ GSE
GSE-Server-> | service_completed_successfully | การอพยพ GSE
gse-website-> | service_healthy | เซิร์ฟเวอร์ GSE
gse-watchtower-> | service_healthy | GSE-WEBSITE
การปรับใช้เป็นเรื่องง่ายเหมือนในไดเรกทอรี Docker-compose, Run:
docker-compose -f docker-compose.yml up -d เป็นสิ่งสำคัญที่จะต้องทราบว่าขั้นตอนการตั้งค่าฐานข้อมูลที่อธิบายไว้ในส่วนก่อนหน้านี้ไม่จำเป็นเมื่อทำงานกับ Docker นี่เป็นเพราะคุณสมบัติสภาพแวดล้อมที่ส่งไปยังบริการจะสร้างผู้ใช้ MySQL และฐานข้อมูลโดยอัตโนมัติในระหว่างการเริ่มต้นเริ่มต้น อย่างไรก็ตามความสะดวกสบายนี้ไม่ได้ขยายไปสู่ข้อมูลฐานข้อมูลเนื่องจากการปรับใช้เริ่มต้นสร้างฐานข้อมูลที่ว่างเปล่า หากคุณต้องการใช้ข้อมูลที่มีอยู่จากการถ่ายโอนข้อมูลคุณจะต้องแทนที่การปรับใช้ docker-compose เพื่อใช้อิมเมจฐานข้อมูลที่กำหนดเองซึ่งรวมถึงการถ่ายโอนข้อมูล เพื่อให้บรรลุสิ่งนี้ให้สร้างไฟล์ docker-compose.override.yml ของคุณด้วยเนื้อหาต่อไปนี้:
version : " 3.9 "
name : " gse "
services :
gse-database :
image : seart/ghs-database:latestภาพด้านบนจะรวมถึงการถ่ายโอนข้อมูลฐานข้อมูลที่สดใหม่ที่สุดโดย 15 วันหลังข้อมูลแพลตฟอร์มจริง สำหรับรุ่นฐานข้อมูลที่เฉพาะเจาะจงมากขึ้นให้ดูที่หน้า Docker Hub อย่าลืมระบุไฟล์ Override ระหว่างการปรับใช้:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d ข้อมูลฐานข้อมูลนั้นถูกเก็บไว้ในปริมาณ gse-data ในขณะที่บันทึกส่วนหลังที่มีรายละเอียดจะถูกเก็บไว้ในเมาท์ท้องถิ่นที่เรียกว่าบันทึก นอกจากนี้คุณยังสามารถใช้ไฟล์ Override นี้เพื่อเปลี่ยนการกำหนดค่าของบริการอื่น ๆ ตัวอย่างเช่นการระบุ Pat ของคุณเองสำหรับ Crawler:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-server :
environment :
GHS_GITHUB_TOKENS : " A single or comma-separated list of token(s) "
GHS_CRAWLER_ENABLED : " true " คุณสมบัติการบูตสปริงใด ๆ หรือคุณสมบัติเฉพาะแอปพลิเคชันดังกล่าวสามารถแทนที่ได้ โปรดทราบว่าทรัพย์สินเช่น ghs.xy สอดคล้องกับการตั้งค่าสภาพแวดล้อมการบริการ GHS_X_Y
อีกตัวอย่างหนึ่งคือบริการสำรองฐานข้อมูลอัตโนมัติซึ่งถูกปิดใช้งานโดยค่าเริ่มต้น หากคุณต้องการเปิดใช้งานอีกครั้งคุณจะต้องเพิ่มสิ่งต่อไปนี้ในไฟล์ Override:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-backup :
restart : always
entrypoint : " /init " หากคุณมีแนวคิดสำหรับคุณสมบัติที่คุณต้องการดูนำไปใช้หรือหากคุณมีคำถามใด ๆ เราขอแนะนำให้คุณสร้างการสนทนาใหม่ โดยการเริ่มต้นการสนทนาคุณสามารถมีส่วนร่วมกับชุมชนและทีมงานของเราและเราจะตอบกลับทันทีเพื่อตอบคำถามของคุณหรือพิจารณาคำขอคุณสมบัติของคุณ
หากต้องการรายงานปัญหาหรือข้อบกพร่องใด ๆ ที่คุณพบให้สร้างปัญหาใหม่ การให้ข้อมูลโดยละเอียดเกี่ยวกับปัญหาที่คุณเผชิญจะช่วยให้เราเข้าใจและแก้ไขได้อย่างมีประสิทธิภาพมากขึ้น มั่นใจได้ว่าเรามุ่งมั่นที่จะตรวจสอบและตอบสนองต่อปัญหาที่คุณเพิ่มขึ้นทันทีทำงานร่วมกันเพื่อแก้ไขข้อบกพร่องใด ๆ และปรับปรุงประสบการณ์ผู้ใช้โดยรวม
อ้างถึงการสนับสนุน. MD สำหรับข้อมูลเพิ่มเติม
ในการทำเช่นนั้นคุณควรคุ้นเคยกับเครื่องมือและแนวทางปฏิบัติของฐานข้อมูล โครงการนี้ใช้ Flyway โดย Redgate กฎทั่วไปสำหรับการจัดการสคีมาคือ: สร้างการอพยพใหม่และ ละเว้นจากการแก้ไขกฎที่มีอยู่
จำเป็นต้องใช้ในเวอร์ชันก่อน 1.7.0 ↩ 2
เราแยกการกำหนดค่า GIT ระดับแอปพลิเคชันออกจากการที่ผู้ใช้ใช้เพื่อหลีกเลี่ยงความขัดแย้งหรือความสับสนที่อาจเกิดขึ้น ดังนั้นไฟล์กำหนดค่าเฉพาะแอปพลิเคชันจึงถูกสร้างขึ้นในไดเรกทอรีชั่วคราวเมื่อเริ่มต้น การตั้งค่าที่เพิ่มเข้ามาในไฟล์ขึ้นอยู่กับรายการ ghs.git.config ใน application.properties โปรดทราบว่าไม่รองรับส่วนย่อยการกำหนดค่า