我正在嘗試撰寫一個可以檢測已更改檔案的bash腳本。gitlab pipeline有一次,我檢索根專案中的檔案夾串列,檢查該檔案夾中的最新提交中是否有檔案。如果為真,我將它們上傳到 s3 存盤桶中。
這是我的管道代碼:
stages:
- deploy
file-distributions:
image: python:latest
stage: deploy
before_script:
- pip install awscli
script:
- >
FILES_IN_FOLDER=$(ls -ad */)
TO_BE_UPLOADED=()
CHANGED_FILES=()
for file in $(git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $CI_COMMIT_SHA); do
CHANGED_FILES =("$file")
done
for folder in $FILES_IN_FOLDER; do
for file in $CHANGED_FILES; do
if [[ "$file" == *"$folder"* ]]; then
TO_BE_UPLOADED =("$file")
fi
done
done
echo $TO_BE_UPLOADED
if [ ${#TO_BE_UPLOADED[@]} -eq 0 ]; then
echo "No files to upload"
exit 0
else
aws s3 sync ./ s3://$S3_BUCKET/ --recursive --exclude "*" --include '"$(echo ${TO_BE_UPLOADED// /,})"'
fi
當腳本運行到管道中時,我收到了這個錯誤:
/bin/bash: eval: line 133: 意外標記“then”附近的語法錯誤
我哪里錯了?
uj5u.com熱心網友回復:
if 和 [ 之間必須有一個空格,像這樣:This
if [[ "$file" == *"$folder"* ]]; then
必須是
if [ "$file" == *"$folder"* ]; then
uj5u.com熱心網友回復:
我不知道這是否是一個選項,但 GitLab 還提供了 Artifacts 的內置功能,可以在管道期間自動上傳更改/創建的檔案。
工件也可以配置為上傳到 S3。雖然這是一個實體范圍的配置,用于將它們存盤在安全的地方,但您也可以使用它從那里檢索它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410611.html
標籤:
