model name change' #11
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Model Upload with Versioning and Cleanup | |
on: | |
push: | |
paths: | |
- "models/**" # Trigger on changes in the 'models' directory | |
- "model_versions.json" # Trigger on changes in the version file | |
jobs: | |
upload_model: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Set up AWS CLI | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Compare model versions | |
id: compare_versions | |
run: | | |
# Read the current and previous model versions | |
CURRENT_VERSIONS=$(cat model_versions.json) | |
S3_BUCKET="${{ secrets.S3_BUCKET_NAME }}" | |
CHANGED_MODELS="" | |
for MODEL in $(jq -r 'keys[]' <<< "$CURRENT_VERSIONS"); do | |
CURRENT_VERSION=$(jq -r --arg model "$MODEL" '.[$model]' <<< "$CURRENT_VERSIONS") | |
S3_FILE="s3://$S3_BUCKET/${MODEL}-${CURRENT_VERSION}" | |
# Check if the model with the current version already exists in S3 | |
if ! aws s3 ls "$S3_FILE" >/dev/null 2>&1; then | |
echo "New or updated model detected: $MODEL (version $CURRENT_VERSION)" | |
CHANGED_MODELS="$CHANGED_MODELS $MODEL" | |
fi | |
done | |
echo "::set-output name=changed_models::$CHANGED_MODELS" | |
- name: Upload updated models | |
if: steps.compare_versions.outputs.changed_models != '' | |
run: | | |
CHANGED_MODELS="${{ steps.compare_versions.outputs.changed_models }}" | |
CURRENT_VERSIONS=$(cat model_versions.json) | |
S3_BUCKET="${{ secrets.S3_BUCKET_NAME }}" | |
KMS_KEY_ID="${{ secrets.KMS_KEY_ID }}" | |
for MODEL in $CHANGED_MODELS; do | |
CURRENT_VERSION=$(jq -r --arg model "$MODEL" '.[$model]' <<< "$CURRENT_VERSIONS") | |
MODEL_PATH="models/$MODEL" | |
S3_FILE="s3://$S3_BUCKET/${MODEL}-${CURRENT_VERSION}" | |
echo "Uploading $MODEL (version $CURRENT_VERSION) to $S3_FILE" | |
# Upload to S3 with SSE-KMS | |
aws s3 cp "$MODEL_PATH" "$S3_FILE" --sse aws:kms --sse-kms-key-id "$KMS_KEY_ID" | |
# Check if upload was successful, then delete the file from the repo | |
if [ $? -eq 0 ]; then | |
echo "Model uploaded successfully, deleting $MODEL from the repository." | |
rm "$MODEL_PATH" | |
else | |
echo "Model upload failed for $MODEL." | |
fi | |
done | |
- name: Commit model deletions | |
if: steps.compare_versions.outputs.changed_models != '' | |
run: | | |
git config --global user.name "github-actions" | |
git config --global user.email "[email protected]" | |
# Stage deleted files and commit the changes | |
git add -u | |
git commit -m "Delete updated models from repo after S3 upload" | |
git push |