Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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));
            }
        }
Esempio n. 6
0
 private void DeployWorkConfigSave(string currentCatalog, string currentWorkFlow, DeployWorkConfig deployWorkConfig)
 {
     _deployWorkConfigRepository.Save(currentCatalog, currentWorkFlow, deployWorkConfig);
 }
Esempio n. 7
0
        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());
        }
Esempio n. 8
0
        private void WriteFileList(DeployWorkConfig deployWorkConfig, List <string> fileList)
        {
            var fileListPath = deployWorkConfig.GeFileListPath();

            File.AppendAllText(fileListPath, string.Join("\r\n", fileList.ToArray()));
        }
Esempio n. 9
0
        private void PublishToDisk(DeployWorkConfig deployWorkConfig)
        {
            var directoryName = deployWorkConfig.GetTargetDirectoryPath();

            DirectoryCopy(directoryName, deployWorkConfig.DiskPath, true);
        }