基础
需要java环境
下载
https://www.jetbrains.com.cn/teamcity/download/?shownFormKey=professional#section=server
安装
server安装
agent安装
配置文件
`<installation path>\conf`目录的`buildAgent.properties`win启动暂停脚本
teamcityAgent.bat
bash
<span style="font-family:SimSun;font-size:14px;">@ECHO OFF
COLOR A
CD /D E:\buildAgent_ol\bin
echo 当前工作路径为:%cd%
agent.bat start
echo --------------------------------------------
PAUSE</span>aapi调用
个人账号生成access_token
备份构建失败
执行 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 // 安装execjsapi调用
Access_token
个人账号生成access_token

生成access token用于调用api接口
注意有时间限制
在请求头中添加 : Authorization: Bearer <token_value>Csrf token
某些请求需要csrf token
http://your-teamcity-server/authenticationTest.html?csrf
新版本必须要在请求头中添加 : Authorization: Bearer <token_value>
服务器将返回一个 CSRF 令牌备份还原
第一次启动时选择备份还原,准备好以前的备份文件,方式:
- 绝对路径
- 上传压缩包

设置新数据库

版本升级
如果使用更高版本,点击升级

自动备份问题
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)错误
备份还原失败,数据库还原失败

原因是数据表中有重复数据,清理数据重新备份


