converts to declarative format
This commit is contained in:
parent
a6096db9da
commit
169b391455
@ -1,39 +1,87 @@
|
||||
#!groovy
|
||||
|
||||
// repository configuration
|
||||
def repository = "registry.c.test-chamber-13.lan"
|
||||
def repositoryCreds = "harbor-repository-creds"
|
||||
|
||||
// jenkins secrets
|
||||
def nordCreds = "nordvpn-login-creds"
|
||||
def workspace
|
||||
def dockerFile
|
||||
def nordCreds
|
||||
def kubeNamespace
|
||||
def kubeSecret
|
||||
def nordURL
|
||||
def openVPNConfig
|
||||
def k8sSecret
|
||||
|
||||
// kubernetes configuration
|
||||
def kubeNamespace = "dl-automation"
|
||||
def kubeSecret = "openvpn"
|
||||
def label = "kubernetes-${UUID.randomUUID().toString()}"
|
||||
def templateName = "pipeline-worker"
|
||||
pipeline {
|
||||
agent {
|
||||
kubernetes {
|
||||
yaml functions.podYaml(
|
||||
repo: repository,
|
||||
templateName: templateName,
|
||||
alpine: true
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 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\\]\\}",
|
||||
// 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
|
||||
def nordURL = nordURLs[Math.abs(new Random().nextInt() % [8])]
|
||||
stages {
|
||||
stage ('Initalize Jenkins') {
|
||||
steps {
|
||||
script {
|
||||
workspace = pwd()
|
||||
// jenkins secrets
|
||||
nordCreds = "nordvpn-login-creds"
|
||||
|
||||
// script used to retrieve a nordVPN OpenVPN configuration from NordVPN
|
||||
def openVPNConfigScript = """# Get OpenVPN Config
|
||||
// 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\\]\\}",
|
||||
// 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') {
|
||||
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
|
||||
"""
|
||||
}
|
||||
openVPNConfig = sh(
|
||||
returnStdout: true,
|
||||
script: """# Get OpenVPN Config
|
||||
curl \
|
||||
--silent \
|
||||
--location \
|
||||
@ -53,46 +101,17 @@ curl \
|
||||
--expression='s/auth-user-pass/auth-user-pass \\/etc\\/openvpn\\/client\\/openvpn-credentials.txt/' \
|
||||
| base64 -w 0
|
||||
"""
|
||||
)
|
||||
withCredentials(
|
||||
[
|
||||
string(
|
||||
credentialsId: nordCreds,
|
||||
variable: "NORD_CREDS",
|
||||
)
|
||||
]
|
||||
) {
|
||||
|
||||
def label = "kubernetes-${UUID.randomUUID().toString()}"
|
||||
def templateName = "pipeline-worker"
|
||||
podTemplate(
|
||||
label: label,
|
||||
name: templateName,
|
||||
yaml: functions.podYaml(
|
||||
repo: repository,
|
||||
templateName: templateName,
|
||||
alpine: true
|
||||
)
|
||||
) {
|
||||
node (label) {
|
||||
def workspace = pwd()
|
||||
|
||||
stage ("Prepare Container") {
|
||||
container ("alpine") {
|
||||
sh """
|
||||
apk add --no-cache curl jq sed
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
def openVPNConfig
|
||||
stage ("Get Remote OpenVPN Config") {
|
||||
container ("alpine") {
|
||||
openVPNConfig = sh(
|
||||
returnStdout: true,
|
||||
script: openVPNConfigScript
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
def k8sSecret
|
||||
stage ("Compile Secret") {
|
||||
withCredentials([string(
|
||||
credentialsId: nordCreds,
|
||||
variable: "NORD_CREDS",
|
||||
)]) {
|
||||
k8sSecret = """apiVersion: v1
|
||||
k8sSecret = """apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: """ + kubeSecret + """
|
||||
@ -101,21 +120,39 @@ data:
|
||||
openvpn-credentials.txt: """ + NORD_CREDS + """
|
||||
nordvpn.com.tcp.ovpn: """ + openVPNConfig + """
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
functions.createSecret(
|
||||
kubeAuth: "k8s-dl-automation-access",
|
||||
kubeURL: "https://kubernetes.test-chamber-13.lan:6443",
|
||||
namespace: "dl-automation",
|
||||
secret: k8sSecret
|
||||
)
|
||||
|
||||
functions.deletePod(
|
||||
kubeAuth: "k8s-dl-automation-access",
|
||||
kubeURL: "https://kubernetes.test-chamber-13.lan:6443",
|
||||
namespace: "dl-automation",
|
||||
selector: "app=deluge"
|
||||
)
|
||||
stage ('Create Secret') {
|
||||
steps {
|
||||
container ('alpine') {
|
||||
script {
|
||||
declarativeFunctions.createSecret(
|
||||
kubeAuth: "k8s-dl-automation-access",
|
||||
kubeURL: "https://kubernetes.test-chamber-13.lan:6443",
|
||||
namespace: "dl-automation",
|
||||
secret: k8sSecret
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage ('Restart Pod') {
|
||||
steps {
|
||||
container ('alpine') {
|
||||
script {
|
||||
declarativeFunctions.deletePod(
|
||||
kubeAuth: "k8s-dl-automation-access",
|
||||
kubeURL: "https://kubernetes.test-chamber-13.lan:6443",
|
||||
namespace: "dl-automation",
|
||||
selector: "app=deluge"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user