Gitee pages无法更新

问题

使用Gitee pages部署了Mkdocs的静态页面,经过了多次mkdocs gh-deploy指令(上传到Gitee),Gitee pages上始终无法显示修改过后的静态页面。
原因:Gitee免费版需要自己手动在设置里点击更新。
在这里插入图片描述

版本

  • puppeteer: 8.0.0
  • npm: 6.14.11

解决方法

  1. 安装puppeteer
  2. 编写脚本更新Gitee Page,参考脚本解决 gitee-page 无法自动更新
    创建gitee.js文件,放入以下部分:
    // 此处安装版本为 1.8.0
    const puppeteer = require('puppeteer'); 
    
    async function giteeUpdate() {
        const browser = await puppeteer.launch({
            // 此处可以使用 false 有头模式进行调试, 调试完注释即可
              headless: false,
        });
        const page = await browser.newPage();
        await page.goto('https://gitee.com/login');
        // 1. 选中账号控件
        let accountElements = await page.$x('//*[@id="user_login"]') // 此处使用 xpath 寻找控件,下同
        // 2. 填入账号
        await accountElements[0].type('你的 gitee 账户')
        // 3. 选中密码控件
        let pwdElements = await page.$x('//*[@id="user_password"]')
        // 4. 填入密码
        await pwdElements[0].type('你的 gitee 密码')
        // 5. 点击登录
        let loginButtons = await page.$x('//*[@id="new_user"]/div[2]/div/div/div[4]/input')
        await loginButtons[0].click()
        // 6. 等待登录成功
        await page.waitFor(1000)
        await page.goto('你的 gitee page 更新按钮页面'); // 比如: https://gitee.com/yang0033/hexo-blog/pages
        // 7.1. 监听步骤 7 中触发的确认弹框,并点击确认
        await page.on('dialog', async dialog => {
            console.log('确认更新')
            dialog.accept();
        })
        // 7. 点击更新按钮,并弹出确认弹窗
        let updateButtons = await page.$x('//*[@id="pages-branch"]/div[7]')
        await updateButtons[0].click()
        // 8. 轮询并确认是否更新完毕
        while (true) {
            await page.waitFor(2000)
            try {
                // 8.1 获取更新状态标签
                deploying = await page.$x('//*[@id="pages_deploying"]')
                if (deploying.length > 0) {
                    console.log('更新中...')
                } else {
                    console.log('更新完毕')
                    break;
                }
            } catch (error) {
                break;
            }
        }
        await page.waitFor(500);
        // 10.更新完毕,关闭浏览器
        browser.close();
    }
    giteeUpdate();	
    

参考:

  1. 脚本解决 gitee-page 无法自动更新
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