adds retry
This commit is contained in:
		@@ -32,86 +32,91 @@ pipeline {
 | 
				
			|||||||
                    workspace = pwd()
 | 
					                    workspace = pwd()
 | 
				
			||||||
                    // jenkins secrets
 | 
					                    // jenkins secrets
 | 
				
			||||||
                    nordCreds = "nordvpn-login-creds"
 | 
					                    nordCreds = "nordvpn-login-creds"
 | 
				
			||||||
 | 
					 | 
				
			||||||
                    // kubernetes configuration
 | 
					                    // kubernetes configuration
 | 
				
			||||||
                    kubeNamespace = "dl-automation"
 | 
					                    kubeNamespace = "dl-automation"
 | 
				
			||||||
                    kubeSecret = "openvpn"
 | 
					                    kubeSecret = "openvpn"
 | 
				
			||||||
 | 
					 | 
				
			||||||
                    // list of urls that return different nordVPN servers
 | 
					 | 
				
			||||||
                    def nordURLs = [
 | 
					 | 
				
			||||||
                        // canada
 | 
					 | 
				
			||||||
                        "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:38,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
					 | 
				
			||||||
                        // costa-rica
 | 
					 | 
				
			||||||
                        "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:52,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
					 | 
				
			||||||
                        // denmark
 | 
					 | 
				
			||||||
                        "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:58,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
					 | 
				
			||||||
                        // france
 | 
					 | 
				
			||||||
                        "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:74,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
					 | 
				
			||||||
                        // gremany
 | 
					 | 
				
			||||||
                        "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:81,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
					 | 
				
			||||||
                        // japan
 | 
					 | 
				
			||||||
                        "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:108,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
					 | 
				
			||||||
                        // sweden
 | 
					 | 
				
			||||||
                        "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:208,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
					 | 
				
			||||||
                        // switzerland
 | 
					 | 
				
			||||||
                        "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:209,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
					 | 
				
			||||||
                        // netherlands
 | 
					 | 
				
			||||||
                        "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:153,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
					 | 
				
			||||||
                        // united kingdom
 | 
					 | 
				
			||||||
                        "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:38,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
					 | 
				
			||||||
                    ]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    // randomly select one from the list
 | 
					 | 
				
			||||||
                    nordURL = nordURLs[Math.abs(new Random().nextInt() % [8])]
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        stage ('Prepare Container') {
 | 
					        stage ('Prepare Vales') {
 | 
				
			||||||
            steps {
 | 
					            steps {
 | 
				
			||||||
                container ('alpine') {
 | 
					                container ('alpine') {
 | 
				
			||||||
                    script {
 | 
					                    retry(3) {
 | 
				
			||||||
                        sh """
 | 
					                        try {
 | 
				
			||||||
                            if [ ! -f "/usr/bin/curl" ] || [ ! -x "/usr/bin/curl" ]; then
 | 
					                            // list of urls that return different nordVPN servers
 | 
				
			||||||
                                apk add --no-cache curl
 | 
					                            def nordURLs = [
 | 
				
			||||||
                            fi
 | 
					                                // canada
 | 
				
			||||||
                            if [ ! -f "/usr/bin/jq" ] || [ ! -x "/usr/bin/jq" ]; then
 | 
					                                "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:38,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
				
			||||||
                                apk add --no-cache jq
 | 
					                                // costa-rica
 | 
				
			||||||
                            fi
 | 
					                                "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:52,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
				
			||||||
                            if [ ! -f "/bin/sed" ] || [ ! -x "/bin/sed" ]; then
 | 
					                                // denmark
 | 
				
			||||||
                                apk add --no-cache sed
 | 
					                                "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:58,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
				
			||||||
                            fi
 | 
					                                // france
 | 
				
			||||||
                        """
 | 
					                                "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:74,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
				
			||||||
 | 
					                                // gremany
 | 
				
			||||||
 | 
					                                "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:81,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
				
			||||||
 | 
					                                // japan
 | 
				
			||||||
 | 
					                                "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:108,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
				
			||||||
 | 
					                                // sweden
 | 
				
			||||||
 | 
					                                "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:208,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
				
			||||||
 | 
					                                // switzerland
 | 
				
			||||||
 | 
					                                "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:209,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
				
			||||||
 | 
					                                // netherlands
 | 
				
			||||||
 | 
					                                "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:153,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
				
			||||||
 | 
					                                // united kingdom
 | 
				
			||||||
 | 
					                                "https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:38,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
 | 
				
			||||||
 | 
					                            ]
 | 
				
			||||||
 | 
					                            // randomly select one from the list
 | 
				
			||||||
 | 
					                            nordURL = nordURLs[Math.abs(new Random().nextInt() % [8])]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        retry(3) {
 | 
					                            // install required components
 | 
				
			||||||
                            try {
 | 
					                            script {
 | 
				
			||||||
                                openVPNConfig = sh(
 | 
					                                sh """
 | 
				
			||||||
                                    returnStdout: true,
 | 
					                                    if [ ! -f "/usr/bin/curl" ] || [ ! -x "/usr/bin/curl" ]; then
 | 
				
			||||||
                                    script: """# Get OpenVPN Config
 | 
					                                        apk add --no-cache curl
 | 
				
			||||||
curl \
 | 
					                                    fi
 | 
				
			||||||
    --silent \
 | 
					                                    if [ ! -f "/usr/bin/jq" ] || [ ! -x "/usr/bin/jq" ]; then
 | 
				
			||||||
    --location \
 | 
					                                        apk add --no-cache jq
 | 
				
			||||||
    --fail \
 | 
					                                    fi
 | 
				
			||||||
    "https://downloads.nordcdn.com/configs/files/ovpn_tcp/servers/\$(
 | 
					                                    if [ ! -f "/bin/sed" ] || [ ! -x "/bin/sed" ]; then
 | 
				
			||||||
        curl \
 | 
					                                        apk add --no-cache sed
 | 
				
			||||||
            --silent \
 | 
					                                    fi
 | 
				
			||||||
            --location \
 | 
					                                """
 | 
				
			||||||
            --fail \
 | 
					                            }
 | 
				
			||||||
            '""" + nordURL + """' \
 | 
					
 | 
				
			||||||
        | jq \
 | 
					                                // get OpenVPN Configuration from NordVPN
 | 
				
			||||||
            --raw-output \
 | 
					                                retry(3) {
 | 
				
			||||||
            '[.[] | select(.technologies[] | .identifier == "openvpn_tcp")][0] | .hostname' \
 | 
					                                    try {
 | 
				
			||||||
        ).tcp.ovpn" \
 | 
					                                        openVPNConfig = sh(
 | 
				
			||||||
    | sed \
 | 
					                                            returnStdout: true,
 | 
				
			||||||
        --regexp-extended \
 | 
					                                            script: """# Get OpenVPN Config
 | 
				
			||||||
        --expression='s/auth-user-pass/auth-user-pass \\/etc\\/openvpn\\/client\\/openvpn-credentials.txt/' \
 | 
					                                                        curl \
 | 
				
			||||||
    | base64 -w 0
 | 
					                                                            --silent \
 | 
				
			||||||
"""
 | 
					                                                            --location \
 | 
				
			||||||
                                )
 | 
					                                                            --fail \
 | 
				
			||||||
                            } catch(e) {
 | 
					                                                            "https://downloads.nordcdn.com/configs/files/ovpn_tcp/servers/\$(
 | 
				
			||||||
                                if (openVPNConfig == "") {
 | 
					                                                                curl \
 | 
				
			||||||
                                    printf("nordURL: %s", nordURL)
 | 
					                                                                    --silent \
 | 
				
			||||||
                                    throw e
 | 
					                                                                    --location \
 | 
				
			||||||
 | 
					                                                                    --fail \
 | 
				
			||||||
 | 
					                                                                    '""" + nordURL + """' \
 | 
				
			||||||
 | 
					                                                                | jq \
 | 
				
			||||||
 | 
					                                                                    --raw-output \
 | 
				
			||||||
 | 
					                                                                    '[.[] | select(.technologies[] | .identifier == "openvpn_tcp")][0] | .hostname' \
 | 
				
			||||||
 | 
					                                                                ).tcp.ovpn" \
 | 
				
			||||||
 | 
					                                                            | sed \
 | 
				
			||||||
 | 
					                                                                --regexp-extended \
 | 
				
			||||||
 | 
					                                                                --expression='s/auth-user-pass/auth-user-pass \\/etc\\/openvpn\\/client\\/openvpn-credentials.txt/' \
 | 
				
			||||||
 | 
					                                                            | base64 -w 0
 | 
				
			||||||
 | 
					                                                    """
 | 
				
			||||||
 | 
					                                        )
 | 
				
			||||||
 | 
					                                    } catch(e) {
 | 
				
			||||||
 | 
					                                        if (openVPNConfig.length() == 0 || openVPNConfig == "") {
 | 
				
			||||||
 | 
					                                            printf("Bad nordURL: %s", nordURL)
 | 
				
			||||||
 | 
					                                            throw e
 | 
				
			||||||
 | 
					                                        }
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user