使用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 相关文章推荐
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 Python
python plotly绘制直方图实例详解
Jul 22 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
python 回溯法模板详解
Feb 26 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
Python常用GUI框架原理解析汇总
Dec 07 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
Feb 03 Python
Python的Tqdm模块实现进度条配置
Feb 24 Python
python中random模块详解
Mar 01 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 网上商城促销设计实例代码
2012/02/17 PHP
php缩小png图片不损失透明色的解决方法
2013/12/25 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
10个php函数实用却不常见
2015/10/13 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
phpStorm2020 注册码
2020/09/17 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
jQuery使用bind函数实现绑定多个事件的方法
2017/10/11 jQuery
vue2.0在table中实现全选和反选的示例代码
2017/11/04 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
利用Python读取文件的四种不同方法比对
2017/05/18 Python
python字符串的拼接方法总结
2019/11/18 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
Python控制台实现交互式环境执行
2020/06/09 Python
Python通过字典映射函数实现switch
2020/11/06 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
店面销售职位的职责
2014/03/09 职场文书
深入理解redis中multi与pipeline
2021/06/02 Redis
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server