以下のようなパイプラインを作成しました。Jenkinsfileが存在するソースコードリポジトリに「backup_grafana.sh」と「gitPush.sh」というスクリプトファイルがあることに注意してください。しかし、次のエラーのためにスクリプトを実行できません:-
/home/jenkins/workspace/grafana-backup@tmp/durable-52495dad/script.sh:
line 1: backup_grafana.sh: not found
ポッド内のkubernetesでjenkinsマスターを実行していることに注意してください。そのため、ポッドが破棄されて動的に再作成される可能性があるため、エラーで示されているようにスクリプトファイルをコピーすることはできません(この場合、新しいポッドを使用すると、スクリプトはjenkinsマスターで使用できなくなります)
pipeline {
agent {
node {
label 'jenkins-slave-python2.7'
}
}
stages {
stage('Take the grafana backup') {
steps {
sh 'backup_grafana.sh'
}
}
stage('Push to the grafana-backup submodule repository') {
steps {
sh 'gitPush.sh'
}
}
}
}
Jenkinsfileでこれらのスクリプトを実行する方法を提案できますか?また、これらのスクリプトを、すでに細かく作成したpythonスレーブで実行したいことにも言及したいと思います。
コマンド 'sh backup_grafana.sh'が実際に正常に実行されるべきときに実行に失敗した場合、2つの可能な解決策があります。
1)シェルにそれらがどこにあるかを伝えるために、これらの実行可能コマンドの前にドットスラッシュが必要な場合があります。それらが$PATH
にない場合は、現在のディレクトリにあることをシェルに通知する必要があります。これは、4つの非空白文字が追加された修正済みのJenkinsfileです。
pipeline {
agent {
node {
label 'jenkins-slave-python2.7'
}
}
stages {
stage('Take the grafana backup') {
steps {
sh './backup_grafana.sh'
}
}
stage('Push to the grafana-backup submodule repository') {
steps {
sh './gitPush.sh'
}
}
}
}
2)スクリプトの最初の行として次のいずれかを宣言することにより、ファイルをbashまたはshスクリプトとして宣言したかどうかを確認します。
#!/bin/bash
または
#!/bin/sh