Proyek ini terbuat dari dua komponen:
| Ketergantungan | Persyaratan Versi |
|---|---|
| Jawa | 17 |
| Maven | 3.9 |
| Mysql | 8.3 |
| Jalan terbang | 10.13 |
| Cloc 1 | 2.00 |
| Git 1 | 2.43 |
Sebelum memilih apakah akan memulai dengan database yang bersih atau pra-populasi, pastikan persyaratan berikut dipenuhi:
Basis data basis data diatur ke +00:00 . Anda dapat memverifikasi ini melalui:
SELECT @@ global . time_zone , @@ session . time_zone ; Penjadwal acara ON . Anda dapat memverifikasi ini melalui:
SELECT @@ global . event_scheduler ; Pencatatan biner selama pembuatan fungsi yang disimpan diatur ke 1 . Anda dapat memverifikasi ini melalui:
SELECT @@ global . log_bin_trust_function_creators ; Database gse ada. Untuk membuatnya:
CREATE DATABASE gse CHARACTER SET utf8 COLLATE utf8_bin; Pengguna gseadmin ada. Untuk membuat satu, jalankan:
CREATE USER IF NOT EXISTS ' gseadmin ' @ ' % ' IDENTIFIED BY ' Lugano2020 ' ;
GRANT ALL ON gse. * TO ' gseadmin ' @ ' % ' ;Jika Anda lebih suka memulai dengan database kosong, tidak ada lagi yang bisa Anda lakukan. Tabel yang diperlukan akan dihasilkan melalui migrasi terbang selama startup awal server. Namun, jika Anda ingin database lokal Anda telah dipopulasi sebelumnya dengan data yang telah kami kumpulkan, Anda dapat menggunakan dump SQL terkompresi yang kami tawarkan. Kami menjadi tuan rumah dump ini, bersama dengan empat iterasi sebelumnya, di Dropbox. Setelah memilih dan mengunduh tempat pembuangan basis data, Anda dapat mengimpor data dengan mengeksekusi:
gzcat < gse.sql.gz | mysql -u gseadmin -pLugano2020 gse Sebelum mencoba menjalankan server, Anda harus menghasilkan Token Akses Pribadi GitHub (PAT) Anda sendiri. Perayap bergantung pada API GraphQL, yang tidak dapat diakses tanpa otentikasi. Untuk mengakses informasi yang disediakan oleh Github API, token harus menyertakan ruang lingkup repo .
Setelah selesai, Anda dapat menjalankan server secara lokal menggunakan Maven:
mvn spring-boot:runJika Anda ingin menggunakan token saat merangkak, tentukan dalam argumen run:
mvn spring-boot:run -Dspring-boot.run.arguments=--ghs.github.tokens= < your_access_token >Atau, Anda dapat mengkompilasi dan menjalankan toples secara langsung:
mvn clean package
ln target/ghs-application- * .jar target/ghs-application.jar
java -Dghs.github.tokens= < your_access_token > -jar target/ghs-application.jar Berikut adalah daftar argumen khusus proyek yang didukung oleh aplikasi yang dapat Anda temukan di application.properties :
| Nama variabel | Jenis | Nilai default | Keterangan |
|---|---|---|---|
ghs.github.tokens | Daftar <String> | Daftar Token Akses Pribadi GitHub (PAT) yang akan digunakan untuk menambang API GitHub. Tidak boleh berisi string kosong. | |
ghs.github.api-version | Rangkaian | 2022-11-28 | Versi API GitHub digunakan di berbagai operasi. |
ghs.git.username | Rangkaian | Login Akun GIT digunakan untuk berinteraksi dengan sistem kontrol versi. | |
ghs.git.password | Rangkaian | Kata sandi yang digunakan untuk mengotentikasi akun GIT yang ditentukan. | |
ghs.git.config | Peta <String, String> | Lihat Application.Properties | Konfigurasi GIT Khusus untuk aplikasi 2 . |
ghs.git.folder-prefix | Rangkaian | ghs-clone- | Awalan yang digunakan untuk direktori sementara di mana repositori yang dianalisis dikloning. Tidak boleh kosong. |
ghs.git.ls-remote-timeout-duration | Lamanya | 1m | Waktu maksimum yang diizinkan untuk mencantumkan remote repositori git. |
ghs.git.clone-timeout-duration | Lamanya | 5m | Waktu maksimum diizinkan untuk mengkloning repositori git. |
ghs.cloc.max-file-size | Dataasi | 25MB | Ambang ukuran file maksimum untuk analisis dengan cloc . |
ghs.cloc.timeout-duration | Lamanya | 5m | Waktu maksimum diizinkan untuk perintah cloc untuk dieksekusi. |
ghs.crawler.enabled | Boolean | BENAR | Menentukan apakah pekerjaan merangkak repositori diaktifkan. |
ghs.crawler.minimum-stars | int | 10 | Batas bawah inklusif untuk jumlah bintang yang harus dimiliki proyek agar dapat diambil oleh crawler. Tidak boleh negatif. |
ghs.crawler.languages | Daftar <String> | Lihat Application.Properties | Daftar nama bahasa yang akan ditargetkan selama merangkak. Tidak boleh berisi string kosong. Untuk memastikan operasi yang tepat, nama -nama tersebut harus cocok dengan yang ditentukan dalam ahli bahasa. |
ghs.crawler.start-date | Tanggal | 2008-01-01T00: 00: 00Z | Tanggal mulai crawler default: Tanggal paling awal untuk merangkak repositori tanpa adanya pekerjaan merangkak sebelumnya. Format Nilai: yyyy-MM-ddTHH:MM:SSZ . |
ghs.crawler.delay-between-runs | Lamanya | Pt6h | Penundaan antara crawler berturut -turut berjalan, dinyatakan sebagai string durasi. |
ghs.analysis.enabled | Boolean | BENAR | Menentukan apakah pekerjaan analisis diaktifkan. |
ghs.analysis.delay-between-runs | Lamanya | Pt6h | Penundaan antara analisis berturut -turut berjalan, dinyatakan sebagai string durasi. |
ghs.analysis.max-pool-threads | int | 3 | Jumlah maksimum utas hidup yang didedikasikan untuk menganalisis repositori. Harus positif. |
ghs.clean-up.enabled | Boolean | BENAR | Menentukan apakah pekerjaan yang bertanggung jawab untuk menghapus repositori yang tidak tersedia (pembersihan) diaktifkan. |
ghs.clean-up.cron | Crontrigger | 0 0 0 * * 1 | Penundaan antara pembersihan repositori berturut-turut berjalan, dinyatakan sebagai ekspresi cron pegas. |
Cara termudah untuk meluncurkan front-end adalah melalui skrip NPM yang disediakan:
npm run dev Anda juga dapat menggunakan server web bawaan IDE Anda, atau server web lainnya pilihan Anda. Terlepas dari metode mana yang Anda pilih untuk hosting, CORS back-end membatasi Anda untuk menggunakan port 3030 dan 7030 .
Tumpukan penempatan terdiri dari wadah berikut:
| Layanan/Nama Kontainer | Gambar | Keterangan | Diaktifkan secara default |
|---|---|---|---|
gse-database | mysql | Database Platform | ✅ |
gse-migration | jalan terbang | Eksekusi Migrasi Skema Database | ✅ |
gse-backup | lelah/db-backup | Cadangan Database Otomatis | ❎ |
gse-server | Seart/GHS-Server | Aplikasi Server Spring Boot | ✅ |
gse-website | Seart/GHS-Website | Nginx Web Server bertindak sebagai pemasok HTML | ✅ |
gse-watchtower | berisirrr/Watchtower | Pembaruan Gambar Docker Otomatis | ❎ |
Rantai ketergantungan layanan dapat direpresentasikan sebagai berikut:
Grafik RL
GSE-Migration-> | Service_Healthy | GSE-Database
GSE-Backup-> | service_completed_successly | migrasi GSE
gse-server-> | service_completed_successly | migrasi GSE
GSE-WEBSITE-> | Service_Healthy | GSE-Server
GSE-WatchTower-> | service_healthy | GSE-WEBSITE
Menyebarkan sesederhana, di direktori komposisi Docker, jalankan:
docker-compose -f docker-compose.yml up -d Penting untuk dicatat bahwa langkah -langkah pengaturan basis data yang dijelaskan di bagian sebelumnya tidak diperlukan saat berjalan dengan Docker. Ini karena properti lingkungan yang diteruskan ke layanan akan secara otomatis membuat pengguna dan database MySQL selama startup awal. Namun, kenyamanan ini tidak meluas ke data database, karena penyebaran default menghasilkan database kosong. Jika Anda ingin menggunakan data yang ada dari Dumps, Anda harus mengganti penyebaran docker-compose untuk menggunakan gambar basis data khusus yang mencakup dump. Untuk mencapai hal ini, buat file docker-compose.override.yml Anda dengan konten berikut:
version : " 3.9 "
name : " gse "
services :
gse-database :
image : seart/ghs-database:latestGambar di atas akan mencakup pembuangan basis data paling segar, hampir 15 hari di belakang data platform yang sebenarnya. Untuk versi basis data yang lebih spesifik, lihat halaman hub Docker. Ingatlah untuk menentukan file override selama penyebaran:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d Data basis data itu sendiri disimpan dalam volume gse-data , sementara log back-end terperinci disimpan dalam pemasangan lokal yang disebut log. Anda juga dapat menggunakan file override ini untuk mengubah konfigurasi layanan lain. Misalnya, menentukan tepukan Anda sendiri untuk 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 " Salah satu properti boot pegas atau properti khusus aplikasi yang disebutkan di atas dapat ditimpa. Perlu diingat bahwa properti seperti ghs.xy sesuai dengan pengaturan lingkungan layanan GHS_X_Y .
Contoh lain adalah layanan cadangan database otomatis, yang dinonaktifkan secara default. Jika Anda ingin mengaktifkannya kembali, Anda harus menambahkan yang berikut ini ke file override:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-backup :
restart : always
entrypoint : " /init " Jika Anda memiliki ide untuk fitur yang ingin Anda lihat diterapkan atau jika Anda memiliki pertanyaan, kami mendorong Anda untuk membuat diskusi baru. Dengan memulai diskusi, Anda dapat terlibat dengan komunitas dan tim kami, dan kami akan segera merespons untuk menjawab pertanyaan Anda atau mempertimbangkan permintaan fitur Anda.
Untuk melaporkan masalah atau bug yang Anda temui, buat masalah baru. Memberikan informasi terperinci tentang masalah yang Anda hadapi akan membantu kami memahami dan mengatasinya secara lebih efektif. Yakinlah, kami berkomitmen untuk segera meninjau dan menanggapi masalah yang Anda angkat, bekerja secara kolaboratif untuk menyelesaikan bug apa pun dan meningkatkan pengalaman pengguna secara keseluruhan.
Lihat Kontribusi.MD untuk informasi lebih lanjut.
Untuk melakukan itu, Anda harus terbiasa dengan alat dan praktik migrasi basis data. Proyek ini menggunakan Flyway oleh Redgate. Aturan umum untuk manipulasi skema adalah: membuat migrasi baru, dan menahan diri untuk tidak mengedit yang sudah ada .
Hanya diperlukan dalam versi sebelum 1.7.0 ↩ ↩ 2
Kami memisahkan konfigurasi GIT tingkat aplikasi dari yang digunakan oleh pengguna untuk menghindari potensi konflik atau kebingungan. Dengan demikian, file konfigurasi khusus aplikasi dibuat di direktori sementara pada startup. Pengaturan yang ditambahkan ke file tergantung pada entri ghs.git.config di application.properties . Perhatikan bahwa subbagian konfigurasi saat ini tidak didukung. ↩