-
Notifications
You must be signed in to change notification settings - Fork 8
129 lines (113 loc) · 4.15 KB
/
alist-sync.yaml
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
name: Alist Sync
run-name: "action-${{github.actor}}-${{github.run_id}}-${{github.run_number}}"
on:
workflow_dispatch:
inputs:
reload_storage:
description: 删除现有存储库,并从配置文件或远程配置中重新创建存储器
type: boolean
required: false
default: false
debug:
description: 开启调试模式
type: boolean
required: false
default: false
check_only:
description: 仅检查同步动作,不执行具体操作
type: boolean
required: false
default: false
env:
_ALIST_SYNC_NAME: "${{github.run-name}}"
_ALIST_SYNC_DEBUG: ${{ github.event.inputs.debug }}
_ALIST_ADMIN_PASSWORD: ${{ secrets.ALIST_ADMIN_PASSWORD }}
jobs:
run:
name: "sync-actions"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python v4
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Load Cache
id: alist-data-cache
uses: actions/cache@v4
with:
key: ${{ runner.name }}-alist-sync-data
path: |
./.alist-sync-cache/*.db
./.alist-sync-cache/*.json
./.alist-sync-cache/*.shelve
./alist/data
- name: Install and Init Alist Server
env:
_ALIST_ADMIN_PASSWORD: ${{ secrets.ALIST_ADMIN_PASSWORD }}
run: |
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
bash -ex bootstrap.sh install
# init-alist 总是会重置管理员密码为环境变量。
bash -x bootstrap.sh alist-init
- name: Create Storage for Alist if load cache failed
if: github.event.inputs.reload_storage == 'true' || steps.alist-data-cache.outputs.cache-hit != 'true'
env:
_ALIST_ADMIN_PASSWORD: ${{ secrets.ALIST_ADMIN_PASSWORD }}
_ALIST_BACKUP: ${{secrets.ALIST_BACKUP}}
_ALIST_BACKUP_URL: ${{secrets.ALIST_BACKUP_URL}}
_ALIST_BACKUP_USERNAME: ${{secrets.ALIST_BACKUP_USERNAME}}
_ALIST_BACKUP_PASSWORD: ${{secrets.ALIST_BACKUP_PASSWORD}}
_RELOAD_STORAGE: ${{ github.event.inputs.reload_storage }}
run: |
echo RUNNER = ${_ALIST_SYNC_NAME}
# 这将会导入全部的内容包括:设置,元数据,用户,存储器。
echo $(pwd)
cat > alist-backup-config.json << EOF
${{ secrets.ALIST_BACKUP_CONFIG }}
EOF
python3 tools/create_storage.py
- name: Create Tunnel for Cloudflare
run: |
echo RUNNER = ${_ALIST_SYNC_NAME}
test ! -n "${{secrets.CLOUDFLARE_TUNNEL_TOKEN}}" && {
echo "CLOUDFLARE_TUNNEL_TOKEN is not set. Skip Cloudflare Tunnel Installation."
exit 0
}
echo "Installing Cloudflare Tunnel ..."
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb &&
sudo dpkg -i cloudflared.deb &&
sudo cloudflared service install ${{ secrets.CLOUDFLARE_TUNNEL_TOKEN }}
echo "CLOUDFLARE_INSTALLED=true" >> "$GITHUB_ENV"
echo "Cloudflare Tunnel Installed."
- name: RUN Alist Sync
env:
CHECK_ONLY: ${{ github.event.inputs.check_only }}
run: |
echo RUNNER = ${_ALIST_SYNC_NAME}
cat > config.yaml << EOF
${{ secrets.SYNC_CONFIG }}
EOF
set -ex
# export TERM=dumb
sudo mkdir -m 777 -p /mnt/.alist-sync-cache
export FORCE_COLOR=true
export COLUMNS=160
./bootstrap.sh main test-config
if [ "${CHECK_ONLY}" == "true" ]; then
echo "Check Only"
./bootstrap.sh main check
else
echo "Sync"
./bootstrap.sh main sync
fi
- name: Debugger
if: ${{ github.event.inputs.debug == 'true' && failure() }}
uses: csexton/debugger-action@master
- name: Upload Logs
if: always()
uses: actions/upload-artifact@v4
with:
name: logs
path: logs/*