使用Python脚本对GiteePages进行一键部署的使用说明


Posted in Python onMay 27, 2021

本次系统环境

os: Deepin(Linux)
Python: 3.7
lib: PyYAML=5.3.1 | selenium=3.141.0
extend_driver: chromedriver

使用说明

参数

Python脚本和config.yaml配置文件中包含的参数信息

repo_user_name = "Gitee用户名"
repo_name = "仓库名"
login_user = "登录用户"
login_pwd = "登录密码"
os = "输入数值1~3(你的操作系统:1 Linux | 2 Mac | 3 Windows)"

驱动

本文使用的是 Linux 87.0.4280.88(正式版本) (64 位)

你需要根据你的操作系统和谷歌浏览器选择对应的驱动。如果你的浏览器版本与我的一致,那么恭喜你_,直接拿去用吧~我已经把Linux、Mac和Windows的驱动准备好了。

如果你的谷歌浏览器版本与我的不一致也不要紧,下面我会告诉你如何下载与配置。

1.查看你的chrome版本

在chrome浏览器地址栏输入: chrome://version/ 查看自己的版本信息。

然后你将看到:

使用Python脚本对GiteePages进行一键部署的使用说明

或者在设置里查看:

使用Python脚本对GiteePages进行一键部署的使用说明

2.下载驱动

选择自己的驱动 Windows|Linux|Mac。 驱动下载: 地址

3.重要提示: 需要把驱动放到下面两个路径下

1.谷歌的安装路径

2.python的安装路径

Python环境

为了避免干扰,我使用虚拟环境来进行管理。

当然你使用安装系统安装的环境也没关系。

使用安装环境

1.安装依赖库

requirements.txt所在目录执行:

pip install -r requirements.txt

创建寻环境

1.创建目录, 并进入该目录

mkdir -p ~/Virtualenv/Python37 && cd ~/Virtualenv/Python37

2.创建虚拟环境

python3 -m venv python

如果报错:

The virtual environment was not created successfully because ensurepip is not
available

执行:

hljs
apt-get install python3-venv

3.切换到虚拟环境

如果使用IDE,直接将脚本切换为虚拟环境的可执行程序。
如果使用命令行,可以直接切换到寻虚拟环境所在的目录,直接执行即可;或者执行虚拟环境中的active。(Windows 脚本在Script下| Linux、Mac在bin下)
e.g. 对于Linux: source ./bin/activate

4.安装该本脚本需要的依赖包

pip install -r requirements.txt

运行脚本

1.准备你的仓库信息
我提供了通过键盘输入和配置文件两种方式来获取你的仓库和密码等信息。

默认是读取配置文件的方式进行获取。如果你要切换,你可以在bin.py的文件末尾进行配置,我做了说明。

2.执行脚本
如果你已经了解并准备好了,那么直接执行它吧~

python bin.py

附录

脚本 | 驱动 | 配置文件等信息,到我的Gitee上下载--> 地址

1.配置文件:config.yaml

repo_user_name: 仓库用户
repo_name: 仓库名
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("仓库用户名称:\n>>>")
    if len(repo_user_name) == 0:
        print("输入不能为空!请重新输入")
        input_required()

    repo_name = input("仓库名称:\n>>>")
    if len(repo_name) == 0:
        print("输入不能为空!请重新输入")
        input_required()

    login_user = input("登录用户名称:\n>>>")
    if len(login_user) == 0:
        print("输入不能为空!请重新输入")
        input_required()

    login_pwd = input("登录密码:\n>>>")
    if len(login_pwd) == 0:
        print("输入不能为空!请重新输入")
        input_required()

    oSystem = input("当前操作系统(默认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脚本对GiteePages进行一键部署的详细内容,更多关于Python GiteePages一键部署的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
详解Python中的正则表达式的用法
Apr 09 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
Python基于socket实现简单的即时通讯功能示例
Jan 16 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
python发送多人邮件没有展示收件人问题的解决方法
Jun 21 Python
python实现最大子序和(分治+动态规划)
Jul 05 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
python字典的遍历3种方法详解
Aug 10 Python
keras获得某一层或者某层权重的输出实例
Jan 24 Python
Python使用BeautifulSoup4修改网页内容
May 20 Python
教你使用Python pypinyin库实现汉字转拼音
基于tensorflow权重文件的解读
May 26 #Python
解决Python字典查找报Keyerror的问题
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
tensorflow中的数据类型dtype用法说明
May 26 #Python
详解Python魔法方法之描述符类
May 26 #Python
使用tensorflow 实现反向传播求导
You might like
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
Vue ElementUI实现:限制输入框只能输入正整数的问题
2020/07/31 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
分享给Python新手们的几道简单练习题
2017/09/21 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
幼儿园亲子活动方案
2014/01/29 职场文书
演讲稿格式范文
2014/05/19 职场文书
师德标兵事迹材料
2014/12/19 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python