Created
April 26, 2015 09:57
-
-
Save nhosoya/7efb97649ac303c209f9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| set -e | |
| set -x | |
| set -u | |
| function init() { | |
| export YMDHMS=`date +%Y%m%d%H%M%S` | |
| } | |
| function validate_environment_variable() { | |
| # `set -e` してるから未定義ならここで落ちるはず | |
| echo WORKSPACE=${WORKSPACE} | |
| echo SLACK_NOTIFICATION_HEADER=${SLACK_NOTIFICATION_HEADER} | |
| echo SLACK_NOTIFICATION_FOOTER=${SLACK_NOTIFICATION_FOOTER} | |
| echo MR_TARGET_BRANCH=${MR_TARGET_BRANCH} | |
| } | |
| function load_tachikoma_setting() { | |
| export BRANCH_NAME=tachikoma/bundle-update-$YMDHMS | |
| export DIFF_TEXT=${WORKSPACE}/diff-$YMDHMS.txt | |
| export DIFF_HTML=${WORKSPACE}/diff.html | |
| export GITLAB_API_ENDPOINT=http://gitlab_url/api/v3 | |
| export GITLAB_API_PRIVATE_TOKEN=abcdefghijklmnopqrstuvwxyz | |
| git config user.name "tachikoma" | |
| git config user.email "tachikoma@メールアドレス" | |
| export MR_DESCRIPTION=":one_eyed_robot: tachikomaによって自動生成されたMRです。詳細:${BUILD_URL}" | |
| #TODO 改行文字が分からない。\nはだめだった。 | |
| } | |
| function checkout_new_branch() { | |
| git branch | grep ${BRANCH_NAME} && true | |
| if [ $? == 0 ]; then | |
| git branch -D ${BRANCH_NAME} | |
| fi | |
| git checkout -b ${BRANCH_NAME} | |
| } | |
| function create_diff() { | |
| if [ -f ${DIFF_TEXT} ]; then | |
| rm -f ${DIFF_TEXT} | |
| fi | |
| echo ${SLACK_NOTIFICATION_HEADER} >> ${DIFF_TEXT} | |
| git diff -U0 Gemfile.lock >> ${DIFF_TEXT} | |
| echo ${SLACK_NOTIFICATION_FOOTER} >> ${DIFF_TEXT} | |
| git diff -U0 --color Gemfile.lock | /home/jenkins/script/ansi2html.sh > diff.html | |
| } | |
| function notify_diff() { | |
| case "$1" in | |
| "slack") | |
| /home/jenkins/script/slack_post.sh ${SLACK_WEBHOOKURL} ${DIFF_TEXT} ${SLACK_NOTIFICATION_CHANNEL} tachikoma | |
| ;; | |
| *) | |
| echo "$1 is not supported." | |
| return 1 | |
| ;; | |
| esac | |
| } | |
| function create_merge_request() { | |
| git add Gemfile.lock | |
| git commit -m "Bundle update $YMDHMS" | |
| git push origin ${BRANCH_NAME} | |
| # get ProjectID | |
| PROJECT_NAME=`git remote -v | grep -e oigin -e push | awk '{print $2}' | cut -d":" -f2` | |
| echo $PROJECT_NAME | |
| PROJECT_ID=`gitlab projects --only=id,path_with_namespace | grep $PROJECT_NAME | awk '{print $2}'` | |
| echo $PROJECT_ID | |
| gitlab create_merge_request $PROJECT_ID "Exec tachikoma update $YMDHMS" "{\ | |
| source_branch: '${BRANCH_NAME}', \ | |
| target_branch: '${MR_TARGET_BRANCH}', \ | |
| description: '${MR_DESCRIPTION}'\ | |
| }" | |
| } | |
| function cleanup() { | |
| git stash | |
| git checkout develop | |
| git branch -D ${BRANCH_NAME} | |
| } | |
| # main | |
| echo "Begin Tachikoma Checking bundle-update..." | |
| init | |
| validate_environment_variable | |
| load_tachikoma_setting | |
| bundle install --no-deployment --without nothing --path vendor/bundle | |
| checkout_new_branch | |
| bundle update | |
| create_diff | |
| notify_diff slack | |
| create_merge_request | |
| cleanup | |
| echo "Finish Tachikoma Checking bundle-update." | |
| exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment