Recent am avut ceva durere de cap cu cele enumerate în titlu. Folosesc Bitbucket Pipelines la un proiect, iar pentru a face deploy pe AWS, am decis să merg cu CodeDeploy.
Aici este articolul de bază, de unde m-am inspirat: https://support.atlassian.com/bitbucket-cloud/docs/deploy-to-aws-with-codedeploy/
La început, totul era bine, apoi mi-am dat seama că-mi lipses dotfiles (.env
, .htaccess
). Am crezut că e problema în zip
și am zis că încerc să-i dau cu tar
-ul. Dar, din articolul de mai sus era clar că nu pot folosi altceva decât zip. O soluție temporară a fost redenumirea fișierelor și anume schimbarea .
cu un _
iar la deploy - schimbarea înapoi. Recunosc, nu e elegantă soluția, dar mergea.
Peste vreo 2 săptămâni, am revenit la subiect și am dat de versiune (mult) mai nouă pentru pipe. Cea din documentație e atlassian/aws-code-deploy:0.2.10
dar după ce am răscolit puțin, am dat și de repozitoriu pe Bitbucket, de unde am aflat că deja putem folosi, pe lângă zip
, care e implicit, dar și tar
, tgz
, YAML
sau JSON
(BUNDLE_TYPE). Repozitoriul Docker Hub
De bucurie, am modificat pipe-ul, am făcut upgrade la ultima versiune (la momentul dat e atlassian/aws-code-deploy:0.6.0
), dar am aflat cu stupoare că nu-mi rezolvă problema cu dotfiles.
Hai iar să revăd ce am mai făcut pe acolo, iar soluția a fost una simplă, și anume adăugarea opțiunii dotglob
în bash
#!/bin/bash
shopt -s extglob dotglob
...
extglob
era deja acolo, căci mi-a rezolvat altă problemă ce am avut-o de la bun început. Așa cum tot codul "trăiește" în "rădăcina" repozitoriului, pentru a împacheta totul, am creat directoriul codedeploy
cu acest conținut
$ tree codedeploy/
codedeploy/
├── appspec.yml
├── configs
│ └── vhost.conf
└── scripts
├── AfterInstall.sh
├── ApplicationStart.sh
├── ApplicationStop.sh
├── BeforeInstall.sh
├── package.sh
└── ValidateService.sh
Iar package.sh
arată așa
#!/bin/bash
shopt -s extglob dotglob
[ -d cache ] && rm -rf cache
[ ! -d codedeploy/app ] && mkdir codedeploy/app
mv !(bitbucket-pipelines.yml|codedeploy) codedeploy/app/
tar czf codedeploy.tgz codedeploy
Am mai avut o problemă cu variabilile per mediu, dar e deja alt subiect.
Want to contribute? Edit in GitHub