2024-09-16 18:19:30 +08:00
<!DOCTYPE html>
< html lang = "zh-cn" >
< head >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1, maximum-scale=1" >
< title > Hugo使用GitHub Action自动刷新多吉云CDN缓存</ title >
< link rel = "alternate" type = "application/rss+xml" title = "优世界" href = "/rss.xml" >
< link rel = "icon" type = "image/x-icon" href = "/favicon.ico" >
< link rel = 'stylesheet' href = '/css/main.css' >
< link rel = "stylesheet" href = "/css/normalize.css" >
< link rel = "stylesheet" href = "/css/remixicon.css" >
< link rel = "stylesheet" href = "/css/uikit.min.css" >
< link rel = "stylesheet" href = "/css/nprogress.min.css" >
< link rel = "stylesheet" href = "/css/Artalk.css" />
< script src = "/js/jquery.min.js" ></ script >
< script src = "/js/barrage.min.js" ></ script >
< script src = "/js/jquery.scrollUp.min.js" ></ script >
< script src = "/js/instantpage.min.js" type = "module" defer ></ script >
< script src = "/js/pjax.js" ></ script >
< link rel = "stylesheet" href = "/css/mywaline.css" />
< script > console . log ( "\n %c Amigo Theme %c https://usj.cc \n" , "color: #fadfa3; background: #030307; padding:3px; font-size:12px;" , "color: #ffffff;background: #16171a; padding: 3px; font-size: 12px;" );</ script >
< meta name = "keywords" content = "大学,教程,blog,优世界,优设计,博客,大学生博客,生活,文案," />
< meta name = "template" content = "Amigo" />
</ head >
</ head >
< body >
< div class = "main" >
< div class = "container" >
< div class = "header" >
< div class = "head_author_img load-memos-editor" >
< img src = "/image/avatar.jpg" class = "blog-img" width = "80" height = "80" alt = "优世界" />
</ div >
< div class = "site-description" >
< h2 >< span class = "uk-invisible" > 风吹云散,云卷云舒</ span ></ h2 >
< nav class = "nav social uk-visible@m" >
< ul class = "flat" >
< a href = "https://pan.usj.cc" title = "GitHub" target = "_blank" >< i class = "ri-cloudy-2-line" ></ i ></ a >
< a href = "https://space.bilibili.com/525472039" title = "Twitter" target = "_blank" >< i class = "ri-bilibili-line" ></ i ></ a >
< a href = "https://github.com/imzql" title = "LinkedIn" target = "_blank" >< i class = "ri-github-fill" ></ i ></ a >
</ ul >
< div class = "yiyandes" > 风吹云散,云卷云舒</ div >
</ nav >
</ div >
< nav class = "nav" >
< ul class = "flat" >
< li class = "active" >< a href = "/" > 首页</ a ></ li >
< li class = "active" >< a href = "/about/" > 关于</ a ></ li >
< li class = "active" >< a href = "/ly/" > 留言</ a ></ li >
< li class = "active" >< a href = "/archives/" > 归档</ a ></ li >
< li class = "active" >< a href = "/links/" > 友链</ a ></ li >
< li class = "active" >< a href = "/circles/" > 友圈</ a ></ li >
</ ul >
</ nav >
</ div >
< div id = "pjax-container" >
< article style = "margin-bottom: 3.5em;" >
< h1 class = "post-title" itemprop = "name headline" > Hugo使用GitHub Action自动刷新多吉云CDN缓存</ h1 >
< div class = "meta" >
2024-09-16 18:28:23 +08:00
作者: 小赵同学 浏览: < span id = "busuanzi_value_page_uv" ></ span > 字数: 974 分类:
2024-09-16 18:19:30 +08:00
< a href = "%e6%95%99%e7%a8%8b" > 教程</ a >
</ div >
< div class = "post-content" id = "post-writing" itemprop = "articleBody" uk-scrollspy = "target: > hr,h2,p,pre; cls: uk-animation-slide-bottom-small; delay: 0" >
< p > 博客目前使用的方案是多吉云全站cdn缓存,使用git将hugo文件推送到github</ p >
< p > 大概一分钟GitHub Action自动部署完成,还需要去多吉云控制台手动刷新cdn缓存,长时间以来,感觉很不方便</ p >
< p > 这里特别感谢博友
< a
href = "/tiaozhuan/index.html?target=aHR0cHM6Ly9saWthaWppYW4uY29tLw%3d%3d"
target = "_blank"
>
2024-09-16 18:28:23 +08:00
永恒末匕</ a > 提供的方案</ p >
< p > 原方案地址:https://blog.cpen.top/posts/6f7759e0.html</ p >
2024-09-16 18:19:30 +08:00
< p > 这个方案虽然可以实现自动刷新的效果,但是有个弊端,也就是多吉云key令牌会直接暴露出来,只能把仓库设置为私有,不太灵活,今天下午花了点时间完善了一下,理论支持所有部署在GitHub的静态网站</ p >
< h2 id = "快速食用" > 快速食用</ h2 >
< p > 在你的项目的根目录,新建一个< code > RefreshCDN.py</ code > 的文件,代码如下</ p >
< div class = "highlight" >< pre tabindex = "0" style = "background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;" >< code class = "language-python" data-lang = "python" >< span style = "display:flex;" >< span >< span style = "color:#204a87;font-weight:bold" > from</ span > < span style = "color:#000" > hashlib</ span > < span style = "color:#204a87;font-weight:bold" > import</ span > < span style = "color:#000" > sha1</ span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#204a87;font-weight:bold" > import</ span > < span style = "color:#000" > hmac</ span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#204a87;font-weight:bold" > import</ span > < span style = "color:#000" > requests</ span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#204a87;font-weight:bold" > import</ span > < span style = "color:#000" > json</ span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#204a87;font-weight:bold" > import</ span > < span style = "color:#000" > urllib</ span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#204a87;font-weight:bold" > import</ span > < span style = "color:#000" > os</ span >
</ span ></ span >< span style = "display:flex;" >< span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#204a87;font-weight:bold" > def</ span > < span style = "color:#000" > dogecloud_api</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#000" > api_path</ span >< span style = "color:#000;font-weight:bold" > ,</ span > < span style = "color:#000" > data</ span >< span style = "color:#ce5c00;font-weight:bold" > =</ span >< span style = "color:#000;font-weight:bold" > {},</ span > < span style = "color:#000" > json_mode</ span >< span style = "color:#ce5c00;font-weight:bold" > =</ span >< span style = "color:#204a87;font-weight:bold" > False</ span >< span style = "color:#000;font-weight:bold" > ):</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#4e9a06" > """
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#4e9a06" > 调用多吉云API。
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#4e9a06" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#4e9a06" > :param api_path: 调用的 API 接口地址,包含 URL 请求参数 QueryString。
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#4e9a06" > :param data: POST 的数据,字典格式。
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#4e9a06" > :param json_mode: 数据 data 是否以 JSON 格式请求,默认为 false 则使用表单形式。
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#4e9a06" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#4e9a06" > :return dict: 返回的数据。
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#4e9a06" > """ </ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > access_key</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#000" > os</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > environ</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > get</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#4e9a06" > ' DOGECLOUD_ACCESS_KEY' </ span >< span style = "color:#000;font-weight:bold" > )</ span > < span style = "color:#8f5902;font-style:italic" > # 从环境变量获取 AccessKey</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > secret_key</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#000" > os</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > environ</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > get</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#4e9a06" > ' DOGECLOUD_SECRET_KEY' </ span >< span style = "color:#000;font-weight:bold" > )</ span > < span style = "color:#8f5902;font-style:italic" > # 从环境变量获取 SecretKey</ span >
</ span ></ span >< span style = "display:flex;" >< span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#204a87;font-weight:bold" > if</ span > < span style = "color:#204a87;font-weight:bold" > not</ span > < span style = "color:#000" > access_key</ span > < span style = "color:#204a87;font-weight:bold" > or</ span > < span style = "color:#204a87;font-weight:bold" > not</ span > < span style = "color:#000" > secret_key</ span >< span style = "color:#000;font-weight:bold" > :</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#204a87;font-weight:bold" > raise</ span > < span style = "color:#c00;font-weight:bold" > ValueError</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#4e9a06" > " Access Key or Secret Key is not set in environment variables." </ span >< span style = "color:#000;font-weight:bold" > )</ span >
</ span ></ span >< span style = "display:flex;" >< span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > body</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#4e9a06" > '' </ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > mime</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#4e9a06" > '' </ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#204a87;font-weight:bold" > if</ span > < span style = "color:#000" > json_mode</ span >< span style = "color:#000;font-weight:bold" > :</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > body</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#000" > json</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > dumps</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#000" > data</ span >< span style = "color:#000;font-weight:bold" > )</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > mime</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#4e9a06" > ' application/json' </ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#204a87;font-weight:bold" > else</ span >< span style = "color:#000;font-weight:bold" > :</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > body</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#000" > urllib</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > parse</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > urlencode</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#000" > data</ span >< span style = "color:#000;font-weight:bold" > )</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > mime</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#4e9a06" > ' application/x-www-form-urlencoded' </ span >
</ span ></ span >< span style = "display:flex;" >< span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > sign_str</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#000" > api_path</ span > < span style = "color:#ce5c00;font-weight:bold" > +</ span > < span style = "color:#4e9a06" > " </ span >< span style = "color:#4e9a06" > \n</ span >< span style = "color:#4e9a06" > " </ span > < span style = "color:#ce5c00;font-weight:bold" > +</ span > < span style = "color:#000" > body</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > signed_data</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#000" > hmac</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > new</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#000" > secret_key</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > encode</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#4e9a06" > ' utf-8' </ span >< span style = "color:#000;font-weight:bold" > ),</ span > < span style = "color:#000" > sign_str</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > encode</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#4e9a06" > ' utf-8' </ span >< span style = "color:#000;font-weight:bold" > ),</ span > < span style = "color:#000" > sha1</ span >< span style = "color:#000;font-weight:bold" > )</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > sign</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#000" > signed_data</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > digest</ span >< span style = "color:#000;font-weight:bold" > ()</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > hex</ span >< span style = "color:#000;font-weight:bold" > ()</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > authorization</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#4e9a06" > ' TOKEN ' </ span > < span style = "color:#ce5c00;font-weight:bold" > +</ span > < span style = "color:#000" > access_key</ span > < span style = "color:#ce5c00;font-weight:bold" > +</ span > < span style = "color:#4e9a06" > ' :' </ span > < span style = "color:#ce5c00;font-weight:bold" > +</ span > < span style = "color:#000" > sign</ span >
</ span ></ span >< span style = "display:flex;" >< span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000" > response</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#000" > requests</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > post</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#4e9a06" > ' https://api.dogecloud.com' </ span > < span style = "color:#ce5c00;font-weight:bold" > +</ span > < span style = "color:#000" > api_path</ span >< span style = "color:#000;font-weight:bold" > ,</ span > < span style = "color:#000" > data</ span >< span style = "color:#ce5c00;font-weight:bold" > =</ span >< span style = "color:#000" > body</ span >< span style = "color:#000;font-weight:bold" > ,</ span > < span style = "color:#000" > headers</ span >< span style = "color:#ce5c00;font-weight:bold" > =</ span >< span style = "color:#000;font-weight:bold" > {</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#4e9a06" > ' Authorization' </ span >< span style = "color:#000;font-weight:bold" > :</ span > < span style = "color:#000" > authorization</ span >< span style = "color:#000;font-weight:bold" > ,</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#4e9a06" > ' Content-Type' </ span >< span style = "color:#000;font-weight:bold" > :</ span > < span style = "color:#000" > mime</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#000;font-weight:bold" > })</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#204a87;font-weight:bold" > return</ span > < span style = "color:#000" > response</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > json</ span >< span style = "color:#000;font-weight:bold" > ()</ span >
</ span ></ span >< span style = "display:flex;" >< span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#8f5902;font-style:italic" > # 从环境变量中获取 URL 列表,使用逗号分隔</ span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#000" > url_list_env</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#000" > os</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > environ</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > get</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#4e9a06" > ' CDN_URL_LIST' </ span >< span style = "color:#000;font-weight:bold" > )</ span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#204a87;font-weight:bold" > if</ span > < span style = "color:#204a87;font-weight:bold" > not</ span > < span style = "color:#000" > url_list_env</ span >< span style = "color:#000;font-weight:bold" > :</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#204a87;font-weight:bold" > raise</ span > < span style = "color:#c00;font-weight:bold" > ValueError</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#4e9a06" > " CDN_URL_LIST is not set in environment variables." </ span >< span style = "color:#000;font-weight:bold" > )</ span >
</ span ></ span >< span style = "display:flex;" >< span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#000" > url_list</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#000" > url_list_env</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > split</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#4e9a06" > ' ,' </ span >< span style = "color:#000;font-weight:bold" > )</ span >
</ span ></ span >< span style = "display:flex;" >< span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#000" > api</ span > < span style = "color:#ce5c00;font-weight:bold" > =</ span > < span style = "color:#000" > dogecloud_api</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#4e9a06" > ' /cdn/refresh/add.json' </ span >< span style = "color:#000;font-weight:bold" > ,</ span > < span style = "color:#000;font-weight:bold" > {</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#4e9a06" > ' rtype' </ span >< span style = "color:#000;font-weight:bold" > :</ span > < span style = "color:#4e9a06" > ' path' </ span >< span style = "color:#000;font-weight:bold" > ,</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#4e9a06" > ' urls' </ span >< span style = "color:#000;font-weight:bold" > :</ span > < span style = "color:#000" > json</ span >< span style = "color:#ce5c00;font-weight:bold" > .</ span >< span style = "color:#000" > dumps</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#000" > url_list</ span >< span style = "color:#000;font-weight:bold" > )</ span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#000;font-weight:bold" > })</ span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#204a87;font-weight:bold" > if</ span > < span style = "color:#000" > api</ span >< span style = "color:#000;font-weight:bold" > [</ span >< span style = "color:#4e9a06" > ' code' </ span >< span style = "color:#000;font-weight:bold" > ]</ span > < span style = "color:#ce5c00;font-weight:bold" > ==</ span > < span style = "color:#0000cf;font-weight:bold" > 200</ span >< span style = "color:#000;font-weight:bold" > :</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#204a87" > print</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#000" > api</ span >< span style = "color:#000;font-weight:bold" > [</ span >< span style = "color:#4e9a06" > ' data' </ span >< span style = "color:#000;font-weight:bold" > ][</ span >< span style = "color:#4e9a06" > ' task_id' </ span >< span style = "color:#000;font-weight:bold" > ])</ span >
</ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#204a87;font-weight:bold" > else</ span >< span style = "color:#000;font-weight:bold" > :</ span >
</ span ></ span >< span style = "display:flex;" >< span > < span style = "color:#204a87" > print</ span >< span style = "color:#000;font-weight:bold" > (</ span >< span style = "color:#4e9a06" > " API failed: " </ span > < span style = "color:#ce5c00;font-weight:bold" > +</ span > < span style = "color:#000" > api</ span >< span style = "color:#000;font-weight:bold" > [</ span >< span style = "color:#4e9a06" > ' msg' </ span >< span style = "color:#000;font-weight:bold" > ])</ span >
</ span ></ span ></ code ></ pre ></ div >< p > 创建你的 GitHub Actions 脚本,在项目根目录创建 < code > .github/workflows</ code > 目录,如果有该目录请忽略</ p >
< p > 接下来在< code > .github/workflows</ code > 目录下新建 < code > RefreshCDN.yml</ code > 文件</ p >
< p > yml文件配置如下</ p >
< div class = "highlight" >< pre tabindex = "0" style = "background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;" >< code class = "language-yml" data-lang = "yml" >< span style = "display:flex;" >< span >< span style = "color:#204a87;font-weight:bold" > name</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > Refresh CDN</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" ></ span >< span style = "color:#204a87;font-weight:bold" > on</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > push</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > branches</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span > - < span style = "color:#000" > main</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" ></ span >< span style = "color:#204a87;font-weight:bold" > jobs</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > refresh-cdn</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > runs-on</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > ubuntu-latest</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > steps</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span > - < span style = "color:#204a87;font-weight:bold" > name</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > 检出代码</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > uses</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > actions/checkout@v2</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span > - < span style = "color:#204a87;font-weight:bold" > name</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > 安装 Python</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > uses</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > actions/setup-python@v2</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > with</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > python-version</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#4e9a06" > ' 3.x' </ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span > - < span style = "color:#204a87;font-weight:bold" > name</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > 安装依赖</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > run</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > pip install requests</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span > - < span style = "color:#204a87;font-weight:bold" > name</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > 等待源站部署</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > run</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > sleep 1m </ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#8f5902;font-style:italic" > # 这里用了个笨办法,等待 1 分钟后进行刷新</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span > - < span style = "color:#204a87;font-weight:bold" > name</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > 刷新 CDN</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > run</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > python RefreshCDN.py</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > env</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > DOGECLOUD_ACCESS_KEY</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > ${{ secrets.DOGECLOUD_ACCESS_KEY }}</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > DOGECLOUD_SECRET_KEY</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > ${{ secrets.DOGECLOUD_SECRET_KEY }}</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span >< span style = "display:flex;" >< span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#204a87;font-weight:bold" > CDN_URL_LIST</ span >< span style = "color:#000;font-weight:bold" > :</ span >< span style = "color:#f8f8f8;text-decoration:underline" > </ span >< span style = "color:#000" > ${{ secrets.CDN_URL_LIST }}</ span >< span style = "color:#f8f8f8;text-decoration:underline" >
</ span ></ span ></ span ></ code ></ pre ></ div >< p > 然后在你的GitHub项目仓库页面</ p >
< p > 依次进入 < code > Settings</ code > -> < code > Secrets and variables</ code > -> < code > Actions</ code > -> < code > New repository secret</ code ></ p >
< p > 创建三个密钥键值对,分别为</ p >
2024-09-16 18:28:23 +08:00
< p >< code > CDN_URL_LIST</ code > :值为 URL 列表,使用逗号分隔</ p >
2024-09-16 18:44:46 +08:00
< p >< code > https://usj.cc/,https://5b2.cn/</ code ></ p >
< p >< code > DOGECLOUD_ACCESS_KEY</ code > :填入你的 AccessKeys</ p >
2024-09-16 18:28:23 +08:00
< p >< code > DOGECLOUD_SECRET_KEY</ code > :填入你的 SecretKey</ p >
2024-09-16 18:19:30 +08:00
< p > 多吉云密钥获取请访问:https://console.dogecloud.com/user/keys</ p >
< p > 按照如上步骤,设置完毕,你的仓库得有如下三个字段</ p >
< p >
< img data-lazy-src = "/pics/hugo/dogeyun-auto-refresh-cdn/f2736183148b132aea6cb14908e8e86.png" alt = "f2736183148b132aea6cb14908e8e86" class = "lazyload" ></ p >
< p > 执行git提交,脚本就可以自动刷新多吉云缓存了</ p >
< p >
< img data-lazy-src = "/pics/hugo/dogeyun-auto-refresh-cdn/48dad6112a4e2110c95b04111084309.png" alt = "48dad6112a4e2110c95b04111084309" class = "lazyload" ></ p >
< p > 去多吉云控制台看看刷新预热,这样就是成功了</ p >
</ div >
< div class = "post-tags" style = "margin-top: -30px;" >
< nav class = "nav tags" >
< ul class = "flat" >
</ ul >
</ nav >
</ div >
</ article >
< hr class = "uk-divider-icon" >
< div id = "comments" class = "comments-area" >
< link href = "/css/Artalk.css" rel = "stylesheet" />
< div id = "Comments" uk-scrollspy = "target: div,span,img> ; cls: uk-animation-slide-bottom-small;" ></ div >
< script src = "/js/Artalk.js" ></ script >
< script >
if ( document . querySelector ( "#Comments" )) {
Artalk . init ({
el : '#Comments' ,
server : 'https://artalk.5b2.cn' ,
site : '优世界' ,
flatMode : true
})
}
</ script >
</ div >
< script async src = "/js/bsz.js" ></ script >
</ div >
< div class = "footer" >
< nav class = "nav" style = "clear: both;" >
© 2019 - 2024
< br >
< a href = "https://beian.miit.gov.cn/" target = "_blank" >< span style = "color:#999999;" > 鄂ICP备2022015735号-1</ span ></ a >
< br >
本站由< a href = "https://www.upyun.com/?utm_source=lianmeng&utm_medium=referral" target = "blank" title = "又拍云"
style = "display:inline-block;text-decoration:none;height:20px;line-height:20px;" >
< span style = "color: var(--contentColor);font-weight: 700;" > 又拍云CDN</ span >
</ a > 提供CDN加速服务
< br >
</ nav >
</ div >
</ div >
</ div >
< script src = "/js/iconfont.js" ></ script >
< script src = "/js/lightgallery.umd.min.js" ></ script >
< script src = "/js/uikit.min.js" ></ script >
< script src = "/js/EasyLazyload.min.js" ></ script >
< script src = "/js/view-image.min.js" ></ script >
< script src = "/js/Artalk.js" ></ script >
< script src = "/js/main.js" ></ script >
< script src = "/js/mypjax.js" ></ script >
< script src = "/js/nprogress.js" ></ script >
< script src = "/js/echarts.min.js" ></ script >
< script src = "/js/tiaozhuan.js" ></ script >
< script async src = "/js/bsz.js" ></ script >
</ body >
</ html >