walle vor 6 Jahren
Ursprung
Commit
c5b29f848f
3 geänderte Dateien mit 24 neuen und 18 gelöschten Zeilen
  1. 2 1
      walle/model/task.py
  2. 17 15
      walle/service/deployer.py
  3. 5 2
      walle/service/waller.py

+ 2 - 1
walle/model/task.py

@@ -157,6 +157,7 @@ class TaskModel(SurrogatePK, Model):
         item = {
             'id': self.id,
             'name': self.name,
+            'user_name': self.name,
             'user_id': int(self.user_id),
             'project_id': int(self.project_id),
             'project_name': self.project_id if self.project_id else '',
@@ -183,7 +184,7 @@ class TaskModel(SurrogatePK, Model):
             'enable_update': (permission.enable_uid(self.user_id) or permission.enable_role(DEVELOPER)) and (self.status in [self.status_new, self.status_reject]),
             'enable_delete': (permission.enable_uid(self.user_id) or permission.enable_role(DEVELOPER)) and (self.status in [self.status_new, self.status_pass, self.status_reject]),
             'enable_create': False,
-            'enable_online': (permission.enable_uid(self.user_id) or permission.enable_role(DEVELOPER)) and (self.status in [self.status_pass]),
+            'enable_online': (permission.enable_uid(self.user_id) or permission.enable_role(DEVELOPER)) and (self.status in [self.status_pass, self.status_fail]),
             'enable_audit': permission.enable_role(DEVELOPER) and (self.status in [self.status_new]),
             'enable_block': False,
         }

+ 17 - 15
walle/service/deployer.py

@@ -153,7 +153,7 @@ class Deployer:
         :return:
         '''
         # TODO
-        socketio.sleep(0.001)
+        # socketio.sleep(0.001)
         self.stage = self.stage_deploy
         self.sequence = 2
 
@@ -217,7 +217,7 @@ class Deployer:
         :return:
         '''
         # TODO
-        socketio.sleep(0.001)
+        # socketio.sleep(0.001)
         self.stage = self.stage_post_deploy
         self.sequence = 3
 
@@ -242,7 +242,7 @@ class Deployer:
         :return:
         '''
         # TODO
-        socketio.sleep(0.001)
+        # socketio.sleep(0.001)
         self.stage = self.stage_prev_release
         self.sequence = 4
 
@@ -255,6 +255,12 @@ class Deployer:
         # result = waller.run(command)
         # current_app.logger.info('command: %s', dir(result))
 
+        # 用户自定义命令
+        command = self.project_info['prev_release']
+        current_app.logger.info(command)
+        with self.local.cd(self.project_info['target_releases']):
+            result = self.local.run(command, wenv=self.config())
+
 
         # TODO md5
         # 传送到版本库 release
@@ -275,7 +281,7 @@ class Deployer:
         :return:
         '''
         # TODO
-        socketio.sleep(0.001)
+        # socketio.sleep(0.001)
         self.stage = self.stage_release
         self.sequence = 5
 
@@ -299,7 +305,7 @@ class Deployer:
         :return:
         '''
         # TODO
-        socketio.sleep(0.001)
+        # socketio.sleep(0.001)
         with waller.cd(self.project_info['target_releases']):
             command = 'tar zxf %s' % (self.release_version_tar)
             result = waller.run(command, wenv=self.config())
@@ -314,6 +320,12 @@ class Deployer:
         self.stage = self.stage_post_release
         self.sequence = 6
 
+        # 用户自定义命令
+        command = self.project_info['post_release']
+        current_app.logger.info(command)
+        with self.local.cd(self.project_info['target_root']):
+            result = self.local.run(command, wenv=self.config())
+
         self.post_release_service(waller)
 
     def post_release_service(self, waller):
@@ -418,16 +430,6 @@ class Deployer:
         self.deploy()
         self.post_deploy()
 
-        # server = '172.16.0.231'
-        # try:
-        #     self.connections[server] = Waller(host=server, user=self.project_info['target_user'])
-        #     self.prev_release(self.connections[server])
-        #     self.release(self.connections[server])
-        #     self.post_release(self.connections[server])
-        # except Exception as e:
-        #     current_app.logger.exception(e)
-        #     self.errors[server] = e.message
-
         all_servers_success = True
         for server_info in self.servers:
             server = server_info['host']

+ 5 - 2
walle/service/waller.py

@@ -25,6 +25,8 @@ class Waller(Connection):
         :param kwargs:
         :return:
         '''
+        message = 'deploying task_id=%s [%s@%s]$ %s ' % (wenv['task_id'], self.user, self.host, command)
+        current_app.logger.info(message)
         try:
             message = 'task_id=%s, host:%s command:%s' % (
                 wenv['task_id'], self.host, command
@@ -68,7 +70,7 @@ class Waller(Connection):
             RecordModel().save_record(stage=wenv['stage'], sequence=wenv['sequence'], user_id=wenv['user_id'],
                                       task_id=wenv['task_id'], status=1, host=self.host, user=self.user,
                                       command=command, success='', error=error)
-            if hasattr(e, 'resean') and hasattr(e, 'result'):
+            if hasattr(e, 'reason') and hasattr(e, 'result'):
                 message = 'task_id=%s, host:%s command:%s, status=1, reason:%s, result:%s' % (
                     wenv['task_id'], self.host, command, e.reason, error
                 )
@@ -107,6 +109,8 @@ class Waller(Connection):
     def sync(self, wtype, remote=None, local=None, wenv=None):
         command = 'put: scp %s %s@%s:%s' % (local, self.user, self.host, remote) if wtype == 'put' \
             else 'get: scp %s@%s:%s %s' % (self.user, self.host, remote, local)
+        message = 'deploying task_id=%s [%s@%s]$ %s ' % (wenv['task_id'], self.user, self.host, command)
+        current_app.logger.info(message)
 
         try:
             if wtype == 'put':
@@ -160,4 +164,3 @@ class Waller(Connection):
             }
             if wenv['console']:
                 emit('console', {'event': 'task:console', 'data': ws_dict}, room=wenv['task_id'])
-