静的ファイルリリースの自動化

css, jsのリリース作業自動化について検討してみた。

SERVER=サーバのIP
TARGET_DIR=${WORKSPACE}
CSS=${TARGET_DIR}/css/*.css
JS=${TARGET_DIR}/build/*.js
IMG=${TARGET_DIR}/img/sprite/
APACHE_PATH=/path/to/apache
ID_RSA_PATH=/path/to/jenkins/.ssh/id_rsa

# grunt for js
chmod 700 sh/jenkins-grunt.sh
${TARGET_DIR}/sh/jenkins-grunt.sh

# compass for css
export PATH=/usr/local/bin:$PATH;
compass compile sass/

# rsync
# css
rsync -avz -e ssh ${CSS} user@${SERVER}:${APACHE_PATH}/htdocs/web/css/
ssh -i ${ID_RSA_PATH} user@${SERVER} chmod 777 ${APACHE_PATH}/htdocs/web/css/*

# js
rsync -avz -e ssh ${JS} user@${SERVER}:${APACHE_PATH}/htdocs/web/js/
ssh -i ${ID_RSA_PATH} user@${SERVER} chmod 777 ${APACHE_PATH}/htdocs/web/js/*.js

# img
ssh -i ${ID_RSA_PATH} user@${SERVER} rm ${APACHE_PATH}/htdocs/web/img/sprite/*
rsync -avz -e ssh ${IMG}/*.png user@${SERVER}:${APACHE_PATH}/htdocs/web/img/sprite/

こんな感じで一応できた。
ちなみにchmodとかしてるのはテスト環境だからであって本番環境では必要ない。

jenkins-grunt.shは
https://github.com/fuzzy31u/static-jenkins-skeleton/blob/master/sh/jenkins-grunt.sh