Bitbucket Pipelinesは、Dockerコンテナを使用してタスクを実行しています。デフォルトでは、Dockerコンテナはrootとして実行されます。これは、NPMがスクリプトを実行するときにNPMが権限をダウングレードしようとするため、NPMのライフサイクルスクリプトの問題です。Bitbucket Pipeline Dockerコンテナでroot以外のユーザーに簡単に変更できますか?
postinstall
スクリプトを実行する場合、NPM throws an errorはcannot run in wd %s %s (wd=%s)
です。最も簡単な解決策は、--unsafe-perm
フラグを指定してnpm installを実行することですが、私はこの方法が嫌いです。
サービスが root以外のユーザーに変更するUSERを使用して、権限なしで実行することができた場合:
ドッカーのbest practices Dockerfilesを書くためには、と述べています。
一般的なDockerコンテナを設定するときは、root以外の新しいユーザーを作成し、npmスクリプトをこのユーザーとして実行します。
Pipelines documentationを読んだ後、DockerのUSERコマンドと同等のものは見つかりませんでした。 はuseradd
、chown
、su
(まだテストしていない)を使用することができますが、より簡単な解決策がありますか?残念ながらbitbucket-pipelines.yml
スクリプトセクションにuseradd
、chown
とsu
を追加
repo:push
ウェブフックを失敗にパイプラインと結果を壊します。
image: node:6.2
pipelines:
default:
- step:
script:
- useradd --user-group --create-home --shell /bin/false node
- chown -R node: /opt/atlassian/bitbucketci/agent/build
- su -s /bin/sh -c "npm install" node
- su -s /bin/sh -c "npm run test:coverage --silent" node
は、パイプラインは、この質問に対処するには、2つのものがあります
{
"code": 500,
"message": "There was an error processing your request. It has been logged (ID <removed>)."
}
質問。私はこの '/ opt/atlassian/bitbucketci/agent/build'への参照を他のPipeLinesの質問で見ています。誰もが、私は生成されたビルドをつかむことができるように実行されているコンテナのエージェント情報を見つけるために知っていますか? –