GitHub App oluşturma
Bu kılavuz, sunucunuza kendi GitHub kimliğini nasıl kazandıracağınızı gösterir. Yaklaşık iki dakika sürer, bunu yalnızca sunucu sahibi yapar ve sunucu başına yalnızca bir kez yapılması gerekir.
Kendi hesabınızı sonradan bağlamak için GitHub entegrasyonunu kurma sayfasına bakın.
Sunucunuzun neden kendi uygulamasına ihtiyacı var
Bölüm başlığı “Sunucunuzun neden kendi uygulamasına ihtiyacı var”Tek bir kayıttan iki farklı iş çıkar ve ikisini de dürüst kılan şey uygulamadır:
| İş | Bunu ne yanıtlar | Neden önemli |
|---|---|---|
| Bir kişi oturum açıyor | Uygulamanın istemci id’si, cihaz akışı üzerinden | Sunucuda, her cihazda size ait bir kimlik bilgisi edinirsiniz — yapıştıracak ya da döndürecek belirteç yok |
| Sunucu hareket ediyor | Uygulamanın id’si + özel anahtar → kurulum belirteci | Webhook’lar, PR yoklaması ve bilet eşitlemesi artık bir insanın belirtecinin hâlâ geçerli olmasına bağlı kalmaz |
Bu tabloda olmayan şeye dikkat edin: bir istemci gizli anahtarı. GitHub’ın cihaz akışı — hem cihaz kodu isteği hem de belirteç yoklaması — yalnızca istemci id ile kimlik doğrular, dolayısıyla oturum açmak için saklanacak bir gizli anahtar yoktur.
Kendi uygulamanız olmadan da birincisi, derlemenin getirdiği istemci id üzerinden çalışır; ikincisi sunucu sahibinin kimlik bilgisine geri düşer, böylece arka plan işi ilk kurulumu yapan kişinin üzerine biner.
Önkoşullar
Bölüm başlığı “Önkoşullar”- Siz sunucu sahibisiniz —
providerApps.*işlemleri ona kapılıdır ve kart herkese görünmez - Bir GitHub hesabı ya da uygulama oluşturabileceğiniz bir organizasyon
- Genel erişime açık hiçbir şey: oturum açma bir cihaz akışıdır, dolayısıyla sunucunun gelen bağlantı noktasına, tünele, geri çağırma URL’sine veya alan adına ihtiyacı yok
Uygulamayı kaydetme
Bölüm başlığı “Uygulamayı kaydetme”- github.com/settings/apps/new adresine gidin (bir organizasyon için: Settings → Developer settings → GitHub Apps → New GitHub App)
- GitHub App name — herhangi bir şey;
Control Center (yourname)olur. Sunucunun yaptığı commit’lerde ve yorumlarda görünür - Homepage URL — herhangi bir şey, örneğin
https://github.com/your-name - Callback URL — boş bırakın. Cihaz akışında yoktur
- Enable Device Flow’u işaretleyin. Oturum açmanın onsuz çalışamayacağı tek ayar budur
- Webhook’ları ayrıca bağlamıyorsanız Webhook → Active işaretini kaldırın
- Repository permissions altında en az şunları verin:
- Contents: Read and write
- Metadata: Read-only (zorunlu)
- Pull requests: Read and write
- Issues: Read and write — biletler için GitHub Issues kullanıyorsanız ve botun PR konuşması yorum araması için (bkz. Bir GitHub PR’dan Control Center ile konuşma)
- Checks: Read-only — PR sayfasındaki CI durumu için
- Where can this GitHub App be installed? altında uygun olanı seçin — kişisel bir sunucu için “Only on this account” doğrudur
- Create GitHub App’e tıklayın
Üç değeri toplama
Bölüm başlığı “Üç değeri toplama”Uygulamanın sayfasında, oluşturduktan hemen sonra:
| Değer | Yeri |
|---|---|
| App ID | General sekmesi, üst tarafta |
| Client ID | General sekmesi, “Client secrets” altında |
| Private key | Generate a private key — bir .pem indirilir |
Özel anahtar dosyası bir kez indirilir ve GitHub onu bir daha göstermez. Yapıştırana kadar saklayın; her zaman yenisini oluşturabilirsiniz.
Bir istemci gizli anahtarı isteğe bağlıdır ve tam olarak tek bir şey sağlar: “Expire user authorization tokens” ayarını AÇIK bırakırsanız, her sekiz saatte bir yeniden oturum açmasını istemek yerine birinin belirtecini sessizce yenileyen şey odur. Oturum açmanın kendisi onu hiç kullanmaz.
Daha basit kurulum, bu süre sonunu KAPALI bırakmaktır; o zaman hiçbir yerde gizli anahtar gerekmez. Açık bırakırsanız bir gizli anahtar oluşturun ve Ayarlar → Sunucu → Tek oturum açma (Sağlayıcı uygulamaları kartı) bölümüne yapıştırın — bunun için bir ortam değişkeni yoktur ve hiçbiri derlemeye gömülmez, böylece sunucunuzda kalır.
Hesabınıza kurma
Bölüm başlığı “Hesabınıza kurma”Kayıtlı olup kurulmamış bir uygulama kişilerin kimliğini doğrulayabilir ama hiçbir şey okuyamaz.
- Uygulamanın sayfasında Install App’i açın
- Hesabınıza ya da organizasyonunuza kurun
- All repositories’i seçin ya da bu sunucunun görmesi gereken depoları seçin
Control Center’a yapıştırma
Bölüm başlığı “Control Center’a yapıştırma”- Ayarlar → Sunucu → Tek oturum açma bölümüne gidin ve Sağlayıcı uygulamaları kartına kaydırın
- GitHub bloğunda her alanı ayarlayın:
- Uygulama id — sayısal App ID
- Özel anahtar —
.pemdosyasının tamamını,BEGINveENDsatırları dahil yapıştırın - İstemci id — aynı sayfadan
- İstemci gizli anahtarı — yalnızca bir tane oluşturduysanız (belirteç yenileme için)
- Test’e tıklayın
Anahtar kaydedilirken ayrıştırılır, böylece kesilmiş ya da yanlış biçimde bir yapıştırma, saatler sonra arka plandaki bir istekte başarısız olmak yerine oracıkta reddedilir. Test daha ileri gider ve GitHub’a uygulamanın hangi hesaplara kurulu olduğunu sorar — “kaydedildi” ile “çalışıyor” farklı iddialardır ve yalnızca ikincisi bir şeyin çalışacağı anlamına gelir.
Kontrol noktası: GitHub bloğu “Sunucu kendisi olarak hareket edebilir ve kişiler oturum açabilir.” yazar ve Ayarlar → Çalışma alanı → Profil ve kimlik → Kod barındırma altındaki GitHub satırı artık GitHub ile oturum aç seçeneğini sunar.
Bunun yerine ortam değişkenleriyle yapılandırma
Bölüm başlığı “Bunun yerine ortam değişkenleriyle yapılandırma”Headless ya da betikli bir kurulumda sunucu, kayıtlı bir değeri olmadığı ilk seferde her alanı ortamdan tohumlar:
GITHUB_APP_ID=123456GITHUB_APP_PRIVATE_KEY="$(cat control-center.private-key.pem)"GITHUB_CLIENT_ID=Iv1.0123456789abcdefBunlar için komut satırı bayrağı yoktur — komut satırındaki bir gizli anahtar,
ana makinedeki her süreç tarafından ps ile okunabilir. Bunları
yapılandırmanın tek yeri ortamdır ve ortam, derlemenin getirdiği her şeyden
üstündür. .env.template tam listedir.
Yerel geliştirme için depo kökündeki .env aynı değerleri taşır ve masaüstü
uygulaması bunları başlattığı sunucuya aktarır. Anahtarı orada tek satıra
koyun: bir .env değeri tek satırdır ve çift tırnak içindeki \n, yeni satıra
çözülür.
GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEow…\n-----END RSA PRIVATE KEY-----"GITHUB_APP_ID ve GITHUB_APP_PRIVATE_KEY, sandbox belirteç aracısının zaten
okuduğu adların aynısıdır; bu nedenle ince taneli ajan belirteçleri
yapılandırmış bir ana makine oturum açma şeridini bedavaya alır. Tohumlama
alan başına bir kez olur — ondan sonra kayıtlı değer kazanır, böylece
Ayarlar’da yapılan düzenlemeler sonraki yeniden başlatmada geri alınmaz.
Aynısını Linear için yapma
Bölüm başlığı “Aynısını Linear için yapma”Linear’da cihaz akışı yoktur, dolayısıyla oturum açması tarayıcıda gidiş dönüştür ve bir geri çağırma URL’sine ihtiyaç duyar — Sağlayıcı uygulamaları kartı, kaydetmeniz gereken tam URL’yi gösterir.
- linear.app/settings/api/applications/new adresinde bir OAuth uygulaması oluşturun
- Callback URL’yi kartın gösterdiği URL’nin aynısı olarak ayarlayın
- İstemci id ve İstemci gizli anahtarı değerlerini Linear bloğuna yapıştırın
- İsteğe bağlı olarak bir çalışma alanı API anahtarı ekleyin — hiçbir insan istemediğinde sunucunun biletleri eşitlemek için kullandığı kimlik bilgisi budur
Sorun giderme
Bölüm başlığı “Sorun giderme”Oturum açma iletişim kutusu sağlayıcının cihaz kodu döndürmediğini söylüyor
Bölüm başlığı “Oturum açma iletişim kutusu sağlayıcının cihaz kodu döndürmediğini söylüyor”Uygulamada Enable Device Flow kapalı. General altında açın ve yeniden deneyin.
Test, kimlik bilgilerinin çalıştığını ama uygulamanın hiçbir yere kurulmadığını söylüyor
Bölüm başlığı “Test, kimlik bilgilerinin çalıştığını ama uygulamanın hiçbir yere kurulmadığını söylüyor”Kayıt ve kurulum ayrı adımlardır. Uygulamanın sayfasında Install App’i açın ve kurun.
Test, özel anahtarın okunamadığını söylüyor
Bölüm başlığı “Test, özel anahtarın okunamadığını söylüyor”.pem dosyasının tamamını, -----BEGIN ve -----END satırları dahil
yapıştırın. ed25519 ya da EC anahtarı kullanılamaz — GitHub Apps RSA ile
imzalar.
Bir üye oturum açtı ama hiçbir depo göremiyor
Bölüm başlığı “Bir üye oturum açtı ama hiçbir depo göremiyor”Uygulama, bu depoları sahiplenen hesaba kurulu değildir ya da kurulumu farklı depoları seçer. Üyenin kendi oturum açması yalnızca uygulamanın görmesine izin verilen kadarını sağlar.