From 67b3595479ffde13c06cb31bcd16b79ca5b8ca8e Mon Sep 17 00:00:00 2001 From: nhyatt Date: Sun, 22 Oct 2023 09:43:46 -0500 Subject: [PATCH] adds retry --- nordvpn-autoconfigure.jenkins | 145 ++++++++++++++++++---------------- 1 file changed, 75 insertions(+), 70 deletions(-) diff --git a/nordvpn-autoconfigure.jenkins b/nordvpn-autoconfigure.jenkins index 507f8dd..25a17d2 100644 --- a/nordvpn-autoconfigure.jenkins +++ b/nordvpn-autoconfigure.jenkins @@ -32,86 +32,91 @@ pipeline { workspace = pwd() // jenkins secrets nordCreds = "nordvpn-login-creds" - // kubernetes configuration kubeNamespace = "dl-automation" 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 { container ('alpine') { - script { - sh """ - if [ ! -f "/usr/bin/curl" ] || [ ! -x "/usr/bin/curl" ]; then - apk add --no-cache curl - fi - if [ ! -f "/usr/bin/jq" ] || [ ! -x "/usr/bin/jq" ]; then - apk add --no-cache jq - fi - if [ ! -f "/bin/sed" ] || [ ! -x "/bin/sed" ]; then - apk add --no-cache sed - fi - """ + retry(3) { + try { + // 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])] - retry(3) { - try { - openVPNConfig = sh( - returnStdout: true, - script: """# Get OpenVPN Config -curl \ - --silent \ - --location \ - --fail \ - "https://downloads.nordcdn.com/configs/files/ovpn_tcp/servers/\$( - curl \ - --silent \ - --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 == "") { - printf("nordURL: %s", nordURL) - throw e + // install required components + script { + sh """ + if [ ! -f "/usr/bin/curl" ] || [ ! -x "/usr/bin/curl" ]; then + apk add --no-cache curl + fi + if [ ! -f "/usr/bin/jq" ] || [ ! -x "/usr/bin/jq" ]; then + apk add --no-cache jq + fi + if [ ! -f "/bin/sed" ] || [ ! -x "/bin/sed" ]; then + apk add --no-cache sed + fi + """ + } + + // get OpenVPN Configuration from NordVPN + retry(3) { + try { + openVPNConfig = sh( + returnStdout: true, + script: """# Get OpenVPN Config + curl \ + --silent \ + --location \ + --fail \ + "https://downloads.nordcdn.com/configs/files/ovpn_tcp/servers/\$( + curl \ + --silent \ + --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 + } + } } } }