BUG: Added remote download failover if build fails for a tag

This commit is contained in:
frikky
2020-12-19 09:56:19 +01:00
parent e60c855ce4
commit 0ceea929e9
5 changed files with 102 additions and 65 deletions
+34 -3
View File
@@ -125,14 +125,17 @@ func getParsedTarMemory(fs billy.Filesystem, tw *tar.Writer, baseDir, extra stri
return err return err
} }
log.Printf("FILENAME: %s", filename) //log.Printf("FILENAME: %s", filename)
readFile, err := ioutil.ReadAll(fileReader) readFile, err := ioutil.ReadAll(fileReader)
if err != nil { if err != nil {
log.Printf("Not file: %s", err) log.Printf("Not file: %s", err)
return err return err
} }
// Fixes issues with older versions of Docker for file format // Fixes issues with older versions of Docker and reference formats
// Specific to Shuffle rn. Could expand.
// FIXME: Seems like the issue was with multi-stage builds
/*
if filename == "Dockerfile" { if filename == "Dockerfile" {
log.Printf("Should search and replace in readfile.") log.Printf("Should search and replace in readfile.")
@@ -143,6 +146,7 @@ func getParsedTarMemory(fs billy.Filesystem, tw *tar.Writer, baseDir, extra stri
readFile = []byte(strings.Replace(string(readFile), referenceCheck, newReference, -1)) readFile = []byte(strings.Replace(string(readFile), referenceCheck, newReference, -1))
} }
} }
*/
//log.Printf("Filename: %s", filename) //log.Printf("Filename: %s", filename)
// FIXME - might need the folder from EXTRA here // FIXME - might need the folder from EXTRA here
@@ -230,12 +234,39 @@ func buildImageMemory(fs billy.Filesystem, tags []string, dockerfileFolder strin
dockerFileTarReader, dockerFileTarReader,
buildOptions, buildOptions,
) )
log.Printf("Response: %#v", imageBuildResponse.Body)
//log.Printf("IMAGERESPONSE: %#v", imageBuildResponse.Body) //log.Printf("IMAGERESPONSE: %#v", imageBuildResponse.Body)
defer imageBuildResponse.Body.Close() defer imageBuildResponse.Body.Close()
_, newerr := io.Copy(os.Stdout, imageBuildResponse.Body) buildBuf := new(strings.Builder)
_, newerr := io.Copy(buildBuf, imageBuildResponse.Body)
if newerr != nil { if newerr != nil {
log.Printf("Failed reading Docker build STDOUT: %s", newerr) log.Printf("Failed reading Docker build STDOUT: %s", newerr)
} else {
if strings.Contains(buildBuf.String(), "errorDetail") {
log.Printf("[ERROR] Docker build:\n%s\nERROR ABOVE: Trying to pull tags from: %s", buildBuf.String(), strings.Join(tags, "\n"))
// Handles pulling of the same image if applicable
// This fixes some issues with older versions of Docker which can't build
// on their own ( <17.05 )
pullOptions := types.ImagePullOptions{}
canonicalName := fmt.Sprintf("registry.hub.docker.com")
for _, image := range tags {
newImage := fmt.Sprintf("%s/%s", canonicalName, image)
log.Printf("[INFO] Pulling image %s", newImage)
reader, err := client.ImagePull(ctx, newImage, pullOptions)
if err != nil {
log.Printf("[ERROR] Failed getting image %s: %s", newImage, err)
continue
}
//newBuf := buildBuf
io.Copy(os.Stdout, reader)
log.Printf("[INFO] Successfully downloaded and built %s", newImage)
}
//baseDockerName
}
} }
if err != nil { if err != nil {
+3 -3
View File
@@ -5541,7 +5541,7 @@ func iterateAppGithubFolders(fs billy.Filesystem, dir []os.FileInfo, extra strin
} }
} }
log.Printf("HANDLING DOCKER FILEREADER - SEARCH&REPLACE?") //log.Printf("HANDLING DOCKER FILEREADER - SEARCH&REPLACE?")
appfileData, err := ioutil.ReadAll(fileReader) appfileData, err := ioutil.ReadAll(fileReader)
if err != nil { if err != nil {
@@ -5688,10 +5688,10 @@ func iterateAppGithubFolders(fs billy.Filesystem, dir []os.FileInfo, extra strin
if len(removeApps) > 0 { if len(removeApps) > 0 {
for _, item := range removeApps { for _, item := range removeApps {
log.Printf("Removing duplicate: %s", item) log.Printf("[WARNING] Removing duplicate: %s", item)
err = DeleteKey(ctx, "workflowapp", item) err = DeleteKey(ctx, "workflowapp", item)
if err != nil { if err != nil {
log.Printf("Failed deleting %s", item) log.Printf("[ERROR] Failed deleting duplicate %s: %s", item, err)
} }
} }
} }
+2 -2
View File
@@ -2,7 +2,7 @@ version: '3'
services: services:
frontend: frontend:
#build: ./frontend #build: ./frontend
image: ghcr.io/frikky/shuffle-frontend:0.8.3 image: ghcr.io/frikky/shuffle-frontend:0.8.4
container_name: shuffle-frontend container_name: shuffle-frontend
hostname: shuffle-frontend hostname: shuffle-frontend
ports: ports:
@@ -17,7 +17,7 @@ services:
- backend - backend
backend: backend:
build: ./backend build: ./backend
image: ghcr.io/frikky/shuffle-backend:0.8.4 image: ghcr.io/frikky/shuffle-backend:0.8.42
container_name: shuffle-backend container_name: shuffle-backend
hostname: ${BACKEND_HOSTNAME} hostname: ${BACKEND_HOSTNAME}
# Here for debugging: # Here for debugging:
+7 -1
View File
@@ -101,7 +101,12 @@ const parseCurl = (s) => {
return "" return ""
} }
try {
var args = rewrite(words.split(s)) var args = rewrite(words.split(s))
} catch (e) {
return s
}
var out = { method: 'GET', header: {} } var out = { method: 'GET', header: {} }
var state = '' var state = ''
@@ -1731,7 +1736,7 @@ const AppCreator = (props) => {
var parsedurl = event.target.value var parsedurl = event.target.value
if (parsedurl.startsWith("curl")) { if (parsedurl.startsWith("curl")) {
const request = parseCurl(event.target.value) const request = parseCurl(event.target.value)
console.log(request) if (request !== event.target.value) {
if (request.method.toUpperCase() !== currentAction.Method) { if (request.method.toUpperCase() !== currentAction.Method) {
setCurrentActionMethod(request.method.toUpperCase()) setCurrentActionMethod(request.method.toUpperCase())
setActionField("method", request.method.toUpperCase()) setActionField("method", request.method.toUpperCase())
@@ -1791,6 +1796,7 @@ const AppCreator = (props) => {
setUrlPath(parsedurl) setUrlPath(parsedurl)
} }
} }
}
//console.log("URL: ", request.url) //console.log("URL: ", request.url)
}} }}
+1 -1
View File
@@ -130,7 +130,7 @@ const LoginDialog = props => {
if (responseJson["success"] === false) { if (responseJson["success"] === false) {
setLoginInfo(responseJson["reason"]) setLoginInfo(responseJson["reason"])
} else { } else {
setLoginInfo("Successful register :)") setLoginInfo("Successful register!")
} }
}), }),
) )