17 Mart 2021
Zellwk.com’u dağıtmak için Github Actions’ı kullanmak istedim – Github’a bir taahhüt verdiğimde, Github Actions’ın sitemi oluşturmasını ve Digital Ocean sunucuma dağıtmasını istiyorum.
Bu sürecin en zor kısmı sunucuya SSH ve rsync ile konuşlandırmaktır. SSH Dağıtımı ve SSH Eylemi gibi çeşitli Github eylemlerini denedim, ancak UZUN SÜRE için çalışma izinlerini alamadım.
Github eylemleri hakkında çoğu makale buldum ve SSH bana pek yardımcı olmadı. Sonunda sürecin nasıl işleyeceğini bulmadan önce birkaç gün boyunca hata ayıklama ile sıkışıp kaldım.
Bugün, rsync ve SSH aracılığıyla dağıtım için kesin adımları paylaşmak istiyorum. Bu işlem, Digital Ocean kullanmasanız bile herhangi bir sunucu için çalışır.
1. Adım: Bir SSH Anahtarı Oluşturun
SSH anahtarını yerel bilgisayarınızda veya sunucunuzda oluşturabilirsiniz. Daha sonra anahtarı silebileceğimiz için önemli değil, ancak SSH anahtarınızı diğer Github Eylemleri için yeniden kullanabilmeniz için bunu sunucuda yapmanızı öneririm.
Bu durumda sunucuya SSH uygulayacağız.
ssh [email protected]
Sunucuya girdikten sonra, .ssh klasörüne gidin. SSH anahtarını burada oluşturacağız.
cd ~ / .ssh
SSH Anahtarını oluşturduğumuzda, Github’ın bir SSH anahtar sayfası oluşturma konusundaki varsayılan talimatları kullanamayız. Bunun nedeni, Github Actions’ın en son Ed22159 algoritmasını desteklememesidir. Bunun yerine eski komutu kullanmamız gerekiyor.
İşte kullanmanız gereken komut. Değiştirmeyi unutma [email protected] e-posta adresinizle.
ssh-keygen -t rsa -b 4096 -C “[email protected]”
Not: Bazı Github Action yazarları, SSH anahtarlarının çalışması için PEM formatına ihtiyacımız olduğunu söyledi. Bu yanlış. Standart RSA formatıyla (yukarıda tavsiye ettiğim) test ettim ve işe yarıyor.
Daha sonra SSH Anahtar dosyasını adlandırmamız gerekiyor. Burada, varsayılan dosya adını (id_rsa olan) kullanmanızı önermiyorum. Dosya adını github eylemleri olarak değiştirmenizi öneririm, böylece bu anahtarın Github Eylemleri için kullanıldığını biliyoruz. SSH anahtarlarınızı yolun 6 ay aşağısında görüntülediğinizde açıkça belirtmeniz gerekir.
Ayrıca bir parola girmeniz de istenecektir. Github Eylemleri bizim için SSH komutunu çalıştırdığında şifre giremeyeceğimiz için bunu boş bırakın.
SSH anahtarlarınızı oluşturmayı tamamladığınızda, şöyle sevimli bir görüntü elde etmelisiniz:
Şimdi ls komutunu kullanırsanız, anahtarlarınızı .ssh klasöründe görmelisiniz.
ls
Genel anahtar bir .pub uzantısı içerirken özel anahtar içermez.
2. Adım: Yetkili anahtarlara Genel Anahtarı Ekleme
Özel anahtarı (github-actions) kullanan makinelerin sunucuya erişebilmesi için public anahtarı (github-actions.pub) yetkili_keys’e eklememiz gerekir.
En kolay yol, github-actions.pub’ı yetkili_keys içine eklemek için bir cat komutu kullanmaktır. Şöyle görünüyor:
kedi github.pub >> yetkili_keys
İşte komutun yaptığı şey:
Github.pub içeriğini cat ile alın. Yetkili anahtarlara >> ile ekleyin.
Not: Tek açılı ayraçlar (>) değil, çift dik açılı ayraçlar (>>) kullandığınızdan emin olun. Çift, eklemek, tek ise üzerine yazmak anlamına gelir. Dikkatli ol!
Adım 3: Özel anahtarı deponuzun sırlarına ekleme
Github’daki deponuza gidin ve “Ayarlar” a, ardından “Sırlar” a tıklayın. “Yeni depo sırrı” yazan bir düğme görmelisiniz.
“Yeni depo sırrı” na tıklayın ve bir sır girmeniz istenecektir. Bu sır iki şey içerir – gizli bir isim ve içindekiler. Gizli ad, içerikleri daha sonra bir Github Actions iş akışında almak için kullanılır.
Gizli adınızı yazarken, lütfen boşluk olarak alt çizgi içeren büyük harfler kullanın (yer tutucuda gösterildiği gibi). Bu, genellikle sırları belirtmek için kullandığımız bir biçimdir.
Bu durumda, gizli SSH_PRIVATE_KEY adını vermeyi seçtim.
Değer için, sunucunuza geri dönmemiz ve github-actions özel anahtarını açmamız gerekiyor. Bunu nano ile yapabiliriz ..
nano github eylemleri
Buna benzer bir dosya göreceksiniz. (Bu anahtarı ifşa etmem konusunda endişelenmeyin, onu çoktan çöpe attım. Size tam olarak ne bekleyeceğinizi göstermek istedim :)).
Her şeyi kopyalayıp Gizli değerin içine yapıştırmalıyız
Anahtarı şu şekilde kullanabiliriz:
Ardından, “Sır ekle” yi tıklayın ve sırlar sayfasına geri döneceksiniz. Burada, deponun sırları altında SSH_PRIVATE_KEY göreceksiniz.
Adım 4: Özel anahtarı bir Github Eylemler İş Akışına Ekleme
Temel bir Github Eylemler dosyasını nasıl oluşturacağınızı zaten bildiğinizi varsayıyorum, bu nedenle burada yalnızca SSH Anahtarını eklemek için gereken adımlardan bahsedeceğim.
Özel anahtarı eklemek karmaşık bir iştir, burada mevcut Github Eylemlerini aramayı seçtim. Benim için işe yarayan tek eylem Shimataro’nun SSH Anahtarını Kurmaktı.
adımlar: – ad: SSH Anahtarını Yükle kullanım: shimataro /[email protected]
SSH Anahtarını Yükle işlemi iki giriş gerektirir – anahtar ve bilinen_ ana makine değeri.
anahtar, Github Secrets’e eklediğimiz özel anahtardır. Sırları şöyle kullanabiliriz:
adımlar: – ad: SSH Anahtarını Yükle kullanım: shimataro /[email protected]
ile: anahtar: $
Bilinen_hosts değeri, tuhaf bir karma değerdir. .Ssh sunucusunda bilinen bir ana makine dosyası açarsanız, şuna benzer bir şey görürsünüz:
Bu değerlerden BİRİNİ bir Github Actions sırrına eklememiz gerekiyor. İlk etapta bu değeri nasıl elde ederiz ?! Ne yazık ki, Github Eylemlerinden hiçbiri bana bunu nasıl yapacağımı göstermedi, bu yüzden bir süre -_- etrafta dolaşmak zorunda kaldım.
Neyse ki, bu garip karma değeri oluşturmak için bir komut kullanabiliriz. Bir sonraki adımda bu komut hakkında konuşacağım. Şimdilik, bilinen_ ana makinelere rastgele bir değer eklememiz gerekiyor, böylece Shimataro’nun SSH Anahtarını Yükle bize bir hata vermesin.
adımlar: – ad: SSH Anahtarını Yükle kullanım: shimataro /[email protected]
with: key: $ known_hosts: ‘sadece-bir-yer tutucu-bu yüzden-hatalar-almayız’
5. Adım: Doğru bir bilinen_hosts değeri ekleme
Bir ssh-keyscan komutu ile doğru bilinen_hosts değerini üretebiliriz. Şuna benziyor:
ssh-keyscan -H IP_ADDRESS_OF_HOST
IP_ADDRESS_OF_HOST’u sunucunuzun gerçek ip adresi ile değiştirirseniz, böyle bir sonuç almalısınız. (IP adresimi atladım ama geri kalan her şeyi size göstermeye çalıştım).
Bunu öğrendikten sonra, IP adresini (SSH_HOST olarak adlandırdığım) Github Sırlarına manuel olarak ekleyebiliriz.
Daha sonra ssh-keyscan aracılığıyla doğru bilgiyi oluşturabilir ve bilinen_hosts dosyasına ekleyebiliriz.
adımlar: # … – ad: Bilinen Ana Bilgisayarları Ekleme çalıştır: ssh-keyscan -H $ >> ~ / .ssh / bilinen_hosts
Adım 6: Sunucuya Eşitleme Yapın
Sonunda SSH aracılığıyla sunucuya rsync yapabiliriz. Bunu yapmak için SSH kullanıcınızı ve barındırıcınızı bilmeniz gerekir. İşte komutun neye benzediği.
rsync -flags kaynağı [email protected]: hedef bayrakları, eşzamanlamak istediğiniz bayraklardır. Genellikle arşiv, ayrıntılı ve sıkıştır anlamına gelen avz kullanırız. İlk kez senkronizasyon yapıyorsanız, kuru çalıştırma için de n işaretini kullanmanızı tavsiye ederim. kaynak, kopyalamak istediğiniz kaynak dosyadır
[email protected] sunucunuzun kullanıcı adı ve ip adresidir. Bu değerler sır olarak saklanmalıdır. hedef, kopyalamak istediğiniz dosyaların konumudur.
Burada zellwk.com’u sunucuma dağıtmak için kullandığım gerçek bir örnek var.
– isim: rsync çalıştırmasıyla konuşlandırın: rsync -avz ./dist/ [email protected]$: / ev / zellwk / zellwk.com / dist /
Ayrıntılı bayrağa sahip olduğumuz için, rsync aracılığıyla kopyalanan kaynakların bir listesini görebilmelisiniz.
Bu kadar!
Sarmak
İşte her şeyi özetlemek için gereken adımlar:
Standart RSA biçimini kullanarak bir SSH Anahtar Sözcüğü oluşturun Genel anahtarı yetkili_keys’e ekleyin Özel anahtarı Github sırrı olarak ekleyin Çalıştırıcıda bir SSH Anahtarı oluşturmak için Shimataro’nun SSH Anahtarını Kurma eylemini kullanın. Ssh-keyscan ile doğru bilinen_hosts yapılandırmasını ekleyin SSH aracılığıyla Rysnc ile dağıtın
Bitti! 🙂
Bu makaleyi beğendiyseniz, lütfen bir arkadaşınıza anlatın! Twitter’da paylaşın. Bir yazım hatası tespit ederseniz, GitHub’da düzeltebilirseniz sevinirim. Teşekkür ederim!