github action设置时区

hexo通过插件支持很多种部署方式,比如GitHub Page、腾讯云COS、阿里云OSS等等,我最后选择通过GitHub Actions实现自动部署。

但是在编写STM32 裸机编程指南系列时发现一个问题,GitHub Actions产生永久链接跟本地的不一致,这给文章间的引用造成了很大麻烦。

因为我配置hexo的永久链接为:permalink: posts/:hash/,而hexo在计算hash时是通过文件名和时间,所以应该是GitHub Actions系统时间与本地不同导致的。

在 GitHub Actions 中,可以通过设置环境变量来指定时区。

下面是一个示例,将时区设置为 Asia/Shanghai:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
name: Specifying Timezone

on: [push]

env:
TZ: Asia/Shanghai

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Show the timezone
run: |
echo "The timezone is $TZ"
date

在这个例子中,我们通过设置环境变量TZ来指定时区,并在后面的步骤中使用date命令显示当前的时间和时区。

请注意,如果要使用的时区不在标准的时区数据库中,你可能需要添加对应的时区数据库文件。

下面是一个示例,添加了自定义时区数据库文件 Asia/Shanghai:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
name: Adding Timezone Database

on: [push]

env:
TZ: Asia/Shanghai

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Check the current timezone database
run: |
ls /usr/share/zoneinfo
echo "---"
date
echo "---"

- name: Add the custom timezone database file
run: |
sudo mkdir -p /usr/share/zoneinfo/Asia
sudo cp /tmp/Asia/Shanghai /usr/share/zoneinfo/Asia/
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

- name: Show the timezone
run: |
echo "The timezone is $TZ"
date

在这个例子中,我们首先使用ls /usr/share/zoneinfo命令检查当前的时区数据库,然后使用sudo mkdir、sudo cp 和 sudo ln -sf命令来添加自定义的时区数据库文件。最后,我们使用date命令显示当前的时间和时区。

请注意,该示例假设自定义的时区数据库文件位于/tmp/Asia/Shanghai路径。请根据实际情况调整该路径。