准备工作#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| # 更新软件源
$ apt update && apt upgrade -y
# 安装依赖
$ apt install -y curl zip git
# 配置时区
$ timedatectl set-timezone Asia/Taipei && date
# 修改主机名
$ hostname eraServer0xff # 即时生效
$ echo "eraServer0xff" > /etc/hostname # 永久生效 (某些 VPS 可能不允许修改 重启后会复原)
# 查看架构
$ arch
x86_64 # i386
|
GitLab Runner#
安装 GitLab Runner#
手动安装:
1
2
3
4
| $ curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386
$ chmod +x /usr/local/bin/gitlab-runner
$ useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
$ gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
|
通过软件包安装:
1
2
| $ curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | bash
$ apt-get install gitlab-runner -y
|
注册 GitLab Runner#
访问 gitgud.io 项目组 获取 Token。
1
2
3
4
5
6
7
8
9
| $ gitlab-runner register \
--url https://gitgud.io/ \
--registration-token "TOKEN" \
--executor "shell" \
--description "Era Deployment Runner n代目" \
--maintenance-note "Whatever" \
--tag-list "CDN,deploy" \
--run-untagged="true" \
--access-level="ref_protected"
|
启动 GitLab Runner#
1
| $ gitlab-runner stop && gitlab-runner start
|
其他问题#
如果 Pipeline 在 Preparing environment
这一步报错:
ERROR: Job failed: prepare environment: exit status 1. Check https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading for more information
尝试修复:
1
2
3
4
| $ vim /home/gitlab-runner/.bash_logout # 注释掉以下内容
#if [ "$SHLVL" = 1 ]; then
# [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
#fi
|
或者直接 rm /home/gitlab-runner/.bash_logout
删掉该文件。
此方法来自 gitlab-runner issue #26605。
OneDriveUploader#
安装 OneDriveUploader#
1
2
| $ curl -L --output /usr/local/bin/onedrive-uploader https://raw.githubusercontent.com/MoeClub/OneList/master/OneDriveUploader/i386/linux/OneDriveUploader
$ chmod +x /usr/local/bin/onedrive-uploader
|
配置 OneDriveUploader#
访问 这个链接 登录用来做网盘的微软帐号,拿到形如 http://loaclhost***
的响应地址。
1
2
3
4
5
6
| $ su - gitlab-runner
$ onedrive-uploader -ms -a "http://loaclhost***"
$ mv ~/auth.json ~/onedrive_auth.json
$ chmod 600 ~/onedrive_auth.json
$ su -
$ ln -s /home/gitlab-runner/onedrive_auth.json /root/onedrive_auth.json
|
使用 OneDriveUploader#
1
| $ onedrive-uploader -c "~/onedrive_auth.json" -s "test_file.zip"
|
详细使用方法见 说明文档。
Cloudflare R2#
众所周知,CF 的 R2 兼容 Amazon S3 API。
绑定和代码调用略。
服务器使用 AWS CLI 进行上传。
安装 AWS CLI#
1
2
3
| $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ ./aws/install
|
配置 AWS CLI#
1
2
3
4
5
| $ aws configure
AWS Access Key ID [None]: <access_key_id>
AWS Secret Access Key [None]: <access_key_secret>
Default region name [None]: auto
Default output format [None]: json
|
使用 AWS CLI#
列出对象:
1
2
| $ aws s3api list-buckets --endpoint-url https://<accountid>.r2.cloudflarestorage.com
$ aws s3api list-objects-v2 --endpoint-url https://<accountid>.r2.cloudflarestorage.com --bucket sdk-example
|
注册临时资源:
1
| $ aws s3 presign --endpoint-url https://<accountid>.r2.cloudflarestorage.com s3://sdk-example/ferriswasm.png --expires-in 3600
|
上传文件:
1
| $ aws s3api put-object --key "filename" --body "filename.zip" --endpoint-url https://<accountid>.r2.cloudflarestorage.com --bucket sdk-example
|
版本更新 API 配套脚本#
详见 说明文档。
配置脚本#
1
2
3
4
5
| $ su - gitlab-runner
$ git clone https://github.com/1ackbfun/era-info-api.git -b script ~/era_games_data
$ chmod +x ~/era_games_data/update
$ echo "TOKEN" > ~/era_games_data/ERA_API_TOKEN
$ chmod 600 ~/era_games_data/ERA_API_TOKEN
|
使用脚本#
1
| $ ~/era_games_data/update
|
更新脚本#
1
| $ rm update && git pull && chmod +x update
|