LoginSignup
1
1

More than 5 years have passed since last update.

Jenkinsにsudoを許可してデプロイ

Last updated at Posted at 2018-01-02

前提条件

自分用メモ:thought_balloon:
ubuntu 16.04

本文

JenkinsにGithubなどから例えばhogeというリポジトリをpullしてきて、ビルドしたものは以下のような場所に収納されます。
/var/lib/jenkins/workspace/hoge

ここから好きな場所にrsyncしてあげたいところですが、Operation not permittedと言われてうまく出来なかったりします。

そこでJenkinsにsudoをさせてあげたいわけですが、[シェルの実行]のところに

sudo sh /path/to/deploy.sh

と書いて実行してもsudo: no tty present and no askpass program specified.と言われて実行できません。

なのでむりやり許可をしてあげます!:punch:

$ sudo visudo

からの

Defaults visiblepw
jenkins ALL=(ALL) NOPASSWD:ALL

を追加でパスワードなしでsudoが実行できます。
この時なにやら見慣れないエディターがでてきますが、これはnanoという子(名前は日常にでてきそうでかわいい...)で、使い方はこのサイトを参考にすると良いと思われます。

ちなみにこのファイル自体は/etc/sudoersにあるのですが、少しでもシンタックスエラーになるとsudo自体が使えなくなってしまうのでご注意ください...間違ってもvimとかで編集しようと思わないように...もしもの対処法はこちら:star:

おまけ

Jenkinsが実行したファイルは先日オススメしたnpmのデーモン装置foreverで普通に

deploy.sh
- 略 -
forever start path/to/app.js

と書いても

Forever cannot find process with id: /path/to/app.js

とか言いやがってなぜか見つけてくれません。。。
で対処法は、

deploy.sh
- 略 -
forever start app.js --sourceDir="/path/to/dir/"

としてやると良いようです:sparkles:

さらに厄介なことに、Jenkinsでforeverしてしまうと今度は他のユーザーからforever listとしてやっても

info:    No forever processes running

と言われてしまいます。。。。とりあえず:point_down:こんな感じで止めたいときは一気に殺すしか今の所僕には打つ手なしです:innocent:

$ sudo pkill -f 'app.js'

何方か良い方法を知ってらしたら、ご教授ください:bow:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1