update_dev_server.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. # -*- coding: utf-8 -*-
  2. #!/usr/bin/env python
  3. import os
  4. import hmac
  5. import hashlib
  6. import logging
  7. import datetime
  8. import daiquiri
  9. log_dir = os.environ.get('UPDATE_DEV_SERVER_LOG_DIR', '.')
  10. if not os.path.exists(log_dir):
  11. os.makedirs(log_dir)
  12. daiquiri.setup(
  13. level=logging.DEBUG,
  14. outputs=(
  15. daiquiri.output.File(os.path.join(log_dir, 'update_dev_server-errors.log'), level=logging.ERROR),
  16. daiquiri.output.TimedRotatingFile(
  17. os.path.join(log_dir, 'update_dev_server-everything.log'),
  18. level=logging.DEBUG,
  19. interval=datetime.timedelta(days=1))
  20. )
  21. )
  22. logger = daiquiri.getLogger(__name__)
  23. from sh import pwd, cd, git, supervisorctl, npm, gulp, cnpm, cp, rm, node
  24. REPO_BASE = os.environ['REPO_BASE']
  25. KEY = os.environ['KEY']
  26. from flask import Flask, request
  27. app = Flask(__name__)
  28. @app.route('/update-dev-server', methods=('GET', 'POST'))
  29. def update_dev_server():
  30. signature = request.headers['X-Gogs-Signature']
  31. if not hmac.new(key=KEY, msg=request.data, digestmod=hashlib.sha256).hexdigest() == signature:
  32. logger.info('signature not correct')
  33. return 'signature not correct'
  34. REPO_DIR = '{}/UserServerTest'.format(REPO_BASE)
  35. cd(REPO_DIR)
  36. logger.info('at %s' % (pwd(),))
  37. git('fetch', '--all')
  38. #git('checkout', 'develop')
  39. #git('reset', '--hard', 'origin/develop')
  40. git('checkout', 'master')
  41. git('reset', '--hard', 'origin/master')
  42. logger.info('repo fetched')
  43. # cnpm('install')
  44. gulp('all')
  45. logger.info('static file built')
  46. supervisorctl('restart testing_userserver_1 testing_celery testing_celery_poll_recharge_record')
  47. @app.route('/update-bluetooth-web', methods = ('GET', 'POST'))
  48. def update_bluetooth_web():
  49. signature = request.headers['X-Gogs-Signature']
  50. if not hmac.new(key = KEY, msg = request.data, digestmod = hashlib.sha256).hexdigest() == signature:
  51. logger.info('signature not correct')
  52. return 'signature not correct'
  53. REPO_DIR = '{}/bluetooth'.format(REPO_BASE)
  54. DIST_DIR = '{}/UserServerTest/dist'.format(REPO_BASE)
  55. cd(REPO_DIR)
  56. logger.info('at %s' % (pwd(),))
  57. git('fetch', '--all')
  58. git('checkout', 'for-web')
  59. git('reset', '--hard', 'origin/for-web')
  60. logger.info('repo fetched')
  61. cnpm('install')
  62. cnpm('run', 'build')
  63. rm('-rf', '%s/{agent,dealer,dealerAdmin,static,supporter,test-vue,user}' % DIST_DIR)
  64. cp('-rf', '{}/dist/agent'.format(REPO_DIR), '{}/'.format(DIST_DIR))
  65. cp('-rf', '{}/dist/dealer'.format(REPO_DIR), '{}/'.format(DIST_DIR))
  66. cp('-rf', '{}/dist/dealerAdmin'.format(REPO_DIR), '{}/'.format(DIST_DIR))
  67. cp('-rf', '{}/dist/static'.format(REPO_DIR), '{}/'.format(DIST_DIR))
  68. cp('-rf', '{}/dist/supporter'.format(REPO_DIR), '{}/'.format(DIST_DIR))
  69. cp('-rf', '{}/dist/test-vue'.format(REPO_DIR), '{}/'.format(DIST_DIR))
  70. cp('-rf', '{}/dist/user'.format(REPO_DIR), '{}/'.format(DIST_DIR))
  71. return 'ok'
  72. if __name__ == '__main__':
  73. app.run(host='0.0.0.0', port=7777)