這是我參與更文挑戰的第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
安裝 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
複製代碼
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 java
和ls -ln $(which java)
找到 OpenJDK 的安裝目錄,可能存在屢次連接。curl
下載地址: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
複製代碼
編輯 ~/.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
複製代碼