CI/CD Bitbucket

Tạo 1 tài khoản dev và tạo ssh key, sau đó copy nội dung file .pub vào phần quản lý SSH Key của Bitbucket:

$ su dev
$ ssh-keygen -t rsa -b 4096 -C "tungnt.blue@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dev/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/dev/.ssh/id_rsa
Your public key has been saved in /home/dev/.ssh/id_rsa.pub
$ cat id_rsa.pub
$ cd /srv/www/domain.com
$ git branch
* master

Truy cập vào Repository settings, copy nội dung Public key thêm vào file ~/.ssh/authorized_keys trên hệ thống.

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

Tiếp tục thêm IP server vào mục Known hosts, ví dụ ip:port và click Fetch. Sau đó click Add host.

Tại file code của project, thêm 2 file với nội dung như sau:

bitbucket-pipelines.yml
# This is a sample build configuration for PHP.
# Check our guides at https://confluence.atlassian.com/x/e8YWN for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: php:7.2.6
 
pipelines:
  branches:
    master:
    - step:
        caches:
        - composer
        script:
        - apt-get update && apt-get install -y unzip libmcrypt-dev openssh-client
        - ssh dev@domain.com -p 22 'bash -s' < ci/deploy.sh
ci/deploy.sh
#!/bin/bash
 
echo 'Deploying domain.com'
 
cd /srv/www/domain.com
 
git pull origin master
 
exit

Sau khi xong, đẩy code lên git và vào mục Pipelines trong phần cài đặt Repository của Bitbucket để theo dõi update code.

Tham khảo:

CI/CD Github

Tạo file .github/workflows/ci.yml:

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v1

      - name: Install composer dependencies
        run: composer install --prefer-dist

      - name: Run PHPCS
        run: php7.3 vendor/bin/phpcs src/

      - name: Run PHPUnit test
        run: php7.3 vendor/bin/phpunit