使用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中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
Python基于回溯法子集树模板实现8皇后问题
Sep 01 Python
python通过elixir包操作mysql数据库实例代码
Jan 31 Python
Python selenium实现微博自动登录的示例代码
May 16 Python
解决python文件双击运行秒退的问题
Jun 24 Python
python如何实现代码检查
Jun 28 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
python中doctest库实例用法
Dec 31 Python
Python的collections模块真的很好用
Mar 01 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 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
ip签名探针
2006/10/09 PHP
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
Python采集腾讯新闻实例
2014/07/10 Python
Python中Collection的使用小技巧
2014/08/18 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
大学生实习期自我评价范文
2013/10/03 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL