使用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 02 Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
Jul 10 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
Nov 10 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
python将数组n等分的实例
Dec 02 Python
python爬虫模块URL管理器模块用法解析
Feb 03 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
Python基于mediainfo批量重命名图片文件
Dec 29 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
Python 中的 else详解
2016/04/23 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
工程专业应届生求职信
2014/02/19 职场文书
求职自荐信怎么写
2014/03/06 职场文书
会计求职信范文
2014/05/24 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL