@@ -635,7 +635,7 @@ func (f *floyDeployService) deployToSingleInstance(instanceIP, service, version,
635635
636636 // 3. 推送配置文件
637637 if wantConfig {
638- if err := f .pushConfig (instanceIP , service , fversion ); err != nil {
638+ if err := f .pushConfig (instanceIP , service , fversion , version , packageFilePath ); err != nil {
639639 return fmt .Errorf ("推送配置文件失败: %v" , err )
640640 }
641641 }
@@ -667,14 +667,14 @@ func (f *floyDeployService) rollbackToSingleInstance(instanceIP, service, target
667667 return fmt .Errorf ("推送回滚包文件失败: %v" , err )
668668 }
669669 }
670- // // 2. 推送回滚包文件
670+ // 2. 推送回滚包文件
671671 // if err := f.pushPackage(instanceIP, service, fversion, targetVersion, packageFilePath, md5sum); err != nil {
672672 // return fmt.Errorf("推送回滚包文件失败: %v", err)
673673 // }
674674
675675 // 3. 推送配置文件
676676 if wantConfig {
677- if err := f .pushConfig (instanceIP , service , fversion ); err != nil {
677+ if err := f .pushConfig (instanceIP , service , fversion , targetVersion , packageFilePath ); err != nil {
678678 return fmt .Errorf ("推送配置文件失败: %v" , err )
679679 }
680680 }
@@ -859,13 +859,15 @@ func (f *floyDeployService) pushPackage(instanceIP, service, fversion, version s
859859}
860860
861861// pushConfig 推送配置文件
862- func (f * floyDeployService ) pushConfig (instanceIP , service , fversion string ) error {
862+ func (f * floyDeployService ) pushConfig (instanceIP , service , fversion , version , packageFilePath string ) error {
863863 baseURL := fmt .Sprintf ("http://%s:%s" , instanceIP , f .port )
864864
865- // 简单的配置文件示例
866- configContent := fmt .Sprintf ("# Configuration for %s\n service.name=%s\n service.version=%s\n " ,
867- service , service , fversion )
868- configMD5 := md5 .Sum ([]byte (configContent ))
865+ // 从修改后的包文件中提取配置文件内容
866+ configContent , err := f .extractConfigFromPackage (packageFilePath )
867+ if err != nil {
868+ return fmt .Errorf ("failed to extract config from package: %v" , err )
869+ }
870+ configMD5 := md5 .Sum (configContent )
869871
870872 // 使用 multipart.Writer 构造请求体
871873 var buf bytes.Buffer
@@ -879,7 +881,7 @@ func (f *floyDeployService) pushConfig(instanceIP, service, fversion string) err
879881
880882 // 创建文件字段,设置 Content-Md5 头
881883 header := make (map [string ][]string )
882- header ["Content-Disposition" ] = []string {`form-data; name="file"; filename="app.conf"` }
884+ header ["Content-Disposition" ] = []string {fmt . Sprintf ( `form-data; name="file"; filename="%s/config.yaml"` , version ) }
883885 header ["Content-Type" ] = []string {"application/octet-stream" }
884886 header ["Content-Md5" ] = []string {base64 .URLEncoding .EncodeToString (configMD5 [:])}
885887 header ["File-Mode" ] = []string {"644" }
@@ -890,7 +892,7 @@ func (f *floyDeployService) pushConfig(instanceIP, service, fversion string) err
890892 }
891893
892894 // 写入配置文件内容
893- _ , err = fileWriter .Write ([] byte ( configContent ) )
895+ _ , err = fileWriter .Write (configContent )
894896 if err != nil {
895897 return fmt .Errorf ("failed to write config data: %v" , err )
896898 }
@@ -1545,3 +1547,28 @@ func (f *floyDeployService) createTarGz(src, dest string) error {
15451547 return nil
15461548 })
15471549}
1550+
1551+ // extractConfigFromPackage 从包文件中提取配置文件内容
1552+ func (f * floyDeployService ) extractConfigFromPackage (packageFilePath string ) ([]byte , error ) {
1553+ // 创建临时目录
1554+ tempDir , err := os .MkdirTemp ("" , "extract-config-*" )
1555+ if err != nil {
1556+ return nil , fmt .Errorf ("创建临时目录失败: %v" , err )
1557+ }
1558+ defer os .RemoveAll (tempDir )
1559+
1560+ // 解压包文件到临时目录
1561+ err = f .extractTarGz (packageFilePath , tempDir )
1562+ if err != nil {
1563+ return nil , fmt .Errorf ("解压包文件失败: %v" , err )
1564+ }
1565+
1566+ // 读取配置文件
1567+ configPath := filepath .Join (tempDir , "config.yaml" )
1568+ configContent , err := os .ReadFile (configPath )
1569+ if err != nil {
1570+ return nil , fmt .Errorf ("读取配置文件失败: %v" , err )
1571+ }
1572+
1573+ return configContent , nil
1574+ }
0 commit comments