我正在开发 2 个 github 操作工作流程:
- 训练模型并将其保存到 s3(每月)
- 从 s3 下载模型并将其用于预测(每日)
Using https://github.com/jakejarvis/s3-sync-action https://github.com/jakejarvis/s3-sync-action我能够完成第一个工作流程。我训练一个模型,然后将“模型”目录与 s3 上的存储桶同步。
我本来计划使用相同的操作来下载模型以用于预测,但看起来此操作是单向的,仅上传而不下载。
我通过创建工作流程并尝试与跑步者同步发现了困难的方法:
retreive-model-s3:
runs-on: ubuntu-latest
steps:
- name: checkout current repo
uses: actions/checkout@master
- name: make dir to sync with s3
run: mkdir models
- name: checkout s3 sync action
uses: jakejarvis/s3-sync-action@master
with:
args: --follow-symlinks
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_S3_ENDPOINT: ${{ secrets.AWS_S3_ENDPOINT }}
AWS_REGION: 'us-south' # optional: defaults to us-east-1
SOURCE_DIR: 'models' # optional: defaults to entire repository
- name: dir after
run: |
ls -l
ls -l models
- name: Upload model as artifact
uses: actions/upload-artifact@v2
with:
name: xgb-model
path: models/regression_model_full.rds
运行时,当我登录 UI 时,我可以看到该对象regression_model_full.rds
确实有,只是没下载。我仍然不确定这是否是预期的(操作“同步”的名称让我感到困惑)。
对于我们的 s3,我们必须使用参数AWS_S3_ENDPOINT
。我发现了另一个动作,AWS S3
here https://github.com/marketplace/actions/aws-s3-github-action但与我开始时的同步操作不同,没有添加 AWS_S3_ENDPOINT 的选项。看着the repo https://github.com/keithweaver/aws-s3-github-action除了 8 个月前他自述的更新之外,它也已经有两年了。
在工作流程中从 s3 下载的“规定”或传统方式是什么?
苏我和你有同样的问题。我试图从 S3 下载以更新 GitHub 中的目录文件夹。
我从操作中学到的是,如果您要更新存储库中的某些文件,则必须遵循正常方法,就像您在本地执行操作一样,例如)签出、进行更改、推送。
因此,对于您的特定工作流程,您必须使用以下命令在工作流程中检查您的存储库actions/checkout@master
在与特定目录同步后,我没有做的主要问题是将更改推回到存储库!这使我能够每天更新我的文件夹。
不管怎样,这是我的脚本,希望你觉得它有用。我正在使用您最后提到的 AWS S3 操作。
# This is a basic workflow to help you get started with Actions
name: Fetch data.
# Controls when the workflow will run
on:
schedule:
# Runs "at hour 6 past every day" (see https://crontab.guru)
- cron: '00 6 * * *'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: keithweaver/[email protected] /cdn-cgi/l/email-protection # Verifies the recursive flag
name: sync folder
with:
command: sync
source: ${{ secrets.S3_BUCKET }}
destination: ./data/
aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_REGION }}
flags: --delete
- name: Commit changes
run: |
git config --local user.email "[email protected] /cdn-cgi/l/email-protection"
git config --local user.name "GitHub Action"
git add .
git diff-index --quiet HEAD || git commit -m "{commit message}" -a
git push origin main:main
旁注:旗帜--delete
允许您通过删除 s3 文件夹中不再存在的任何文件来使当前文件夹与 s3 文件夹保持同步
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)