Jenkins cli 및 rofi - GUI 없이 빌드를 트리거합니다.
6797 단어 rofiautomationclijenkins
Jenkins의 가능성을 즐기다 보니 GUI의 속도와 유용성은 Jenkins의 강점이 아닙니다. 나는 매우 CLI 중심적이며 터미널에서 가능한 한 많은 작업을 수행하려고 합니다. 작업 반복 작업이 있는 경우 작업을 수행하는 스크립트를 만들려고 합니다.
우리의 경우 Jenkins에는 깊은 계층 구조 작업 구조가 있습니다. 그리고 우리는 Jenkins를 하나만 가지고 있는 것이 아니라 두 개의 인스턴스를 가지고 있습니다. 하나의 Jenkins에서 다양한 환경에 대한 모든 솔루션 및 버전 프로모션을 관리하고 있습니다. 두 번째는 모든 배포 및 프로비저닝 작업을 처리합니다.
따라서 솔루션을 배포하려면 첫 번째 Jenkins에서
build
파이프라인을 트리거한 다음 release
파이프라인을 트리거해야 합니다.그 후 두 번째 Jenkins의
DEV
에 배포할 수 있습니다. STAGE
를 계속하려면 첫 번째 Jenkins에서 candidate
를 승격한 다음 두 번째 Jenkins로 전환하여 STAGE
에 배포해야 합니다.그래서 Jenkins 탁구 게임을 해야 한다고 상상할 수 있습니다.
운 좋게도 Jenkins 중 하나가
jenkins-cli
를 지원합니다. 이것은 Jenkins 자체에서 제공하는 항아리입니다. CLI 도구 버전을 얻으려면 이 페이지https://your.jenkins.url/cli/
의 Jenkins 인스턴스에서 간단히 다운로드할 수 있습니다.Jenkins는 CLI에 대한 액세스를 허용해야 합니다. Jenkins 인스턴스의
global secure settings
에서 JNLP 연결을 허용해야 합니다.토큰을 생성하려면 Jenkins 사용자 설정으로 이동해야 합니다.
Jenkins CLI는 상당히 많은 매개변수가 필요하므로 CLI와 매개변수를 캡슐화하는 것이 좋습니다.
이 스크립트는 작업에 대한 퍼지 검색을 제공하기 위해 rofi을 기반으로 합니다. 선택 후 작업을 트리거하고 브라우저에서 작업을 엽니다.
토큰의 경우 암호 저장소를 사용하는 것이 좋습니다. 제 경우에는 pass 을 사용하고 있습니다. Linux용 경량 암호화 비밀번호 관리자입니다. 그러나 테스트 목적으로 처음에는 파일도 괜찮습니다.
#!/bin/bash
JENKINS_URL="http://url.to.jenins"
# this is only for testing. this file contains just one line with [loginname]:[token]
# in general credencials should be not laying around in cleartext
# JENKINS_AUTH="$(cat $HOME/dotfiles/.jenkins.cli.secret)"
username=$(pass show [path/to/store] | tail -n1)
token=$(pass show [path/to/store] | head -n1)
JENKINS_AUTH="$username:$token"
JENKINS_JAR="$HOME/.local/bin/jenkins-cli.jar"
JENKINS_CLI="java -jar $JENKINS_JAR -auth $JENKINS_AUTH -s $JENKINS_URL"
# check date of file if older 7 days
if [ "$(find '/tmp/jenkinsJobList' -ctime +7)" ]; then
echo "fetch joblist"
$JENKINS_CLI list-jobs > /tmp/jenkinsJobList
fi
# job selection via fuzzy search
job=$(cat /tmp/empty /tmp/jenkinsJobList | rofi -dmenu)
# triggering the job
$JENKINS_CLI build $job
# opens the pipeline in browser alternative you can replace it with your browser
qutebrowser "$JENKINS_URL/job/$job"
추가로 어떤 브랜치를 구축할지 고려해야 합니다. 우리는 작업 이름을 지정하는 매우 일관된 방법을 가지고 있습니다. 따라서 솔루션을 구축하고 솔루션을 홍보하지 않으려면 작업 이름에
BUILD
가 포함된 작업의 마스터 분기를 트리거하기만 하면 됩니다. 다른 모든 것은 가지를 포함하지 않습니다.이 부분은 스크립트의 하단 부분을 대체하고 있습니다.
if [ "$job" != "" ]; then
# jobname contains BUILD in the string
if [[ "$job" == *"BUILD"* ]]; then
jobname="$job/master"
link="$JENKINS_URL/job/$job/job/master/"
else
jobname="$job"
link="$JENKINS_URL/job/$job/"
fi
#trigger job
$JENKINS_EXEC -webSocket -auth $JENKINS_AUTH -s $JENKINS_URL build $jobname
#open job in browser
qutebrowser "$link"
fi
Reference
이 문제에 관하여(Jenkins cli 및 rofi - GUI 없이 빌드를 트리거합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mafflerbach/jenkins-cli-and-rofi-triggering-builds-without-gui-dom텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)