Example #1
0
func StartBuild(b *model.Bao, server model.Server) error {
	var docker model.Docker
	docker.ServerId = server.Id

	err := configDocker(&docker)
	if err != nil {
		writeToBao(b, "Error configuring Docker: "+err.Error(), true)
		return nil
	}

	writeToBao(b, "Cloning gist files", false)
	directory, err := DownloadFromRepo(b)
	if err != nil {
		writeToBao(b, "Error cloning files", true)
		return err
	} else {
		writeToBao(b, "Files cloned successfully", false)
	}
	writeToBao(b, "Creating dockerfile", false)
	err = CreateDockerfile(directory)
	if err != nil {
		writeToBao(b, "Error creating dockerfile", true)
		return err
	}
	writeToBao(b, "Building dockerfile (this could take a while)", false)
	dockerId, err := BuildDockerfile(b, directory, docker)
	if err != nil {
		writeToBao(b, err.Error()+"\nquitting...", true)
		return err
	}

	docker.DockerId = dockerId
	docker.BaoId = b.Id

	b.Location.BaoId = b.Id
	b.Location.Subdomain = fmt.Sprintf("%s-%d", b.GistId, b.Id)
	b.Location.Destination = fmt.Sprintf("%s:%d", server.Ip, docker.Port)

	writeToBao(b, "Site hosted on: "+b.Location.Subdomain+".gitbao.com", true)
	model.DB.Save(b)
	model.DB.Create(&docker)

	err = os.RemoveAll(directory)

	return nil
}