玩轉 CICD 之 Groovy 環境配置

這是我參與更文挑戰的第1天,活動詳情查看:更文挑戰html

最近不是太忙了就是太懶了,反正懶是改不了了,但趁着 [6月更文挑戰] 這個活動多寫點吧。該系列文章的主要目標是玩轉各類主要平臺的 CI/CD,包括但不只限於 Jenkins/ Drone/ GitHub / GitLab 等現代化自動化工具。java

寫過 Jenkins Pipeline 的朋友必定知道不管是聲明式流水線(Declarative Pipeline)仍是腳本式流水線(Scripted Pipeline),其都是基於 Groovy 語法的,因此要想寫好 Jenkins Pipeline,掌握基本的 Groovy 語法是必不可少的,那麼運行 Groovy 腳本的環境也是不可少的。web

本文將介紹如何在 CentOS 7 以及 MacOS 上配置 Groovy 的環境。apache

安裝 OpenJDK

安裝 groovy 的前置條件是安裝 JDK 並配置 JAVA_HOME 環境變量。bash

# MacOS
brew install openjdk@8
sudo ln -sfn $(brew --prefix)/opt/openjdk@8/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk


# CentOS 7
sudo yum install -y java-1.8.0-openjdk-devel
複製代碼

配置 Java 的環境變量

groovy 會依賴環境變量 JAVA_HOME,編輯 ~/.zshrc 添加如下內容:markdown

# MacOS
export JAVA_HOME="/Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home"
export CLASSPATH="$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"

# CentOS 7
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64"
export CLASSPATH="$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
複製代碼

Tip: 使用 which javals -ln $(which java) 找到 OpenJDK 的安裝目錄,可能存在屢次連接。curl

下載 Groovy 二進制文件

下載地址:groovy.apache.org/download.ht…jvm

curl -LO https://groovy.jfrog.io/artifactory/dist-release-local/groovy-zips/apache-groovy-binary-3.0.8.zip
unzip apache-groovy-binary-3.0.8.zip
sudo mv groovy-3.0.8 /usr/local
複製代碼

配置 Groovy 環境變量

編輯 ~/.zshrc 文件,添加如下內容ide

export GROOVY_HOME="/usr/local/groovy-3.0.8"
export PATH="$GROOVY_HOME/bin:$PATH"
複製代碼

驗證安裝結果

# 進入命令交互環境
groovysh

# 運行 groovy 腳本
groovy SomeScript
複製代碼

錯誤處理

正常安裝完成後,在運行 groovysh 時會提示下面的錯誤:工具

WARN [org.apache.groovy.groovysh.util.PackageHelperImpl] Error opening jar file : '/usr/local/Cellar/openjdk@8/1.8.0+282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/nashorn.jar' : java.io.FileNotFoundException: /usr/local/Cellar/openjdk@8/1.8.0 282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/nashorn.jar (No such file or directory)
WARN [org.apache.groovy.groovysh.util.PackageHelperImpl] Error opening jar file : '/usr/local/Cellar/openjdk@8/1.8.0+282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/jaccess.jar' : java.io.FileNotFoundException: /usr/local/Cellar/openjdk@8/1.8.0 282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/jaccess.jar (No such file or directory)
WARN [org.apache.groovy.groovysh.util.PackageHelperImpl] Error opening jar file : '/usr/local/Cellar/openjdk@8/1.8.0+282/libexec/openjdk.jdk/Contents/Home/jre/lib/rt.jar' : java.io.FileNotFoundException: /usr/local/Cellar/openjdk@8/1.8.0 282/libexec/openjdk.jdk/Contents/Home/jre/lib/rt.jar (No such file or directory)
WARN [org.apache.groovy.groovysh.util.PackageHelperImpl] Error opening jar file : '/usr/local/Cellar/openjdk@8/1.8.0+282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/sunec.jar' : java.io.FileNotFoundException: /usr/local/Cellar/openjdk@8/1.8.0 282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/sunec.jar (No such file or directory)
WARN [org.apache.groovy.groovysh.util.PackageHelperImpl] Error opening jar file : '/usr/local/Cellar/openjdk@8/1.8.0+282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar' : java.io.FileNotFoundException: /usr/local/Cellar/openjdk@8/1.8.0 282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar (No such file or directory)
WARN [org.apache.groovy.groovysh.util.PackageHelperImpl] Error opening jar file : '/usr/local/Cellar/openjdk@8/1.8.0+282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/cldrdata.jar' : java.io.FileNotFoundException: /usr/local/Cellar/openjdk@8/1.8.0 282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/cldrdata.jar (No such file or directory)
WARN [org.apache.groovy.groovysh.util.PackageHelperImpl] Error opening jar file : '/usr/local/Cellar/openjdk@8/1.8.0+282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/zipfs.jar' : java.io.FileNotFoundException: /usr/local/Cellar/openjdk@8/1.8.0 282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/zipfs.jar (No such file or directory)
WARN [org.apache.groovy.groovysh.util.PackageHelperImpl] Error opening jar file : '/usr/local/Cellar/openjdk@8/1.8.0+282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/localedata.jar' : java.io.FileNotFoundException: /usr/local/Cellar/openjdk@8/1.8.0 282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/localedata.jar (No such file or directory)
WARN [org.apache.groovy.groovysh.util.PackageHelperImpl] Error opening jar file : '/usr/local/Cellar/openjdk@8/1.8.0+282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar' : java.io.FileNotFoundException: /usr/local/Cellar/openjdk@8/1.8.0 282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar (No such file or directory)
WARN [org.apache.groovy.groovysh.util.PackageHelperImpl] Error opening jar file : '/usr/local/Cellar/openjdk@8/1.8.0+282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/dnsns.jar' : java.io.FileNotFoundException: /usr/local/Cellar/openjdk@8/1.8.0 282/libexec/openjdk.jdk/Contents/Home/jre/lib/ext/dnsns.jar (No such file or directory)
Groovy Shell (3.0.8, JVM: 1.8.0_282)
Type ':help' or ':h' for help.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
groovy:000>
複製代碼

應該是特殊符號的緣由,+ 被解析成了空格,致使找不到,因此先把這個目錄複製一份(1.8.0+282 -> 1.8.0_282),而後從新連接:

sudo cp -r /usr/local/Cellar/openjdk@8/1.8.0+282 /usr/local/Cellar/openjdk@8/1.8.0_282
sudo ln -sfn /usr/local/Cellar/openjdk@8/1.8.0_282 /usr/local/opt/openjdk@8
複製代碼

參考文檔

我的博客

k8scat.com/posts/insta…