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}: {{