Ich versuche, zwei verschiedene Ordner zu synchronisieren, um Ziele im selben s3-Bucket zu trennen, aber in Jenkins wird immer wieder der folgende Fehler angezeigt:

Der vom Benutzer angegebene Pfadordner2 / existiert nicht. Build-Schritt 'Shell ausführen' markiert Build als Fehler

Das Seltsame ist, dass der Ordner folder2 existiert. Mein Jenkins-Shell-Befehl sieht folgendermaßen aus:

#!/usr/bin/env bash
set -ex

# set some env vars

docker build --build-arg APP_ENV --build-arg DEPLOY_ROOT=${ACTUAL_COMMIT_HASH} -t docker-thing .
docker run --rm \
--env S3_BUCKET \
--env AWS_ACCESS_KEY_ID \
--env AWS_SECRET_ACCESS_KEY \
--env AWS_DEFAULT_REGION \
docker-thing \

# sync folder 1
aws s3 sync folder1/ s3://${S3_BUCKET}/

# sync folder 2
aws s3 sync folder2/ s3://${S3_BUCKET}/${ACTUAL_COMMIT_HASH}/

Ordner 1 synchronisiert kein Problem, aber der zweite Ordner sagt nicht, dass er nicht existiert, obwohl er tatsächlich existiert.

Wenn ich die Reihenfolge ändern würde, in der ich diese synchronisiere, erhalte ich die gleichen Ergebnisse. Ordner 2 würde synchronisiert und Ordner 1 nicht.

Vermisse ich etwas?

0
j_quelly 27 Aug. 2020 im 17:34

2 Antworten

Beste Antwort

Die Lösung für mich war, Docker zweimal auszuführen.

docker run --rm \
--env S3_BUCKET \
--env AWS_ACCESS_KEY_ID \
--env AWS_SECRET_ACCESS_KEY \
--env AWS_DEFAULT_REGION \
docker-thing \

# sync folder 1
aws s3 sync folder1/ s3://${S3_BUCKET}/

docker run --rm \
--env S3_BUCKET \
--env AWS_ACCESS_KEY_ID \
--env AWS_SECRET_ACCESS_KEY \
--env AWS_DEFAULT_REGION \
docker-thing \

# sync folder 2
aws s3 sync folder2/ s3://${S3_BUCKET}/${ACTUAL_COMMIT_HASH}/
0
j_quelly 10 Sept. 2020 im 00:28

Der Backslash sollte aus dieser Zeile entfernt werden:

docker-thing \
0
John Rotenstein 28 Aug. 2020 im 01:44