Deploy From Bitbucket to AWS with CodeDeploy

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.

Articolul anterior Următorul articol