Bitbucket deploy avec RSYNC
Bitbucket, comme vu dans l’article précédent vous permet de déployer une branche master de votre repository depuis un pipeline. Vous commitez sur une branche x, et cela déploie.
Comment réaliser cela depuis Bitbucket.org et un serveur ionos.fr ou ovh ?
Configuration bitbucket :
- Activer la gestion du pipeline (Settings > Settings > Enable Pipelines).
- Créer un fichier bitbucket-pipelines.yml avec le contenu suivant :
pipelines:
default:
- step:
name: Deploy to develop
deployment: develop
script:
- pipe: atlassian/rsync-deploy:0.4.0
variables:
USER: $USER
SERVER: $SERVER
REMOTE_PATH: $REMOTE_PATH_DEVELOP
LOCAL_PATH: $LOCAL_PATH
EXTRA_ARGS: '--exclude-from=bitbucket-pipeline-exclude.txt'
branches:
staging:
- step:
name: Deploy to staging
deployment: staging
script:
- pipe: atlassian/rsync-deploy:0.4.0
variables:
USER: $USER
SERVER: $SERVER
REMOTE_PATH: $REMOTE_PATH_STAGING
LOCAL_PATH: $LOCAL_PATH
EXTRA_ARGS: '--exclude-from=bitbucket-pipeline-exclude.txt'
master:
- step:
name: Deploy to production
deployment: production
script:
- echo "---- production ----"
- step:
name: Manual step FOR PROD
trigger: manual # Step runs if you click the 'Run' button
script:
- pipe: atlassian/rsync-deploy:0.4.0
variables:
USER: $USER
SERVER: $SERVER
REMOTE_PATH: $REMOTE_PATH_PROD
LOCAL_PATH: $LOCAL_PATH
EXTRA_ARGS: '--exclude-from=bitbucket-pipeline-exclude.txt'
# feature/*:
# - step:
# name: Deploy to feature
# deployment: feature
# script:
# - echo "Lance uniquement pour nom de branche qui commence par 'feature/*' (ex. feature/lorem-ipsum)."
NB :
Vous pouvez déployer à partir d’une branche commençant par « feature/xxx », avec xxx qui correspond à votre nom de branche spécifique (préfixé de « feature/ »).
Dans l’exemple ci-dessus, la « prod » le pipeline ne pourra être finalisé que « manuellement ».
Le fichier bitbucket-pipeline-exclude.txt contient :
.git
README.md
bitbucket-pipelines.yml
bitbucket-pipeline-exclude.txt
- Créez les variables suivantes (Settings > Repository variables) :
- USER (ex : u12345678)
- SERVER (ex : home123456789.1and1-data.host)
- REMOTE_PATH_DEVELOP (ex : /kunden/homepages/12/d123456789/htdocs/monsite_develop/)
- REMOTE_PATH_STAGING (ex : /kunden/homepages/12/d123456789/htdocs/monsite_staging/)
- REMOTE_PATH_PROD (ex : /kunden/homepages/12/d123456789/htdocs/monsite_prod/)
- LOCAL_PATH (ex : .)
- La variable PASSWORD n’est pas utilisée si vous prenez le choix d’une connexion via « SSH Key » (donc supprimez là de votre liste de variable).
- Créez une « SSH key » en cliquant sur « Generate keys » (Settings > SSH keys).
- Et ajoutez votre host puis cliquez sur « Fetch » et une fois l’IP trouvée, faire « Add host ».
- Vous allez pouvoir utiliser la « Public key » dans la configuration ionos ci-dessous.
Configuration Ionos / OVH :
- Placez-vous à la racine de votre serveur.
- Créez un dossier .ssh (chmod : 700).
- Créer un fichier .ssh/authorized_keys (chmod : 600).
- Copier la « Public key » générée depuis bitbucket et la coller dans authorized_keys.
Utiliser le pipeline :
- Lorsque vous allez réaliser un commit sur votre master, cela va activer l’exécution du pipeline et ainsi envoyer le contenu du repository sur votre serveur (ici j’ai utilisé un serveur ionos, idem sur ovh).
- Vous pouvez aussi lancer manuellement le pipeline si besoin (avec des tests, etc …).
« https://bitbucket.org/{user}/{project}/addon/pipelines/home » puis « Run pipeline ».
Bitbucket-pipeline.yml que j’ai utilisé.
https://bitbucket.org/atlassian/rsync-deploy
Simple et efficace.