Skip to content

自动备份

构建脚本

teamcity没有定时自动备份功能,需要自己写脚本

思路(以前运维弄的):

  1. 定义备份脚本构建(构建可以执行定时任务)
  2. 编写python脚本(脚本调用teamcity手动备份请求)

image-20250219153453890

脚本

python
"""
@Describe :
'@Time     ':'2025/2/20 14:00',
'@Author   ':'liuchenyun',
"""
import requests
import re
import execjs
session = requests.session()
# 根据liuchenyun 账号生成

# 2022。04.4版本
access_token = "eyJ0eXAiOiAiVENWMiJ9.YnludTI4VDJqOFlDanFjMkNQZEk5cUl2YTNn.OGYzNjM1ZWYtMzJlZi00ZDA1LWEzOWUtOTg5OTE5YzhjMDUz"

# 2024.03.1版本
#access_token = "eyJ0eXAiOiAiVENWMiJ9.MEljN290NENSSW80YXFXZjdrVDdtM0kzQU9R.NThhYmJmYjEtY2UzMC00ZWM2LWExNWQtYmQzYzEzNTkyNGFk"
headers = {
        "Authorization": f"Bearer {access_token}"
}

# 获取用户信息,验证一下登录是否成功


def get_csrf():
    user_url = 'http://ci.supermapol.cn/authenticationTest.html?csrf'

    res = session.get(user_url, headers=headers)
    print(res.text)


def start_backup(tc_csrf_token):
    backup_url = 'http://ci.supermapol.cn/admin/backupPage.html'

    data = {
        'settings.fileName': 'TeamCity_Backup',
        'settings.addTimestampSuffix': 'true',
        '_settings.addTimestampSuffix': '',
        'settings.preset': 'X',
        'settings.customIncludeDatabase': 'true',
        '_settings.customIncludeDatabase': '',
        'settings.customIncludeConfiguration': 'true',
        '_settings.customIncludeConfiguration': '',
        'settings.customIncludeSupplementaryData': 'true',
        '_settings.customIncludeSupplementaryData': '',
        '_settings.customIncludeBuildLogs': '',
        'settings.customIncludePersonalChanges': 'true',
        '_settings.customIncludePersonalChanges': '',
        'submitStartBackup': 'Start Backup',
        'tc-csrf-token': tc_csrf_token,
    }
    res = session.post(backup_url, data=data, headers=headers)
    print(res.text)


if __name__ == '__main__':
    
    tc_csrf_token = get_csrf()
    start_backup(tc_csrf_token)

备份构建失败

win环境安装python

执行 teamcity_backup.py失败

win agent的python环境缺少 requests、execjs模块

pip --version

python -m ensurepip --upgrade // 升级
python -m pip install --upgrade pip // 升级 pip

pip install requests // 安装requests
pip install PyExecJS // 安装execjs

linux安装python

sudo yum install -y gcc openssl-devel bzip2-devel libffi-devel zlib-devel //预先安装依赖包

wget https://www.python.org/ftp/python/3.10.15/Python-3.10.15.tgz // 可自行下载

tar -xzf Python-3.13.2.tgz

cd Python-3.13.2

./configure --prefix=/usr/local/python3

编译并安装

make -j $(nproc)
sudo make install

创建软链接

sudo ln -s /usr/local/python3/bin/python3.13 /usr/bin/python3
sudo ln -s /usr/local/python3/bin/pip3.13 /usr/bin/pip3
python3 --version
pip3 --version

源码安装老是失败,而且后面安装requests、execjs失败,改为yum

yum install python3

安装requests、execjs

pip3 install requests // 安装requests
pip3 install PyExecJS // 安装execjs