发布时间: 更新时间:

本github actions方法已于2022-07-15完全被封,请去仓库看文档

freenom自动续期

  1. Fork luolongfei大佬的freenom库,再添加以下workflow:

    “点击展开完整代码”

    # 1、Fork 本仓库
    # 2、在你 Fork 的本仓库下的 Settings > Secrets 画面追加以下几个 secret 变量:
    # FREENOM_USERNAME、FREENOM_PASSWORD、MULTIPLE_ACCOUNTS、MAIL_USERNAME、MAIL_PASSWORD、TO、MAIL_ENABLE、TELEGRAM_CHAT_ID、
    # TELEGRAM_BOT_TOKEN、TELEGRAM_BOT_ENABLE、NOTICE_FREQ
    # (注:此处列出了所有可用变量,你只用追加你需要用到的变量,变量的具体含义请参考本项目的 .env 文件中的说明,一般情况下,.env 文件中的某些
    #  项存在默认值,如果默认值满足你的需求则可不追加到 Secrets,它们会保持默认)
    #
    # 下面定时任务中的时间是世界时间,每天 10:00(本示例已改为2:00) 执行,由于创建虚拟环境会消耗时间,故任务会延迟 30 秒左右执行
    #
    # @Author of yml configuration file: RouRouX <https://github.com/RouRouX> & mybsdc <mybsdc@gmail.com>
    #
    ######  end 说明  ######
    
    name: Run it on action
    
    on:
      push:
        branches:
          - main
      schedule:
        - cron: 00 02 * * *
      workflow_dispatch:
    jobs:
      run-it:
        runs-on: ubuntu-18.04
        name: Run it on action
        steps:
          - name: Checkout master
            uses: actions/checkout@v2
          - name: Setup PHP
            uses: shivammathur/setup-php@v2
            with:
              php-version: '7.2'
          - name: Setting
            run: |
              echo 'Renew freenom domain name automatically.'
              echo '@Author of yml configuration file: RouRouX <https://github.com/RouRouX> & mybsdc <mybsdc@gmail.com>'
              echo '@Url: https://github.com/luolongfei/freenom'
              cp .env.example .env
              if [[ ('${{ secrets.FREENOM_USERNAME }}' == '' || '${{ secrets.FREENOM_PASSWORD }}' == '') && '${{ secrets.MULTIPLE_ACCOUNTS }}' == '' ]]; then echo '你在 Github 的当前项目的 Settings > Secrets 画面没有设置任何与账户信息相关的 secret 值,无法正常运行,请添加新的 secret 值,设置 FREENOM_USERNAME 与 FREENOM_PASSWORD,或者设置 MULTIPLE_ACCOUNTS,以及 .env 文件中其它必要项,各项的具体含义与格式参考本项目 .env 文件中的说明。'; fi
              if [ '${{ secrets.FREENOM_USERNAME }}' != '' ]; then sed -i "s/^FREENOM_USERNAME=.*$/FREENOM_USERNAME='${{ secrets.FREENOM_USERNAME }}'/" .env; fi
              if [ '${{ secrets.FREENOM_PASSWORD }}' != '' ]; then sed -i "s/^FREENOM_PASSWORD=.*$/FREENOM_PASSWORD='${{ secrets.FREENOM_PASSWORD }}'/" .env; fi
              if [ '${{ secrets.MULTIPLE_ACCOUNTS }}' != '' ]; then sed -i "s/^MULTIPLE_ACCOUNTS=.*$/MULTIPLE_ACCOUNTS='${{ secrets.MULTIPLE_ACCOUNTS }}'/" .env; fi
              if [ '${{ secrets.MAIL_USERNAME }}' != '' ]; then sed -i "s/^MAIL_USERNAME=.*$/MAIL_USERNAME='${{ secrets.MAIL_USERNAME }}'/" .env; fi
              if [ '${{ secrets.MAIL_PASSWORD }}' != '' ]; then sed -i "s/^MAIL_PASSWORD=.*$/MAIL_PASSWORD='${{ secrets.MAIL_PASSWORD }}'/" .env; fi
              if [ '${{ secrets.TO }}' != '' ]; then sed -i "s/^TO=.*$/TO='${{ secrets.TO }}'/" .env; fi
              if [ '${{ secrets.MAIL_ENABLE }}' != '' ]; then sed -i "s/^MAIL_ENABLE=.*$/MAIL_ENABLE='${{ secrets.MAIL_ENABLE }}'/" .env; fi
              if [ '${{ secrets.TELEGRAM_CHAT_ID }}' != '' ]; then sed -i "s/^TELEGRAM_CHAT_ID=.*$/TELEGRAM_CHAT_ID='${{ secrets.TELEGRAM_CHAT_ID }}'/" .env; fi
              if [ '${{ secrets.TELEGRAM_BOT_TOKEN }}' != '' ]; then sed -i "s/^TELEGRAM_BOT_TOKEN=.*$/TELEGRAM_BOT_TOKEN='${{ secrets.TELEGRAM_BOT_TOKEN }}'/" .env; fi
              if [ '${{ secrets.TELEGRAM_BOT_ENABLE }}' != '' ]; then sed -i "s/^TELEGRAM_BOT_ENABLE=.*$/TELEGRAM_BOT_ENABLE='${{ secrets.TELEGRAM_BOT_ENABLE }}'/" .env; fi
              if [ '${{ secrets.NOTICE_FREQ }}' != '' ]; then sed -i "s/^NOTICE_FREQ=.*$/NOTICE_FREQ='${{ secrets.NOTICE_FREQ }}'/" .env; fi
              sed -i "s/^ON_GITHUB_ACTIONS=.*$/ON_GITHUB_ACTIONS=true/" .env
          - name: Run
            run: |
              php run
    
    # 以下为保活所需step
          - name: curl
            id: enable_workflow
            env:
              REST_TOKEN: ${{ secrets.REST_TOKEN }}
              API_ADDRESS: ${{ secrets.API_ADDRESS }}
            run: |
              echo "Enable Workflow Start..."
              curl -X PUT -H "Authorization: token $REST_TOKEN" "$API_ADDRESS"
              echo "Finished"          
    

  2. 在你 Fork 的本仓库下的 Settings -> Secrets 页面追加以下几个secret秘密环境变量

    变量名含义默认值是否必须备注
    FREENOM_USERNAMEfreenom 账户-只支持邮箱账户,不支持也不打算支持第三方社交账户登录
    FREENOM_PASSWORDfreenom 密码-某些特殊字符可能需要转义,在Github actions环境,请在除字母数字以外的字符前加上“\”,否则可能无法正确读取密码,此举是防止某些字符在shell命令行被解析,举个例子,比如我密码是fei.,:!~@#$%^&*?233-_abcd^$$,那么写到秘密变量时就应写为fei\.\,\:\!\~\@\#\$\%\^\&\*\?233\-\_abcd\^\$\$。而在普通VPS环境,则只用在密码中的“#”或单双引号前加“\”,请参考.env.example文件内的注释,应该没人会设置那么变态的密码吧
    MULTIPLE_ACCOUNTS多账户支持-多个账户和密码的格式必须是“<账户1>@<密码1>|<账户2>@<密码2>|<账户3>@<密码3>”,如果设置了多账户,上面的FREENOM_USERNAMEFREENOM_PASSWORD可不设置
    MAIL_USERNAME机器人邮箱账户-支持GmailQQ邮箱以及163邮箱,尽可能使用163邮箱或者QQ邮箱,而非之前推荐的Gmail。因为谷歌的安全机制,每次在新设备登录 Gmail 都会先被限制,需要手动解除限制才行,而Github Actions每次创建的虚拟环境都会分配一个新的设备IP,相当于每次都是从新设备登录Gmail,而我们不可能每次都去手动为Gmail解除登录限制,所以这种机制会导致无法发出通知邮件。具体的配置方法参考「 配置发信邮箱
    MAIL_PASSWORD机器人邮箱密码-Gmail填密码,QQ邮箱163邮箱填授权码
    TO接收通知的邮箱-你自己最常用的邮箱,推荐使用QQ邮箱,用来接收机器人邮箱发出的域名相关邮件
    MAIL_ENABLE是否启用邮件推送功能truetrue:启用
    false:不启用
    默认启用,如果设为false,不启用邮件推送功能,则上面的MAIL_USERNAMEMAIL_PASSWORDTO变量变为非必须,可不设置
    TELEGRAM_CHAT_ID你的chat_id-通过发送/start@userinfobot可以获取自己的id
    TELEGRAM_BOT_TOKEN你的Telegram bottoken-
    TELEGRAM_BOT_ENABLE是否启用Telegram Bot推送功能falsetrue:启用
    false:不启用
    默认不启用,如果设为true,则必须设置上面的TELEGRAM_CHAT_IDTELEGRAM_BOT_TOKEN变量
    NOTICE_FREQ通知频率10:仅当有续期操作的时候
    1:每次执行
    REST_TOKEN如后文所示-保活所需
    API_ADDRESS如后文所示-保活所需

(注:你只用关注上面表格中的必须项,非必须项可不设置,将保持默认值。更多相关变量的含义、格式以及默认值,请参考本项目的.env.example文件内的注释)

  1. 启用 Actions ,完成。

保活

  1. Fork zhzhzhy/Workflow-Keep-Alive库

  2. 创建 sercets :

    变量名备注
    REST_TOKEN个人访问令牌(Personal access tokens)个人资料照片->设置->Developer settings
    API_ADDRESShttps://api.github.com/repos/{owner}/{target-repo}/actions/workflows/enable_workflow/enable修改{owner}/{target-repo}
  3. 运行 github action。

  4. 相互唤醒,再次在目标 repo 的工作流程中执行上述步骤,并添加所需 step(已在代码中注释)。

github workflow 语法文档

修改定时任务 —— Cron示例

Licensed under CC BY-NC-SA 4.0
最后更新于 2022-07-25