本次系統(tǒng)環(huán)境
os: Deepin(Linux)
Python: 3.7
lib: PyYAML=5.3.1 | selenium=3.141.0
extend_driver: chromedriver
使用說明
參數(shù)
Python腳本和config.yaml配置文件中包含的參數(shù)信息
repo_user_name = "Gitee用戶名"
repo_name = "倉(cāng)庫(kù)名"
login_user = "登錄用戶"
login_pwd = "登錄密碼"
os = "輸入數(shù)值1~3(你的操作系統(tǒng):1 Linux | 2 Mac | 3 Windows)"
驅(qū)動(dòng)
本文使用的是 Linux 87.0.4280.88(正式版本) (64 位)
你需要根據(jù)你的操作系統(tǒng)和谷歌瀏覽器選擇對(duì)應(yīng)的驅(qū)動(dòng)。如果你的瀏覽器版本與我的一致,那么恭喜你_,直接拿去用吧~我已經(jīng)把Linux、Mac和Windows的驅(qū)動(dòng)準(zhǔn)備好了。
如果你的谷歌瀏覽器版本與我的不一致也不要緊,下面我會(huì)告訴你如何下載與配置。
1.查看你的chrome版本
在chrome瀏覽器地址欄輸入: chrome://version/ 查看自己的版本信息。
然后你將看到:
或者在設(shè)置里查看:
2.下載驅(qū)動(dòng)
選擇自己的驅(qū)動(dòng) Windows|Linux|Mac。 驅(qū)動(dòng)下載: 地址
3.重要提示: 需要把驅(qū)動(dòng)放到下面兩個(gè)路徑下
1.谷歌的安裝路徑
2.python的安裝路徑
Python環(huán)境
為了避免干擾,我使用虛擬環(huán)境來進(jìn)行管理。
當(dāng)然你使用安裝系統(tǒng)安裝的環(huán)境也沒關(guān)系。
使用安裝環(huán)境
1.安裝依賴庫(kù)
在requirements.txt
所在目錄執(zhí)行:
pip install -r requirements.txt
創(chuàng)建尋環(huán)境
1.創(chuàng)建目錄, 并進(jìn)入該目錄
mkdir -p ~/Virtualenv/Python37 cd ~/Virtualenv/Python37
2.創(chuàng)建虛擬環(huán)境
如果報(bào)錯(cuò):
The virtual environment was not created successfully because ensurepip is not
available
執(zhí)行:
hljs
apt-get install python3-venv
3.切換到虛擬環(huán)境
如果使用IDE,直接將腳本切換為虛擬環(huán)境的可執(zhí)行程序。
如果使用命令行,可以直接切換到尋虛擬環(huán)境所在的目錄,直接執(zhí)行即可;或者執(zhí)行虛擬環(huán)境中的active
。(Windows 腳本在Script下| Linux、Mac在bin下)
e.g. 對(duì)于Linux: source ./bin/activate
4.安裝該本腳本需要的依賴包
pip install -r requirements.txt
運(yùn)行腳本
1.準(zhǔn)備你的倉(cāng)庫(kù)信息
我提供了通過鍵盤輸入和配置文件兩種方式來獲取你的倉(cāng)庫(kù)和密碼等信息。
默認(rèn)是讀取配置文件的方式進(jìn)行獲取。如果你要切換,你可以在bin.py
的文件末尾進(jìn)行配置,我做了說明。
2.執(zhí)行腳本
如果你已經(jīng)了解并準(zhǔn)備好了,那么直接執(zhí)行它吧~
附錄
腳本 | 驅(qū)動(dòng) | 配置文件等信息,到我的Gitee上下載--> 地址
1.配置文件:config.yaml
repo_user_name: 倉(cāng)庫(kù)用戶
repo_name: 倉(cāng)庫(kù)名
login_user: 登錄名
login_pwd: 登錄密碼
os: 1
Python腳本:bin.py
##! ~/Virtualenv/Python37/python/bin/python
# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as Wait
import yaml
import os
def redeploy(repo_user_name, repo_name, login_user, login_pwd, oSystem):
print("\nstart refresh gitee pages...")
os_type = {
'1': 'chromedriver_linux',
'2': 'chromedriver_mac',
'3': 'chromedriver_win.exe'
}
url = "https://gitee.com/" + repo_user_name + "/" + repo_name + "/pages"
# path = os.path.dirname(os.path.realpath(__file__))
# driver_path = "script/{}".format(os_type[oSystem])
driver = os.path.abspath("script/chromedriver_linux")
chrome_options = Options()
chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--headless")
browser = webdriver.Chrome(executable_path=driver, options=chrome_options)
browser.get(url)
Wait(browser, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "item.git-nav-user__login-item")))
print("load finish. url=" + url)
login_btn = browser.find_element_by_class_name("item.git-nav-user__login-item")
login_btn.click()
Wait(browser, 10).until(EC.presence_of_element_located((By.ID, "user_login")))
Wait(browser, 10).until(EC.presence_of_element_located((By.ID, "user_password")))
print("login page load finish.")
user_input = browser.find_element_by_id("user_login")
pwd_input = browser.find_element_by_id("user_password")
login_btn = browser.find_element_by_name("commit")
user_input.send_keys(login_user)
pwd_input.send_keys(login_pwd)
login_btn.click()
Wait(browser, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, "button.orange.redeploy-button.ui.update_deploy")))
print("login finish.")
deploy_btn = browser.find_element_by_class_name('button.orange.redeploy-button.ui.update_deploy')
browser.execute_script("window.scrollTo(100, document.body.scrollHeight);")
deploy_btn.click()
dialog = browser.switch_to.alert
dialog.accept()
print("refresh gitee pages finish.")
browser.close()
def input_required():
repo_user_name = input("倉(cāng)庫(kù)用戶名稱:\n>>>")
if len(repo_user_name) == 0:
print("輸入不能為空!請(qǐng)重新輸入")
input_required()
repo_name = input("倉(cāng)庫(kù)名稱:\n>>>")
if len(repo_name) == 0:
print("輸入不能為空!請(qǐng)重新輸入")
input_required()
login_user = input("登錄用戶名稱:\n>>>")
if len(login_user) == 0:
print("輸入不能為空!請(qǐng)重新輸入")
input_required()
login_pwd = input("登錄密碼:\n>>>")
if len(login_pwd) == 0:
print("輸入不能為空!請(qǐng)重新輸入")
input_required()
oSystem = input("當(dāng)前操作系統(tǒng)(默認(rèn)Linux)\n\t** 1:Linux | 2:Mac | 3:Windows >**\n>>>")
if len(os) == 0:
redeploy(repo_user_name, repo_name, login_user, login_pwd, "1")
redeploy(repo_user_name, repo_name, login_user, login_pwd, oSystem)
def reade_conf():
path = os.path.dirname(os.path.realpath(__file__))
config = os.path.join(path, "config.yaml")
f = open(config) # 打開yaml文件
# d = yaml.load(f) ##yaml5.1之前的版本:使用load方法加載
d = yaml.load(f, Loader=yaml.FullLoader) ##yaml5.1之后的版本:使用load方法加載
repo_user_name = d['repo_user_name']
repo_name = d['repo_name']
login_user = d['login_user']
login_pwd = d['login_pwd']
oSystem = str(d['os'])
redeploy(repo_user_name, repo_name, login_user, login_pwd, oSystem)
if __name__ == '__main__':
# 方式一:通過鍵盤輸入必要信息
# input_required()
# 方式二:通過config.yaml配置文件
reade_conf()
參考文章
https://www.jianshu.com/p/19cc4eb0f199
https://www.cnblogs.com/wulixia/p/11200023.html
以上就是使用Python腳本對(duì)GiteePages進(jìn)行一鍵部署的詳細(xì)內(nèi)容,更多關(guān)于Python GiteePages一鍵部署的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- Python自動(dòng)化運(yùn)維和部署項(xiàng)目工具Fabric使用實(shí)例
- Python自動(dòng)化部署工具Fabric的簡(jiǎn)單上手指南
- Linux下將Python的Django項(xiàng)目部署到Apache服務(wù)器
- 在Linux系統(tǒng)上部署Apache+Python+Django+MySQL環(huán)境
- 使用PyCharm配合部署Python的Django框架的配置紀(jì)實(shí)
- 使用SAE部署Python運(yùn)行環(huán)境的教程
- 在Docker上開始部署Python應(yīng)用的教程