# 项目介绍
本项目主要用于开源欧拉发布包的信息同步，发布的流程是产品将发布的镜像和ReleaseNotes发布到指定的OBS Bucket
我们通过FunctionGraph自动同步到欧拉Website指定的目录下。大体流程如下:

1. 拉取对应OBS Bucket下的所有文件，并找到所有后缀为.md 或.markdown的release文件。
2. 根据release的文件名，找到通文件夹下同名但是后缀为.image/img/iso的镜像文件。根据https://{bucket}.{host}:443/{image_key}的规则组装image外部访问链接。
3. 下载release文件到本地临时目录
4. 根据配置的Gitee目录，获取当前website下面所有已有的release markdown文件， 通过比较release文件是否存在以及`lastModified`属性是否相同确定是否需要更新release文件。
5. 为每个需要更新的release文件添加hugo的front matter到文件首部，格式如下:
```
    +++
    title = "file name with out extension"
    lastModified = "lastModified time read from OBS file"         //组件用来比较文件是否需要更新
    imageUrl = "image url built from rule"                        //页面用来生成image的下载链接
    remark = "THIS METADATA IS AUTOGENERATED FOR TRACKING, PLEASE DON'T UPDATE IT MANUALLY."
    versions = ["the version parsed from file name"]              //hugo的versions taxonomies
    +++
```
6. 调用Gitee的API接口创建或者更新文件



# 项目配置
所有的配置项都在本目录的refresher文件中，主要配置如下:
1. OBS_AK/OBS_SK: 用于配置OBS访问的AK/SK，因为我们需要设置bucket为公共读，所以AK/SK配置为空即可。
2. OBS_ENDPOINT: OBS Bucket的访问地址，这个地址跟我们的bucket所在的region有关系，目前默认是:obs.cn-south-1.myhuaweicloud.com
3. OPENEULER_BUCKET: 配置的Bucket名称。
4. OPENEULER_FOLDER：配置的文件夹名称，即在Bucket下的目录，可配置多级。
5. PROJECT_OWNER: Gitee的项目Owner，类似于组织或者个人账号名。
6. PROJECT: Gitee项目名称。
7. RELEASE_FOLDER: 我们要存放release markdown文件的具体目录，是相对于根目录来的。
8. BRANCH: 操作的项目版本。
9. COMMITTER_NAME: 提交更新用的账号名
10. COMMITTER_EMAIL: 提交更新用的账号邮箱
11. GITEE_TOKEN: 操作Gitee仓库的Token,目前代码中配置为空，需要在FunctionGraph中使用环境变量来配置。

# FunctionGraph配置
1. FunctionGraph需要跟OBS在同一个Region才支持配置触发器，他本身支持上传和使用代码压缩包(目前仅支持zip格式压缩包)，所以需要先zip压缩，再上传
```shell
apt-get install zip
cd <进入根目录，即本文件所在的目录>
zip -f openeuler.zip *
```
2. 需要在新增的函数环境变量中配置`GITEE_TOKEN`。
3. 函数主入口需要配置: `refresher.handling`



# 使用到的Python依赖
1. **requests**: 主要用于Gitee的项目库操作，华为云的FunctionGraph的python环境默认已经安装好requests包，不用单独安装。
2. **obs_client**: 主要用于OBS Bucket的操作，由于该依赖项目不支持Pypi安装，我们直接引用了项目的代码，项目地址[huaweicloud-sdk-python-obs](https://github.com/huaweicloud/huaweicloud-sdk-python-obs)， 我们使用的版本是COMMIT ID: baf669c64306924b7e31a69b962de74116e61e41
