Beispiel #1
0
def update_deploy_by_id(id):
    action = request.form.get("action")
    deploy = deploys.get(id)
    if action == "redeploy":
        new_deploy = deploys.create(user_id=deploy.user_id,
                                    project_id=deploy.project_id,
                                    host_id=deploy.host_id,
                                    mode=deploy.mode,
                                    status=2,
                                    branch=deploy.branch,
                                    version=deploy.version,
                                    softln_filename=deploy.softln_filename)
        deploys.deploy(new_deploy)
        return jsonify(dict(rc=0, data=dict(id=new_deploy.id)))
    elif action == "rollback":
        new_deploy = deploys.create(user_id=deploy.user_id,
                                    project_id=deploy.project_id,
                                    host_id=deploy.host_id,
                                    mode=2,
                                    status=2,
                                    branch=deploy.branch,
                                    version=deploy.version,
                                    softln_filename=deploy.softln_filename)
        deploys.rollback(new_deploy)
        return jsonify(dict(rc=0, data=dict(id=new_deploy.id)))
    else:
        raise Error(10000, msg=None)
Beispiel #2
0
def update_deploy_by_id(id):
    action = request.form.get("action")
    deploy = deploys.get(id)
    if action == "redeploy":
        new_deploy = deploys.create(
            user_id=deploy.user_id,
            project_id=deploy.project_id,
            host_id=deploy.host_id,
            mode=deploy.mode,
            status=2,
            branch=deploy.branch,
            version=deploy.version,
            softln_filename=deploy.softln_filename)
        deploys.deploy(new_deploy)
        return jsonify(dict(rc=0, data=dict(id=new_deploy.id)))
    elif action == "rollback":
        new_deploy = deploys.create(
            user_id=deploy.user_id,
            project_id=deploy.project_id,
            host_id=deploy.host_id,
            mode=2,
            status=2,
            branch=deploy.branch,
            version=deploy.version,
            softln_filename=deploy.softln_filename)
        deploys.rollback(new_deploy)
        return jsonify(dict(rc=0, data=dict(id=new_deploy.id)))
    else:
        raise Error(10000, msg=None)
Beispiel #3
0
def api_post_deploy():
    project_id = request.args.get("project_id")
    host_id = request.args.get("host_id")
    branch = request.form.get("branch")
    commit = request.form.get("commit")
    deploy = deploys.create(
        user_id=g.user.id,
        project_id=project_id,
        host_id=host_id,
        mode=0,
        status=2,
        branch=branch,
        version=commit,
        softln_filename=time.strftime("%Y%m%d-%H%M%S") + "-" + commit,
    )
    deploys.deploy(deploy)
    return jsonify(dict(rc=0, data=dict(id=deploy.id)))
Beispiel #4
0
def api_post_deploy():
    project_id = request.args.get("project_id")
    host_id = request.args.get("host_id")
    mode = request.form.get("mode", type=int)
    branch = request.form.get("branch") if mode == 0 else ""
    tag = request.form.get("tag")
    commit = request.form.get("commit") if mode == 0 else tag
    deploy = deploys.create(
        user_id=g.user.id,
        project_id=project_id,
        host_id=host_id,
        mode=mode,
        status=2,
        branch=branch,
        version=commit,
        softln_filename=time.strftime("%Y%m%d-%H%M%S") + "-" + commit,
        )
    deploys.deploy(deploy)
    return jsonify(dict(rc=0, data=dict(id=deploy.id)))
Beispiel #5
0
def update_deploy_by_id(id):
    action = request.form.get("action")
    deploy = deploys.get(id)
    if action == "redeploy":
        new_deploy = deploys.create(
            user_id=deploy.user_id,
            project_id=deploy.project_id,
            host_id=deploy.host_id,
            mode=deploy.mode,
            status=2,
            branch=deploy.branch,
            version=deploy.version,
            softln_filename=deploy.softln_filename)
        deploys.deploy(new_deploy)
        return jsonify(dict(rc=0, data=dict(id=new_deploy.id)))
    elif action == "rollback":
        # new_deploy = deploys.create(
        #     user_id=deploy.user_id,
        #     project_id=deploy.project_id,
        #     host_id=deploy.host_id,
        #     mode=2,
        #     status=2,
        #     branch=deploy.branch,
        #     version=deploy.version,
        #     softln_filename=deploy.softln_filename)
        # deploys.rollback(new_deploy)

        # return jsonify(dict(rc=0, data=dict(id=new_deploy.id)))

        msg = deploys_new.rollback(deploy)
        deploys.update(deploy, **dict(deploy_status=2))
        return jsonify(dict(rc=0, msg=msg))

    elif action == "publish":
        msg = deploys_new.publish(deploy)
        deploys.update(deploy, **dict(deploy_status=1))
        return jsonify(dict(rc=0, msg=msg))
    elif action == "cancel":
        deploys.update(deploy, **dict(deploy_status=99))
        return jsonify(dict(rc=0, data=None))
    else:
        return jsonify(dict(rc=-1, msg="action is not supported"))
