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é.
Simple et efficace.

https://bitbucket.org/atlassian/rsync-deploy

Michael

Développeur / intégrateur, travaillant en agence web depuis 2005, je viens à présent vous proposer de venir découvrir mes créations personnelles de plugins / themes pour le CMS Wordpress & Prestashop, quelques solutions en mode SAAS & un peu d'actualité web ( / Twitter).

Vous aimerez aussi...