自动备份
构建脚本
teamcity没有定时自动备份功能,需要自己写脚本
思路(以前运维弄的):
- 定义备份脚本构建(构建可以执行定时任务)
- 编写python脚本(脚本调用teamcity手动备份请求)

脚本
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 // 安装execjslinux安装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/pip3python3 --version
pip3 --version源码安装老是失败,而且后面安装requests、execjs失败,改为yum
yum install python3安装requests、execjs
pip3 install requests // 安装requests
pip3 install PyExecJS // 安装execjs