Beispiel #6
0
def webhooks_push_events():
    project_id = request.args.get("project_id")
    host_id = request.args.get("host_id")
    data = request.json
    branch = data["ref"].split("/", 2)[-1]
    version = data["after"][:7]
    # 只针对dev分支进行deploy
    if data["ref"] == "refs/heads/dev" and data["total_commits_count"] > 0:
        deploy = deploys.create(
            user_id=g.user.id,
            project_id=project_id,
            host_id=host_id,
            mode=0,
            status=2,
            branch=branch,
            version=version,
            softln_filename=time.strftime("%Y%m%d-%H%M%S") + "-" + version,
            )
        deploys.deploy(deploy)
        return jsonify({"rc": 0}), 200
    else:
        return jsonify({"rc": 0}), 204
Beispiel #7
0
def webhooks_tag_push_events():
    project_id = request.args.get("project_id")
    host_id = request.args.get("host_id")
    data = request.json
    tag = data["ref"].split("/", 2)[-1]
    logger.debug(repr(data))
    # 只针对tag push
    if data["object_kind"] == "tag_push" and data["total_commits_count"] > 0:
        deploy = deploys.create(
            user_id=g.user.id,
            project_id=project_id,
            host_id=host_id,
            mode=1,
            status=3,
            branch="",
            version=tag,
            softln_filename=time.strftime("%Y%m%d-%H%M%S") + "-" + tag,
            )
        deploys.deploy(deploy)
        return jsonify({"rc": 0}), 200
    else:
        return jsonify({"rc": 0}), 204
Beispiel #8
0
def webhooks_tag_push_events():
    project_id = request.args.get("project_id")
    host_id = request.args.get("host_id")
    data = request.json
    tag = data["ref"].split("/", 2)[-1]
    logger.debug(repr(data))
    # 只针对tag push
    if data["object_kind"] == "tag_push" and data["total_commits_count"] > 0:
        deploy = deploys.create(
            user_id=g.user.id,
            project_id=project_id,
            host_id=host_id,
            mode=1,
            status=2,
            branch="",
            version=tag,
            softln_filename=time.strftime("%Y%m%d-%H%M%S") + "-" + tag,
            )
        deploys.deploy(deploy)
        return jsonify({"rc": 0}), 200
    else:
        return jsonify({"rc": 0}), 204
Beispiel #9
0
def webhooks_push_events():
    project_id = request.args.get("project_id")
    host_id = request.args.get("host_id")
    data = request.json
    branch = data["ref"].split("/", 2)[-1]
    version = data["after"][:7]
    logger.debug(repr(data))
    # 只针对dev分支进行deploy
    if data["ref"] == "refs/heads/dev" and data["total_commits_count"] > 0:
        deploy = deploys.create(
            user_id=g.user.id,
            project_id=project_id,
            host_id=host_id,
            mode=0,
            status=3,
            branch=branch,
            version=version,
            softln_filename=time.strftime("%Y%m%d-%H%M%S") + "-" + version,
            )
        deploys.deploy(deploy)
        return jsonify({"rc": 0}), 200
    else:
        return jsonify({"rc": 0}), 204
Beispiel #10
0
def api_post_deploy():
    if "package" not in request.files:
        return jsonify(dict(rc=-1, msg="未上传文件"))

    project_id = request.args.get("project_id")
    if project_id < 1:
        return jsonify(dict(rc=-1, msg="未选择项目"))

    project = projects.get(project_id)
    """ :type: Projects"""
    if project is None:
        return jsonify(dict(rc=-1, msg="项目不存在"))

    if project.users is None:
        return jsonify(dict(rc=-1, msg="不具备该项目的权限[1]"))

    if g.user.id != 1 and project.users[0].id != g.user.id:
        return jsonify(dict(rc=-1, msg="不具备该项目的权限[2]"))

    savePath = "%s/uploads/%s/%s" % (os.getcwd(), datetime.datetime.today().strftime('%Y/%m/%d'), project_id)
    if os.path.exists(savePath) is False:
        os.makedirs(savePath, 0755)

    file = request.files["package"]
    """ :type: werkzeug.datastructures.FileStorage"""
    if file.filename == "":
        return jsonify(dict(rc=-1, msg="未上传文件1"))

    secureFilename = secure_filename(file.filename)
    saveFile = os.path.join(savePath, secureFilename)

    if secureFilename[-4:] != ".zip":
        return jsonify(dict(rc=-1, msg="文件类型必须为.zip"))

    # 文件前缀检查,避免传错项目文件
    print secureFilename[:-4], project.prefix
    if secureFilename.startswith(project.prefix) == False:
        return jsonify(dict(rc=-1, msg="项目文件前缀不符合,您可以传错文件了"))

    file.save(saveFile)

    host_id = request.args.get("host_id")
    mode = request.form.get("mode", type=int)
    tag = request.form.get("tag")
    branch = request.form.get("branch") if mode == 0 else ""
    commit = request.form.get("commit") if mode == 0 else tag
    tag = ""

    host_id = 0
    mode = 0
    branch = ""

    commit = ""

    deploy = deploys.create(
        user_id=g.user.id,
        package_name=secureFilename,
        package_path=saveFile,
        project_id=project_id,
        host_id=host_id,
        mode=mode,
        status=2,
        branch=branch,
        version=commit,
        softln_filename=time.strftime(
            "%Y%m%d-%H%M%S") + "-" + commit,
    )
    # deploys.deploy(deploy)
    return jsonify(dict(rc=0, data=dict(id=deploy.id)))