@@ -16,39 +16,26 @@ import "github.com/google/go-github/github"
1616func main () {
1717 fmt .Println ("Deployer" )
1818
19- username := flag .String ("u" , "" , "GitHub username (required)" )
20- password := flag .String ("p" , "" , "GitHub password (required)" )
21- org := flag .String ("org" , "" , "GitHub org (required)" )
22- repo := flag .String ("repo" , "" , "GitHub repo (required)" )
23- env := flag .String ("env" , "" , "Github deployment environment (required)" )
24- app := flag .String ("app " , "" , "Dokku application name (required)" )
25- sleepInt := flag .Int ( "sleep" , 30 , "Time to sleep between loops (defaults to 30 seconds)" )
19+ username := flag .String ("u" , "" , "GitHub username (required)" )
20+ password := flag .String ("p" , "" , "GitHub password (required)" )
21+ org := flag .String ("org" , "" , "GitHub org (required)" )
22+ repo := flag .String ("repo" , "" , "GitHub repo (required)" )
23+ env := flag .String ("env" , "" , "Github deployment environment (required)" )
24+ file := flag .String ("file " , "" , "File to execute when new deployment is available (required)" )
25+ sleepInt := flag .Int ( "sleep" , 30 , "Time to sleep between loops (defaults to 30 seconds)" )
2626
2727 flag .Parse ()
2828
29- if * app == "" {
29+ if * username == "" || * password == "" || * org == "" || * repo == "" || * env == "" || * file == "" {
3030 flag .PrintDefaults ()
3131 os .Exit (1 )
3232 }
3333
34- fmt .Println (* username , * password , * org , * repo , * env , * app )
34+ fmt .Println (* username , * password , * org , * repo , * env , * file )
3535
3636 sleepDuration := time .Duration (* sleepInt ) * time .Second
3737 fmt .Printf ("Sleep duration: %v\n " , sleepDuration )
3838
39- repoPath := "." + * app ;
40- _ , err := os .Stat (repoPath )
41- if err != nil {
42- repoURL := "https://" + * username + ":" + * password + "@github.com/" + * org + "/" + * repo + ".git"
43- err = cloneRepo (repoURL , repoPath )
44- if err != nil {
45- log .Printf ("Problem cloning repo %v\n " , err )
46- os .Exit (1 )
47- }
48- }
49-
50- addRepoDokkuRemote (repoPath , * app )
51-
5239 ctx := context .Background ()
5340 tp := github.BasicAuthTransport {
5441 Username : * username ,
@@ -68,13 +55,6 @@ func main() {
6855
6956 log .Println (* deployment .ID , * deployment .Ref , * deployment .Environment )
7057
71- err = fetchRepo (repoPath )
72- if err != nil {
73- log .Printf ("Problem in fetching repo %v\n " , err )
74- sleep (sleepDuration )
75- continue
76- }
77-
7858 gist , _ , err := createDeploymentGist (ctx , client , deployment )
7959
8060 if err != nil {
@@ -88,12 +68,12 @@ func main() {
8868 createDeploymentStatus (ctx , client , deployment , * org , * repo , "pending" , * gist .HTMLURL )
8969
9070 var output bytes.Buffer
91- cmd := deployToDokku ( repoPath , * deployment . Ref )
71+ cmd := executeFile ( * file )
9272 cmd .Stdout = io .MultiWriter (& output , os .Stdout )
9373 cmd .Stderr = cmd .Stdout
9474 err = cmd .Run ()
9575 if err != nil {
96- log .Printf ("Problem in deploying to dokku %v\n " , err )
76+ log .Printf ("Problem with file execution %v\n " , err )
9777 createDeploymentStatus (ctx , client , deployment , * org , * repo , "error" , * gist .HTMLURL )
9878 updateDeploymentGist (ctx , client , gist , output .String ())
9979 sleep (sleepDuration )
@@ -112,47 +92,9 @@ func sleep(duration time.Duration) {
11292 time .Sleep (duration )
11393}
11494
115- func cloneRepo (repoURL string , repoPath string ) (error ) {
116- log .Println ("Cloning repo " , repoURL )
117- cmd := exec .Command ("git" , "clone" , repoURL , repoPath )
118- cmd .Stdout = os .Stdout
119- cmd .Stderr = os .Stderr
120- err := cmd .Run ()
121- return err
122- }
123-
124- func addRepoDokkuRemote (repoPath string , app string ) (error ) {
125- log .Println ("Adding repo dokku remote " , repoPath , app )
126- cmd := exec .Command ("git" , "remote" , "add" , "dokku" , "/home/dokku/" + app )
127- cmd .Dir = repoPath
128- cmd .Stdout = os .Stdout
129- cmd .Stderr = os .Stderr
130- err := cmd .Run ()
131- return err
132- }
133-
134- func fetchRepo (repoPath string ) (error ) {
135- log .Println ("Fetchin repo " , repoPath )
136- cmd := exec .Command ("git" , "fetch" , "origin" , "--force" , "--tags" )
137- cmd .Dir = repoPath
138- cmd .Stdout = os .Stdout
139- cmd .Stderr = os .Stderr
140- err := cmd .Run ()
141- if err != nil {
142- return err
143- }
144- cmd = exec .Command ("git" , "reset" , "--hard" , "origin/HEAD" )
145- cmd .Dir = repoPath
146- cmd .Stdout = os .Stdout
147- cmd .Stderr = os .Stderr
148- err = cmd .Run ()
149- return err
150- }
151-
152- func deployToDokku (repoPath string , ref string ) (* exec.Cmd ) {
153- log .Println ("Deploying repo " , repoPath )
154- cmd := exec .Command ("git" , "push" , "-f" , "dokku" , ref + ":master" )
155- cmd .Dir = repoPath
95+ func executeFile (filePath string ) * exec.Cmd {
96+ log .Println ("Executing File" , filePath )
97+ cmd := exec .Command (filePath )
15698 // cmd := exec.Command("bin/deploy-stub")
15799 return cmd
158100}
@@ -173,12 +115,12 @@ func getDeployment(ctx context.Context, client *github.Client, org string, repo
173115 return nil , resp , err
174116 }
175117 deployment := deployments [0 ]
176-
118+
177119 statuses , resp , err := client .Repositories .ListDeploymentStatuses (ctx , org , repo , * deployment .ID , & github.ListOptions { PerPage : 1 })
178120 if err != nil {
179121 return deployment , resp , err
180122 }
181-
123+
182124 if len (statuses ) > 0 {
183125 err := errors .New ("Deployment statuses already present" )
184126 return deployment , resp , err
0 commit comments