通過 Github Action 實現定時推送天氣預報( 二 )


定時觸發name: "天氣預報"on:push:schedule:# 需要減 8 個小時- cron: "0 23 * * *"這里比較好理解,name 是名稱,on 是觸發的時機,push 是我們提交代碼到 Github 時觸發,schedule 是定時觸發 , 需要注意的時候,定時觸發的時間需要減掉 8 個小時,其遵循國際標準時間而不是北京時間 。
運行流程runs-on: ubuntu-lateststeps:- name: "切換代碼"uses: actions/checkout@v3進入到 jobs 運行流程中,runs-on 指定運行環境是最新的 Ubuntu 即可,actions/checkout@v3 用作從代碼倉庫獲取代碼 。
獲取時間- name: "獲取時間"run: echo "WEATHER_REPORT_DATE=$(TZ=':Asia/Shanghai' date '+%Y-%m-%d %T')" >> $GITHUB_ENV直接通過 Linux 命令獲取當前時間 , 然后轉換成北京時間,這個時間主要是用于后續寫入到郵件的標題當中 。
在這里,通過 echo "{environment_variable_name}={value}" >> $GITHUB_ENV 的方式寫入環境變量 , 在后續的步驟中都可以訪問到這個環境變量 。
執行腳本- uses: actions/setup-python@v4with:python-version: "3.10"- run: pip install -r requirements.txt- name: "獲取天氣結果"run: 'echo "$(python open_api/weather.py 廣州 桂林)" > output.txt'這里有兩個步驟 , 一個是指定 Python 的運行環境并且安裝好相關的依賴,第二個是執行 Python 的腳本獲取結果 。
在這里 , 為了方便將腳本的執行結果給到后續的步驟,選擇將執行結果寫入到一個文件當中 。當然,選擇怎樣的方式主要看自己 。
發送郵件- name: "發送郵件"uses: dawidd6/action-send-mail@v3with:server_address: smtp.qq.comserver_port: 465username: ${{ secrets.SENDER_USER }}password: ${{ secrets.SENDER_PASSWORD }}subject: 天氣預報 - ${{env.WEATHER_REPORT_DATE}}from: GitHub Actionsto: fatedeity@qq.combody: file://output.txt按照阮一峰的腳本,使用 Send email · Actions 發送郵件,和其不同的就是相關的配置 。
當然 , 也可以通過將發送郵件直接寫入到 Python 腳本當中,它們各有自己的優勢 。
使用 GIthub Action 發送郵件更易懂,只需要填寫配置即可 , 也可以將腳本和發送郵件解耦 。
使用 Python 發送郵件可以省下 Github Action 的步驟,直接通過腳本一步到位 , 耦合就比較高 。
總結通過這一次的嘗試 , 使用 Github Action 實現了自動化及定時,也是為以后實現自己的自動化做鋪墊 。本篇文章的源碼可以通過 GitHub - fatedeity/weather-action 訪問 。
生命在于折騰 , 看似無用的一次嘗試,希望能給自己帶來美好的未來 。

推薦閱讀