private void CodeBuild(DeployWorkConfig deployWorkConfig) { var codeBuilder = _codeBuilderFactory.Create(new MsBuildSetting(deployWorkConfig.MsBuildPath, deployWorkConfig.SlnPath, deployWorkConfig.BuildConfiguration)); codeBuilder.Build(); }
public void Save(string catalogName, string deployWorkName, DeployWorkConfig deployWorkConfig) { var path = Path.Combine(_appSettings.Value.ConfigPath, "configs", catalogName, $"{deployWorkName}.json"); var json = JsonConvert.SerializeObject(deployWorkConfig, Formatting.Indented); File.WriteAllText(path, json); }
private void PublishToFtp(DeployWorkConfig deployWorkConfig) { var directoryName = deployWorkConfig.GetTargetDirectoryPath(); var ftpSetting = deployWorkConfig.PublishFtpUserName == null ? new FtpSetting(deployWorkConfig.PublishFtpUrl) : new FtpSetting(deployWorkConfig.PublishFtpUrl, deployWorkConfig.PublishFtpUserName, deployWorkConfig.PublishFtpPassword); using (var ftp = _ftpFactory.Create(ftpSetting)) { ftp.UploadDirectory(directoryName, deployWorkConfig.PublishFtpPath); } }
private void CreateEmptyDirectory(DeployWorkConfig deployWorkConfig) { var targetFolderName = deployWorkConfig.GetTargetFolderName(); deployWorkConfig.Projects //取得被選取的專案 .Where(r => r.Selected) .Select(p => new ProjectConfigModel(deployWorkConfig, p)) //取得所有資料夾 .ToProjectDirectoryDatas() //依IgnoreRule設定排除檔案 .FilterByIgnoreRule() //依建立日期和最後修改日期排除檔案 .FilterByLastWriteTime() .CreateDirectory(targetFolderName); }
private void Compression(DeployWorkConfig deployWorkConfig) { var targetDirectoryPath = deployWorkConfig.GetTargetDirectoryPath(); var compressionFileName = deployWorkConfig.GetCompressionFileName(); var compressionFilePath = deployWorkConfig.GetCompressionFilePath(); _compressor.Compress(targetDirectoryPath, compressionFilePath, deployWorkConfig.CompressionPassword); if (!deployWorkConfig.IsCopyToFtp) { return; } var ftpSetting = deployWorkConfig.FtpUserName == null ? new FtpSetting(deployWorkConfig.FtpUserName) : new FtpSetting(deployWorkConfig.FtpUrl, deployWorkConfig.FtpUserName, deployWorkConfig.FtpPassword); using (var ftp = _ftpFactory.Create(ftpSetting)) { ftp.UploadFile(compressionFilePath, Path.Combine(deployWorkConfig.FtpPath, compressionFileName)); } }
private void DeployWorkConfigSave(string currentCatalog, string currentWorkFlow, DeployWorkConfig deployWorkConfig) { _deployWorkConfigRepository.Save(currentCatalog, currentWorkFlow, deployWorkConfig); }
public void ExecuteDeploy(DeployWorkConfig deployWorkConfig) { var targetFolderName = deployWorkConfig.GetTargetFolderName(); //編譯 if (deployWorkConfig.IsBuild) { CodeBuild(deployWorkConfig); } var fileCopyMappingModels = deployWorkConfig.Projects //取得被選取的專案 .Where(r => r.Selected) .Select(p => new ProjectConfigModel(deployWorkConfig, p)) //取得所有資料夾 .ToProjectDirectoryDatas() //取得所有檔案 .ToProjectFileDatas().ToList() //依IgnoreRule設定排除檔案 .FilterByIgnoreRule() //依最後修改日期排除檔案 .FilterByLastWriteTime() .ToFileCopyMappingModels(targetFolderName) .Distinct() .ToList(); //預先建立空資料夾 if (deployWorkConfig.IsKeepEmptyDir) { CreateEmptyDirectory(deployWorkConfig); } //複製檔案 fileCopyMappingModels.DoCopy(); //無檔案不進行後續動作 if (!fileCopyMappingModels.Any()) { throw new CustomException(@"無檔案!"); } //壓縮 if (deployWorkConfig.IsCompression) { Compression(deployWorkConfig); } //利用FTP發佈 if (deployWorkConfig.IsPublishToFtp) { PublishToFtp(deployWorkConfig); } //利用磁碟機發佈 if (deployWorkConfig.IsPublishToDisk) { PublishToDisk(deployWorkConfig); } //寫FileList Txt WriteFileList(deployWorkConfig, fileCopyMappingModels.Select(r => r.TargetPath).ToList()); }
private void WriteFileList(DeployWorkConfig deployWorkConfig, List <string> fileList) { var fileListPath = deployWorkConfig.GeFileListPath(); File.AppendAllText(fileListPath, string.Join("\r\n", fileList.ToArray())); }
private void PublishToDisk(DeployWorkConfig deployWorkConfig) { var directoryName = deployWorkConfig.GetTargetDirectoryPath(); DirectoryCopy(directoryName, deployWorkConfig.DiskPath, true); }