now with online downloads and docs.
This commit is contained in:
		
							parent
							
								
									7461167484
								
							
						
					
					
						commit
						1307295e20
					
				
							
								
								
									
										19
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| FROM alpine:3.20.0 as builder | ||||
| 
 | ||||
| RUN apk update && apk add go | ||||
| RUN mkdir -p /opt/converge/bin | ||||
| COPY . /opt/converge/ | ||||
| WORKDIR /opt/converge | ||||
| RUN go mod download | ||||
| COPY . /opt/converge/ | ||||
| #RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o main . | ||||
| RUN go build -ldflags "-linkmode 'external' -extldflags '-static'" -o bin ./cmd/... | ||||
| #RUN mkdir -p /opt/converge/downloads/ | ||||
| 
 | ||||
| FROM scratch | ||||
| 
 | ||||
| COPY --from=builder /opt/converge/bin/converge /opt/converge/bin/ | ||||
| COPY --from=builder /opt/converge/bin/agent /opt/converge/bin/tcptows /opt/converge/downloads/ | ||||
| COPY --from=builder /opt/converge/static/ /opt/converge/downloads/ | ||||
| 
 | ||||
| ENTRYPOINT ["/opt/converge/bin/converge", "/opt/converge/downloads" ] | ||||
							
								
								
									
										27
									
								
								cmd/agent/hostkey.pem
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								cmd/agent/hostkey.pem
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | ||||
| -----BEGIN RSA PRIVATE KEY----- | ||||
| MIIEpQIBAAKCAQEApoRgwjZ46YumMcUAj9XMqVffRPgYx1C76jEtY7mJpEEujJfh | ||||
| JoJOhJWlSJdZDTmkt7HUY3KMUgidipWlfmuLm7quu8/3EbGuv5GE/g5SvvSpYLdN | ||||
| xiz8YvqwLRSm/Aa0mPqOz+/2vHo0PfKWuOaXaHrbpZFHyu9ZnRMdjlY67jO8lXF9 | ||||
| h7Vlg/VVb6uLa6PYUDMAYb5jk3ugIBKi3zEq1o1C6rKwzz6iVdsnuWwJuso5pMQu | ||||
| T07Z7nNUC4bL2JoLfA/avta6OiMzoU6Wr+oZvatXyvrW2Tqxm0ll6GRB4TEvP8SU | ||||
| 8UXB4gSLrKt98YMFXMluMYHu8K1Gv1qJph1OiQIDAQABAoIBAHg9xxD2/MDIUq5F | ||||
| r24t2KfACD1pWZsztT4bXMdSRw4Q82galD6WgdRDqyKMB4YBRexPwSo+oQzro7da | ||||
| 8DIlvp4pY9vDBIoGYEV88yfxd9bkHRr1wneELIvcsjMbYqlCvk5pP47vnJ/lLqw8 | ||||
| 7JGAEX0kmk8oZUspIvDFyOXrZopyL10N2R/Hs6iV2Wy+I6qj6YNeYdvzDR0d2PwT | ||||
| +zY0qzhnbjzPZ+EVSWugG+WL6g1INAF66hyQK8GGpIcQ8wd2E/5HTdp3aOcX2Sje | ||||
| nxVR8myZH23/M6OYGDMwJnRpA71vbKnx4vaYRe45Opwf1Mt0q3HR3vdcIV3ls+Vl | ||||
| 895MgsECgYEAzG8f7y1jXkWkDC3t2GFa2Tav2BMPUS5u8TMgLBNJnNn7d61LMIP2 | ||||
| cclGVgQwbO05f5Z2IoVhNL/SyKzhyXC7DzxY9gkFxrsrw9NZs6M/L4AugsYbNqNT | ||||
| qkN1OIkNjpiw6KAVNGkkojX4prBCc+W+7RZ4iH032pB6TIRG2PuoUdUCgYEA0ITZ | ||||
| R6cF3YYPqy07ANMnU6pFhozYWf6DKXkijDTUAfuEO/OF5h7EI/5/W1a4Aw7bWXnf | ||||
| oRKZJZhLYzNAk2Z1ZP8xiYoZuTCAupp7FiMk3ljcu1xtttQvtkpu1ldQVoHu21As | ||||
| SerYrTb9Mp21e0gmYYGNzd/D4FjNz05Ch5huL+UCgYEAlj3E1l4g/RNpMJpAhhlm | ||||
| TuRl7wJy61KYriLIrhuuqdt5d8afz5Pr9kvZqTWC8UqWSzIkt9IWUlH3cwu7E/QJ | ||||
| RXUwXADdgePkkhIthlufACXQCMPXFByMTEEvUNFIaVfGC/A6JT5wcdYAW2CGNe7O | ||||
| lidBhe2gsrwjZUCBYM3yMdECgYEAlXakSDfwfFkb4hcJtA2motHqBAfxDJDic1fg | ||||
| 657yWHlwz4g+8jQbY7GImHAQdiCwGfLB2TL7k3cWkoSqRP2sKDjDyVK0HYomu5r/ | ||||
| n16Rjs8jaSlXezWc/Y1c5Uawz1FTZOCS3mj35zEDTMS+0R9mY335pxg9zxHYdEAk | ||||
| cA1S7gECgYEAhbI9G/+3CdrwUjvtNMWZ/q+MxY35pKeqNjB3D7aIVEWREiBVYHce | ||||
| /4eplQhTQEAzrcKclE6te+QTg42KPq7ZfWWoNOLRaPxICbs+hUdmBHysbr5e98dc | ||||
| /3tmSH2ftz4KTsY9O0RqB7KVAg6c0qKzVeKa7EBIWzfnJK/mbRojL9o= | ||||
| -----END RSA PRIVATE KEY----- | ||||
| @ -26,6 +26,7 @@ func main() { | ||||
| 	if len(os.Args) == 2 { | ||||
| 		downloadDir = os.Args[1] | ||||
| 	} | ||||
| 	log.Println("Doanload directory", downloadDir) | ||||
| 
 | ||||
| 	admin := converge.NewAdmin() | ||||
| 	registrationService := websocketutil.WebSocketService{ | ||||
|  | ||||
							
								
								
									
										9
									
								
								compose.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								compose.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | ||||
| 
 | ||||
| services: | ||||
| 
 | ||||
|   converge: | ||||
|     image: your.repo.com/converge:1.0 | ||||
|     build: | ||||
|       context: . | ||||
|     ports: | ||||
|       - 8000:8000 | ||||
							
								
								
									
										6
									
								
								static/css/bootstrap.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								static/css/bootstrap.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								static/css/bootstrap.min.css.map
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								static/css/bootstrap.min.css.map
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										94
									
								
								static/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								static/index.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,94 @@ | ||||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <link rel="stylesheet" href="css/bootstrap.min.css" | ||||
|           crossorigin="anonymous"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> | ||||
|     <title>Converge</title> | ||||
| </head> | ||||
| <body> | ||||
| 
 | ||||
| <script src="js/bootstrap.bundle.min.js" | ||||
|         crossorigin="anonymous"></script> | ||||
| 
 | ||||
| <div class="container"> | ||||
| 
 | ||||
|     <h1>Usage</h1> | ||||
| 
 | ||||
|     <h2>Continous integration jobs</h2> | ||||
| 
 | ||||
|     <p> | ||||
|         In a continous integration job, download the agent, chmod it and run it. | ||||
|     </p> | ||||
|     <pre> | ||||
|     # for HTTP hosted server | ||||
|     curl http://HOSTPORT/downloads/agent > agent | ||||
|      ./agent ws://HOST:PORT/agent/ID | ||||
|     chmod 755 agent | ||||
| 
 | ||||
|     # for HTTPS hosted server | ||||
|      curl https://HOSTPORT/downloads/agent > agent | ||||
|      ./agent wss://HOST:PORT/agent/ID | ||||
|     chmod 755 agent | ||||
| </pre> | ||||
|     <p> | ||||
|         Above, HOST:PORT is the hostname:port of the converge server and ID is a unique id | ||||
|         for the job. This should not conflict with other ids. | ||||
| 
 | ||||
|         This connects the agent to the converge server. Clients can now connect to converge | ||||
|         to establish a connection to the CI job through converge. | ||||
|     </p> | ||||
| 
 | ||||
|     <h2>Local clients</h2> | ||||
| 
 | ||||
|     <p> | ||||
|         Local clients can connect using regular ssh and sftp commands through a tunnel that | ||||
|         translates a local TCP port to a websocket connection in converge. | ||||
| 
 | ||||
|         First step is to download the tcptows program (see below): | ||||
|     </p> | ||||
| 
 | ||||
|     <pre> | ||||
|     # for HTTP hosted server | ||||
|     curl http://HOST:PORT/downloads/wstotcp > wstotcp | ||||
|     chmod 755 wstotcp | ||||
|     ./wstotcp 10000 ws://HOST:PORT/client/ID | ||||
| 
 | ||||
|     # for HTTPS hosted server | ||||
|     curl https://HOST:PORT/downloads/wstotcp > wstotcp | ||||
|     chmod 755 wstotcp | ||||
|     ./wstotcp 10000 wss://HOST:PORT/client/ID | ||||
| </pre> | ||||
| 
 | ||||
|     <p> | ||||
|         This runs a local client that allows SSH to port 10000 and connects to converge using | ||||
|         a websocket connection.</p> | ||||
| 
 | ||||
|     <p> | ||||
|         Next step is to run a local SSH of SFTP client: | ||||
|     </p> | ||||
| 
 | ||||
|     <pre> | ||||
|     ssh -p 10000 abc@localhost | ||||
|     sftp -oPort 10000 abc@localhost | ||||
|     </pre> | ||||
| 
 | ||||
|     <p> | ||||
|         <code>abc</code> is a fixed user defined by converge. It has a very exciting password. | ||||
|     </p> | ||||
| 
 | ||||
|     <h1>Downloads</h1> | ||||
| 
 | ||||
|     <ul> | ||||
|         <li><a href="/downloads/agent">agent</a>: The agent to run inside aa CI job | ||||
|         </li> | ||||
|         <li><a href="/downloads/tcptows">tcptows</a>: TCP to WS tunnel for allowing regular | ||||
|             SSH and SFTP clients to connect to converge. | ||||
|         </li> | ||||
|     </ul> | ||||
| 
 | ||||
| </div> | ||||
| 
 | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										7
									
								
								static/js/bootstrap.bundle.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								static/js/bootstrap.bundle.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								static/js/bootstrap.bundle.min.js.map
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								static/js/bootstrap.bundle.min.js.map
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user