SSH görevi üzerinden dosya kopyalama

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017

Dosyaları bir kaynak klasöründen SSH üzerinden uzak makinedeki hedef klasöre kopyalamak için bu görevi kullanın.

Bu görev, SSH kullanarak uzak makineye bağlanmanıza ve belirtilen kaynak klasörden bir dizi minimatch desenle eşleşen dosyaları uzak makinedeki hedef klasöre kopyalamanızı sağlar. Dosya aktarımı için desteklenen protokoller SFTP aracılığıyla SFTP ve SCP. Linux 'a ek olarak, macOS kısmen desteklenir (bkz. SSS).

Not

Microsoft Team Foundation Server (TFS) 2018 ve önceki sürümlerde, derleme ve yayın işlem hatları tanımlar olarak adlandırılır, çalışmalara derlemeler denir, hizmet bağlantılarına hizmet uç noktaları denir, aşamalar ortamlar olarak adlandırılır ve işler aşamalar olarak adlandırılır.

Önkoşullar

  • Görev, uzak makineye bağlanmak için SSH anahtar çiftinin kullanımını destekler.
  • Ortak anahtar önceden yüklenmiş veya uzak makineye kopyalanmalıdır.

YAML kod parçacığı

# Copy files over SSH
# Copy files or build artifacts to a remote machine over SSH
- task: CopyFilesOverSSH@0
  inputs:
    sshEndpoint: 
    #sourceFolder: # Optional
    #contents: '**' 
    #targetFolder: # Optional
    #cleanTargetFolder: false # Optional
    #overwrite: true # Optional
    #failOnEmptySource: false # Optional
    #flattenFolders: false # Optional

Bağımsız değişkenler

Bağımsız Değişken Description
SSH uç noktası Uzak makinenin bağlantı ayrıntılarını içeren bir SSH hizmeti bağlantısının adı.
-Bir SSH hizmeti bağlantısı oluşturmak için uzak makinenin ana bilgisayar adı veya IP adresi, bağlantı noktası numarası ve Kullanıcı adı gereklidir.
-Kimlik doğrulaması için özel anahtar ve parolanın belirtilmesi gerekir.
Kaynak klasör Uzak makineye kopyalanacak dosyaların kaynak klasörü. Atlanırsa, deponun kökü kullanılır. Gibi joker karakterler içeren adlar *.zip desteklenmez. Dosyalar depoda değilse değişkenleri kullanın. Örnek: $(Agent.BuildDirectory)
İçerik Kopyanın bir parçası olarak içerilecek dosya yolları. Birden çok satır minimatch desenidestekler. Varsayılan değer, ** kaynak klasörün altındaki tüm dosyaları (alt klasörler dahil) içerir.
-Örnek: **/*.jar \n **/*.war kaynak klasörün altındaki tüm jar ve War dosyalarını (alt klasörler dahil) içerir.
-Örnek: ** \n !**/*.xml kaynak klasörün altındaki tüm dosyaları (alt klasörler dahil) içerir, ancak XML dosyalarını dışlar.
Hedef klasör Uzak makinede bulunan ve dosyaların kopyalanacağı hedef klasör. Örnek: /home/user/MySite. Kullanıcının giriş dizinini belirtmek için bir tilde işareti () olan ön yüz ~ .
Gelişmiş-hedef klasörü temizle Bu seçenek işaretliyse, hedef klasördeki mevcut tüm dosyalar kopyalamadan önce silinir.
Gelişmiş-üzerine yaz Bu seçenek işaretliyse (varsayılan), hedef klasördeki mevcut dosyalar değişir.
Gelişmiş-klasörleri Düzleştir Bu seçenek işaretliyse, klasör yapısı korunmaz ve tüm dosyalar uzak makinedeki belirtilen hedef klasöre kopyalanır.
Denetim seçenekleri Bkz. Denetim seçenekleri

Desteklenen algoritmalar

Anahtar çifti algoritmaları

  • RSA
  • 'DA

Şifreleme algoritmaları

  • AES256-CBC
  • aes192-cbc
  • AES128-CBC
  • blowbalık-CBC
  • 3DES-CBC
  • arcfour256
  • arcfour128
  • Cast128-CBC
  • arcdört

OpenSSL v 1.0.1 ve üzeri için (aracıda):

  • AES256-Mrk
  • AES192-Mrk
  • AES128-Mrk

OpenSSL v 1.0.1 ve üzeri için NodeJS v 0.11.12 ve üzeri (aracıda) için:

  • AES128-GCM
  • aes128-gcm@openssh.com
  • AES256-GCM
  • aes256-gcm@openssh.com

Ayrıca bkz.

Açık kaynak

Bu görev GitHub 'daaçık kaynaktır. Geribildirim ve katılımlar hoş geldiniz.

SSS

SSH görevlerinde hangi anahtar biçimleri desteklenir?

SSH görevleri Azure Pipelines ssh2 SSH bağlantıları için Node.js paketini kullanır. SSH görevlerinin en son sürümünü kullandığınızdan emin olun. Eski sürümler OpenSSH anahtar biçimini desteklemiyor olabilir.

"Desteklenmeyen anahtar biçimi" hatası ile çalıştırırsanız, -m PEM ssh-keygen anahtarın desteklenen bir biçimde olması için bu bayrağı komutınıza eklemeniz gerekebilir.

Bir aracıya ihtiyacım var mı?

Yapınızı veya sürümünüzü çalıştırmak için en az bir aracınız olması gerekir.

Sorun yaşıyorum. Sorunları nasıl giderebilirim?

Bkz. derleme ve yayın sorunlarını giderme.

Varsayılan bir aracı havuzu seçemiyorum ve derleme veya yayınımı sıraya alamıyorum. Bu Nasıl yaparım? düzeltilsin mi?

Bkz. Aracı havuzları.

NuGet Push görevlerim şu hata ile başarısız oluyor: "hata: yerel veren sertifikası alınamıyor". Bunu nasıl giderebilirim?

Bu, güvenilen kök sertifika eklenerek düzeltilebilir. NODE_EXTRA_CA_CERTS=fileOrtam değişkenini yapı aracıya ekleyebilir veya NODE.EXTRA.CA.CERTS=file görev değişkenini işlem hattınızda ekleyebilirsiniz. Daha fazla ayrıntı için bkz. ortam değişkenleri .

Bu görev, Linux dışında işletim sistemlerini çalıştıran hedef makineler için destekleniyor mu?

Bu görev, Linux çalıştıran hedef makinelere yöneliktir.

  • Bir macOS makinesine dosya kopyalamak için bu görev kullanılabilir, ancak parola doğrulaması desteklenmez.
  • Dosyaları bir Windows makinesine kopyalamak için Windows makine dosya kopyası' nı kullanmayı göz önünde bulundurun.

TFS 'yi şirket içinde kullanıyorum ve bu özelliklerden bazılarını görmüyorum. Neden olmasın?

Bu özelliklerden bazıları yalnızca Azure Pipelines kullanılabilir ve şirket içinde henüz kullanılabilir değil. TFS 'nin en son sürümüne yükselttiysenizbazı özellikler şirket içinde kullanılabilir.