diff --git a/cmd/server/task/deploy/local_script_stage.go b/cmd/server/task/deploy/local_script_stage.go
index 3b53acb2..41d1fcc4 100644
--- a/cmd/server/task/deploy/local_script_stage.go
+++ b/cmd/server/task/deploy/local_script_stage.go
@@ -77,6 +77,7 @@ func (gsync *Gsync) runLocalScript() error {
}
scriptText := commitInfo.ReplaceVars(content)
scriptText = project.ReplaceVars(scriptText)
+ scriptText = gsync.ProjectServers.ReplaceVars(scriptText)
scriptText = project.ReplaceCustomVars(scriptText)
// run yaml script by docker
diff --git a/internal/model/project_server.go b/internal/model/project_server.go
index 7aca38c3..feacb5cc 100644
--- a/internal/model/project_server.go
+++ b/internal/model/project_server.go
@@ -5,6 +5,7 @@
package model
import (
+ "encoding/json"
"fmt"
"strings"
@@ -212,6 +213,16 @@ func (ps ProjectServer) ReplaceVars(script string) string {
return ps.Server.ReplaceVars(script)
}
+func (ps ProjectServers) ReplaceVars(script string) string {
+ var servers []Server
+ for _, p := range ps {
+ servers = append(servers, p.Server)
+ }
+ serverJson, _ := json.Marshal(servers)
+ script = strings.Replace(script, "${PROJECT_SERVERS}", string(serverJson), -1)
+ return script
+}
+
// Note that doubling a single-quote inside a single-quoted string gives you a single-quote
// see `man rsync`
func quote(s string) string {
diff --git a/web/src/views/project/manage/index.vue b/web/src/views/project/manage/index.vue
index 6c119ceb..e089bd1b 100644
--- a/web/src/views/project/manage/index.vue
+++ b/web/src/views/project/manage/index.vue
@@ -654,6 +654,10 @@
formData.label !== '' ? formData.label : 'project.label'
}}
+
+ ${PROJECT_SERVERS}:
+ JSON format
+
${REPOSITORY_TYPE}:
{{
@@ -1025,6 +1029,10 @@
formData.label !== '' ? formData.label : 'project.label'
}}
+
+ ${PROJECT_SERVERS}:
+ JSON format
+
${REPOSITORY_TYPE}:
{{