| 104 templateStr, err := os.ReadFile("build.template") |
104 templateStr, err := os.ReadFile("build.template") |
| 105 if err != nil { |
105 if err != nil { |
| 106 log.Fatal(err) |
106 log.Fatal(err) |
| 107 } |
107 } |
| 108 |
108 |
| |
109 templateStr2, err := os.ReadFile("build.ps1.template") |
| |
110 if err != nil { |
| |
111 log.Fatal(err) |
| |
112 } |
| |
113 |
| 109 funcs := template.FuncMap{ |
114 funcs := template.FuncMap{ |
| 110 "add": func(i int, n int) int { |
115 "add": func(i int, n int) int { |
| 111 return i + n |
116 return i + n |
| 112 }, |
117 }, |
| 113 "sub": func(i int, n int) int { |
118 "sub": func(i int, n int) int { |
| 139 if err == nil { |
149 if err == nil { |
| 140 log.Printf("repository %s commit %s already built", repo.Path, commit.NodeShort) |
150 log.Printf("repository %s commit %s already built", repo.Path, commit.NodeShort) |
| 141 continue |
151 continue |
| 142 } |
152 } |
| 143 |
153 |
| 144 if err := create_repo_archive(&repo, tpl, tmp); err != nil { |
154 if err := create_repo_archive(&repo, tpl, tpl2, tmp); err != nil { |
| 145 log.Fatal(err) |
155 log.Fatal(err) |
| 146 } |
156 } |
| 147 |
157 |
| 148 results := exec_buildenvs(config, &repo, tmp) |
158 results := exec_buildenvs(config, &repo, tmp) |
| 149 |
159 |
| 152 log.Print("cannot save results for commit ", commit.NodeShort) |
162 log.Print("cannot save results for commit ", commit.NodeShort) |
| 153 } |
163 } |
| 154 } |
164 } |
| 155 } |
165 } |
| 156 |
166 |
| 157 func create_repo_archive(repo *Repository, tpl *template.Template, tmp_dir string) error { |
167 func create_repo_archive(repo *Repository, tpl *template.Template, tpl2 *template.Template, tmp_dir string) error { |
| 158 // create a build directory, that contains the repository source |
168 // create a build directory, that contains the repository source |
| 159 // and build scripts |
169 // and build scripts |
| 160 buildPath := path.Join(tmp_dir, "build") |
170 buildPath := path.Join(tmp_dir, "build") |
| 161 |
171 |
| 162 if err := os.RemoveAll(buildPath); err != nil { |
172 if err := os.RemoveAll(buildPath); err != nil { |
| 227 log.Print("cannot execute build.sh template") |
237 log.Print("cannot execute build.sh template") |
| 228 return err |
238 return err |
| 229 } |
239 } |
| 230 file.Chmod(0755) |
240 file.Chmod(0755) |
| 231 |
241 |
| |
242 file2, err := os.Create(path.Join(buildPath, "build.ps1")) |
| |
243 if err != nil { |
| |
244 log.Print("cannot create build.ps1") |
| |
245 return err |
| |
246 } |
| |
247 defer file2.Close() |
| |
248 err = tpl2.Execute(file2, repo) |
| |
249 if err != nil { |
| |
250 log.Print("cannot execute build.ps1 template") |
| |
251 return err |
| |
252 } |
| |
253 |
| 232 // create tarball |
254 // create tarball |
| 233 cmd = exec.Command("tar", "cvf", "../build.tar", "src", "build.sh") |
255 cmd = exec.Command("tar", "cvf", "../build.tar", "src", "build.sh", "build.ps1") |
| 234 cmd.Dir = buildPath |
256 cmd.Dir = buildPath |
| 235 if err := cmd.Run(); err != nil { |
257 if err := cmd.Run(); err != nil { |
| 236 log.Print("tar error") |
258 log.Print("tar error") |
| 237 return err |
259 return err |
| 238 } |
260 } |