Aktualizacja pomogła mi znaleźć rozwiązanie. Dzięki! Jest czystszy niż odpowiedź zaproponowana przez hussfelt.
Korzystanie awscli
Ponieważ używając polecenia notowanej wymagane rozeznanie wytłumaczę jak musiałem zmienić mój .travis.yml
dla wszelkich innych, którzy ten post.
before_deploy: pip install --user awscli
Najpierw zainstaluj awscli
, aby włączyć synchronizację z zasobnikiem S3. Aby działać w architekturze opartej na kontenerach Travis, nie możemy użyć sudo
, więc zainstaluj go w katalogu domowym pod numerem --user
. W systemie Linux, który jest domyślnym OS na Travisa, binarne zainstalowane opcja ta znajduje się w ~/.local/bin/
-
deploy:
provider: script
Następnie użyj dostawcy script
uruchomienia polecenia niestandardowego jako metodę rozmieszczania.
script: ~/.local/bin/aws s3 sync dist s3://example.com --region=eu-central-1 --delete
Ta linia jest po przesłaniu plików. Numer aws s3 sync
jest używany do synchronizowania plików między lokalnym komputerem a zasobnikami. Pełna dokumentacja jest dostępna pod numerem here.
W moim przykładzie dist
to folder kompilacji, który chcemy przesłać do S3. Twój system kompilujący może nazwać go build
lub coś innego. "example.com" to nazwa twojego wiadra. Argument regionalny jest wymagany, aby jednoznacznie zidentyfikować twoje wiadro.
Bardzo interesującym bitem w tym poleceniu jest przełącznik --delete
, który jest rozwiązaniem naszego problemu. Po ustawieniu, aws
usunie wszystkie pliki znalezione w twoim segmencie, ale nie w twoim katalogu budowania.
skip_cleanup: true
on:
branch: master
skip_cleanup
należy ustawić lub żaden z plików nie zostanie przesłany. Osobiście lubię, gdy Travis wdraża tylko zatwierdzenia do master
, ale każda konfiguracja jest możliwa tutaj. Aby uzyskać więcej informacji, patrz the docs.
Środowisko
Musimy dać aws
nasze poświadczeń AWS do zatwierdzania wszelkich interakcji. Zmienne środowiskowe używane przez aws
to AWS_ACCESS_KEY_ID
i AWS_SECRET_ACCESS_KEY
. hussfelt pisze, jak zapewnić je w odpowiedzi. Proces ten jest również opisany w dokumentacji Travis: encryption i AWS specifics.
Pełne rozwiązanie
# Deploy using awscli to enable pruning of removed files
before_deploy: pip install --user awscli
deploy:
provider: script
script: ~/.local/bin/aws s3 sync dist s3://example.com --region=eu-central-1 --delete
skip_cleanup: true
on:
branch: master
Tak, jestem zainteresowany w tym. Jakieś postępy od czerwca 2015 r.? : D –