使用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如何使用AIML搭建聊天机器人
Jan 27 Python
详解django中自定义标签和过滤器
Jul 03 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
Mar 15 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
Python测试网络连通性示例【基于ping】
Aug 03 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 Python
Django User 模块之 AbstractUser 扩展详解
Mar 11 Python
使用pandas库对csv文件进行筛选保存
May 25 Python
Selenium python时间控件输入问题解决方案
Jul 22 Python
python使用ctypes库调用DLL动态链接库
Oct 22 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
网页上facebook分享功能具体实现
2014/01/26 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
Bootstrap每天必学之js插件
2015/11/30 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
python自动裁剪图像代码分享
2017/11/25 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
python修改文件内容的3种方法详解
2019/11/15 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
掌上明珠Java程序员面试总结
2016/02/23 面试题
自行车租赁公司创业计划书
2014/01/28 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python