From 5a918f5a59e0e3b3af1ef75b5251b9f7ae7a15e8 Mon Sep 17 00:00:00 2001 From: Perry Liao Date: Sun, 23 Oct 2022 20:17:53 -0700 Subject: Create Jenkins groovy pipeline for fib --- entries/perryliao/fib.groovy | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 entries/perryliao/fib.groovy (limited to 'entries/perryliao/fib.groovy') diff --git a/entries/perryliao/fib.groovy b/entries/perryliao/fib.groovy new file mode 100644 index 0000000..af1c4df --- /dev/null +++ b/entries/perryliao/fib.groovy @@ -0,0 +1,48 @@ +pipeline { + agent any + + parameters { + string defaultValue: '2', description: 'Number to compute in the Fibonacci Sequence', name: 'num', trim: true + } + + stages { + stage('Create Cache') { + steps { + script { + if (!fileExists("fibbonacciCache")) { + sh 'echo "0\n1" > fibbonacciCache' + } + } + } + } + stage('Validate Parameter') { + steps { + script { + assert params.num.isInteger() + } + } + } + stage('Get Fibbonacci') { + steps { + script { + result = fib(params.num.toInteger()) + println("The result is F(${params.num}) = ${result}") + } + } + } + } +} + +int fib(int n, cache = 'fibbonacciCache') { + nComputed = sh(returnStdout: true, script: "wc -l < ${cache}").trim().toInteger() + if (n >= nComputed) { + // Need to do more recursion + result = fib(n - 2, cache) + fib(n - 1, cache) + sh "echo '${result}' >> ${cache}" + return result + } else { + // Already have what we need, so read from cache + return sh(returnStdout: true, script: "sed -n '${n + 1}p' ${cache}").trim().toInteger() + } +} + -- cgit v1.2.3-70-g09d2 From 1df988400399d3147514cf42a132141b7f5d8194 Mon Sep 17 00:00:00 2001 From: Perry Liao Date: Sun, 23 Oct 2022 20:46:17 -0700 Subject: make only 1 wc call --- entries/perryliao/fib.groovy | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'entries/perryliao/fib.groovy') diff --git a/entries/perryliao/fib.groovy b/entries/perryliao/fib.groovy index af1c4df..168913f 100644 --- a/entries/perryliao/fib.groovy +++ b/entries/perryliao/fib.groovy @@ -9,8 +9,8 @@ pipeline { stage('Create Cache') { steps { script { - if (!fileExists("fibbonacciCache")) { - sh 'echo "0\n1" > fibbonacciCache' + if (!fileExists("fibCache")) { + sh 'echo "0\n1" > fibCache' } } } @@ -25,6 +25,7 @@ pipeline { stage('Get Fibbonacci') { steps { script { + nComputed = sh(returnStdout: true, script: "wc -l < fibCache").trim().toInteger() result = fib(params.num.toInteger()) println("The result is F(${params.num}) = ${result}") } @@ -33,16 +34,17 @@ pipeline { } } -int fib(int n, cache = 'fibbonacciCache') { - nComputed = sh(returnStdout: true, script: "wc -l < ${cache}").trim().toInteger() +def nComputed + +int fib(int n, cache = 'fibCache') { if (n >= nComputed) { // Need to do more recursion result = fib(n - 2, cache) + fib(n - 1, cache) + nComputed++ sh "echo '${result}' >> ${cache}" return result } else { // Already have what we need, so read from cache - return sh(returnStdout: true, script: "sed -n '${n + 1}p' ${cache}").trim().toInteger() + return sh(returnStdout: true, script: "sed -n '${n + 1}p' ${cache}").toInteger() } } - -- cgit v1.2.3-70-g09d2 From 2f4fab9864a91d69d2b705430f6633bdfe7f5dd5 Mon Sep 17 00:00:00 2001 From: Perry Liao Date: Sun, 23 Oct 2022 20:56:25 -0700 Subject: validation should probably come first lol --- entries/perryliao/fib.groovy | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'entries/perryliao/fib.groovy') diff --git a/entries/perryliao/fib.groovy b/entries/perryliao/fib.groovy index 168913f..d625d68 100644 --- a/entries/perryliao/fib.groovy +++ b/entries/perryliao/fib.groovy @@ -6,19 +6,19 @@ pipeline { } stages { - stage('Create Cache') { + stage('Validate Parameter') { steps { script { - if (!fileExists("fibCache")) { - sh 'echo "0\n1" > fibCache' - } + assert params.num.isInteger() } } } - stage('Validate Parameter') { + stage('Create Cache') { steps { script { - assert params.num.isInteger() + if (!fileExists("fibCache")) { + sh 'echo "0\n1" > fibCache' + } } } } -- cgit v1.2.3-70-g09d2