GitLabによって自動生成された受信後フックを、メールサポートを有効にする新しいファイルに置き換えようとしているため、「受信後」をトリガーする必要があります。
これは私のファイルの以前のバージョンです:
#!/usr/bin/env bash
# This file was placed here by GitLab. It makes sure that your pushed commits
# will be processed properly.
while read oldrev newrev ref
do
# For every branch or tag that was pushed, create a Resque job in redis.
repo_path=`pwd`
env -i redis-cli rpush "resque:gitlab:queue:post_receive" "{\"class\":\"PostRe
ceive\",\"args\":[\"$repo_path\",\"$oldrev\",\"$newrev\",\"$ref\",\"$GL_USER\"]}
" > /dev/null 2>&1
done
そのファイルをファイルの最後に上記の行を含む新しいファイルに置き換えると、GitLab は管理領域に「プロジェクトには無効な受信後ファイルがあります」と表示しますが、電子メールは正しく送信されます。
複数の受信後のサポートの問題を処理する方法を知っていますか。現時点では、ファイルの gitlab 固有の部分が正しく実行されているかどうかはわかりません。
手伝ってくれてありがとう!
アップデート:
フォルダー内のスクリプトは、以下のソリューション (プル リクエスト) を使用して呼び出されるようになりました。しかし、ディレクトリに含まれている場合、標準の「post-receive-email」スクリプトがメールを送信しない理由がわかりません。post-receive として直接呼び出された場合は正常に動作します。
なぜ順序を変更する必要があるのか わかりませんが、次のように機能します(resqueジョブが適切に作成されたかどうかはわかりません:
#!/usr/bin/env bash
repo_path=`pwd`
if [ -d hooks/post-receive.secondary.d ]; then
for i in hooks/post-receive.secondary.d/*
do
[ -x "$i" ] || continue
# call the hooklet with the same arguments we got
path=$repo_path"/"$i
"$path" "$@" || {
# hooklet failed; we need to log it...
echo hooklet $i failed
perl -I$GL_BINDIR -Mgitolite -e "log_it('hooklet $i failed')"
# ...and send back some non-zero exit code ;-)
exit 1
}
done
fi
while read oldrev newrev ref
do
# For every branch or tag that was pushed, create a Resque job in redis.
env -i redis-cli rpush "resque:gitlab:queue:post_receive" "{\"class\":\"PostReceive\",\"args\":[\"$repo_path\",\"$oldrev\",\"$newrev\",\"$ref\",\"$GL_USER\"]}" > /dev/null 2>&1
done
exit 0