CI/CD nodejs GitLab

Trong ngôn ngữ lập trình máy tính, CI nghĩa là tích hợp liên tục và CD nghĩa là phân phối liên tục hoặc triển khai liên tục. CI/CD hợp lý hóa quy trình phát triển và triển khai bằng cách tự động hóa quy trình thử nghiệm, xây dựng và triển khai ứng dụng. Các nhóm DevOps duy trì một quy trình liên tục trong vòng đời phát triển phần mềm của họ ( SDLC ). Do đó, đường ống CI/CD là xương sống của DevOps. Quy trình CI/CD là một bổ sung hữu ích cho các nhóm DevOps triển khai để họ có thể thực hiện các thay đổi mã thường xuyên một cách hiệu quả

Trong bài viết này, tôi sẽ giải thích cách thiết lập đường dẫn CI/CD vào GitLab bằng cách sử dụng nút ngôn ngữ lập trình JS. Trước khi tiếp tục, vui lòng đọc các điều kiện tiên quyết

điều kiện tiên quyết

Đối với hướng dẫn này, tôi giả sử rằng bạn có những điều sau đây

  • Node ổn định mới nhất Node. js được cài đặt để phát triển.

  • A git được cài đặt để đẩy và kéo vào GitLab.

  • A GitLab có sẵn runner có thể . docker commands.

  • A Đăng ký Docker để đẩy và kéo các vùng chứa đến và từ docker. Hãy nhớ rằng bạn có thể cần cấu hình docker của riêng mình để chạy sổ đăng ký.

CI/CD nodejs GitLab

Tạo ứng dụng phụ trợ Node JS

Bước đầu tiên là tạo một ứng dụng bằng Node. js. Ngoài ra, máy chủ cũng đang sử dụng Express — để tạo API REST. Ở đây, yêu cầu HTTP chỉ cần trả về, "Này, bạn thế nào?"

ứng dụng cài đặt

Đầu tiên, thiết lập thư mục và tạo một tệp JS trong đó. Chạy các lệnh sau

> mkdir firstApp
____1
> touch index.js

Bây giờ, đối với nút JS, chúng tôi sử dụng trình quản lý gói như npm . Vì vậy, trước khi sử dụng, chúng ta cần tạo một gói. json  bằng cách chạy một lệnh.

> npm init -y

Ở đây, nếu bạn không bao gồm -y, thì bạn sẽ cần thực hiện từng bước theo cách thủ công. Bây giờ, bạn có thể đưa bất kỳ phụ thuộc nào vào dự án như Express

> npm install --save express

Sau khi chạy lệnh này, bạn sẽ có thể thấy thêm một thư mục bên trong FirstApp tên là node_modules. Ngoài ra,   khóa gói. json cũng sẽ được tạo. Node_modules là nơi tất cả các phụ thuộc của dự án sẽ được lưu trữ cục bộ.

Tạo API

Bây giờ, phần chính là tạo một API sẽ trả về một số đầu ra khi nó được gọi. Tôi đã tham khảo ví dụ về tài liệu nhanh và sửa đổi một chút. Mở tệp có tên là chỉ mục. js và viết mã đã cho.

const express = require('express') // Import express npm
const app = express() // instantiate an express app
const port = 3000 // Specify the port on which the HTTP call will listen
app.get('/', (req, res, next) => res.send({status: 200, data: 'Hey, how are you?'})) // Define a route
app.listen(port, () => console.log(`Example app listening on port ${port}`))

Bây giờ bước cuối cùng là chạy ứng dụng. Bấm vào lệnh đã cho

> cd firstApp
0

Bây giờ, nếu bạn nhấn localhost. 3000/ trong trình duyệt của bạn hoặc gọi GET API bằng cách sử dụng người đưa thư, bạn sẽ thấy nó trả về {status. 200, dữ liệu. 'Này, bạn khỏe không?'}, có nghĩa là ứng dụng của bạn đang chạy tốt.  

CI/CD nodejs GitLab

Cấu hình Docker

Docker rất hữu ích để làm cho sản phẩm của bạn hoạt động trong môi trường sản xuất. Ở bước đầu tiên, bạn đã thấy ứng dụng của mình đang chạy tìm trong máy cục bộ của bạn. Bộ chứa docker sẽ chuyển ứng dụng của bạn sang sản xuất.

Ứng dụng trên có thể được chứa bằng Docker. Đối với điều này, giống như NPM, bạn cần thêm một tệp cấu hình (còn gọi là Dockerfile) để chỉ định cấu hình vùng chứa. Vì vậy, trong phần này, tôi làm theo hướng dẫn của NodeJS để cập nhật ứng dụng.

thích gói. json quản lý các phụ thuộc của NPM, ở đây chúng ta cần tạo một file docker giúp tạo image docker container. Để tạo image của node app, trước tiên chúng ta cần tạo một file có tên Dockerfile trong thư mục gốc của app và viết lệnh đã cho

> cd firstApp
1
> cd firstApp
2
> cd firstApp
3
> cd firstApp
4
> cd firstApp
5
> cd firstApp
6
> cd firstApp
7
> cd firstApp
8
> cd firstApp
9
> touch index.js
0
> touch index.js
1
> touch index.js
2

Ở đây, chúng ta cần quan tâm đến node_modules vì ​​mỗi khi tệp docker thực thi, nó sẽ sao chép tất cả các mô-đun. Vì vậy, để ngăn chặn điều đó, hãy tạo . dockerignore trong thư mục gốc và viết chỉ.

> touch index.js
3

Vì vậy, bây giờ nó sẽ bỏ qua node_modules

Cấu hình GitLab

Bây giờ ứng dụng của bạn đang chạy với Docker. Bước cuối cùng, bạn cần cấu hình GitLab để chạy một đường dẫn trên GitLab. Đối với điều đó, bạn cần tạo một tệp có tên. gitlab-ci. yml. Nó sẽ chứa tất cả các cấu hình liên quan đến triển khai. Ở đây mình chọn server triển khai là AWS EC2 . Tạo một tệp và viết mã như đã cho.

> touch index.js
4
> touch index.js
5
> touch index.js
6
> touch index.js
7
> touch index.js
8
> touch index.js
9
> npm init -y
0
> npm init -y
1
> npm init -y
2
> npm init -y
3
> npm init -y
4
> npm init -y
5
> npm init -y
6
> npm init -y
7
> npm init -y
8
> npm init -y
9
> npm install --save express
0
> npm install --save express
1
> npm install --save express
2
> npm install --save express
3
> npm install --save express
4
> npm install --save express
5
> npm install --save express
6
> npm install --save express
7
> npm install --save express
8
> npm install --save express
9
const express = require('express') // Import express npm
0
const express = require('express') // Import express npm
1
const express = require('express') // Import express npm
2
const express = require('express') // Import express npm
3
> npm install --save express
2
const express = require('express') // Import express npm
5
> npm install --save express
4
const express = require('express') // Import express npm
7
const express = require('express') // Import express npm
8
const express = require('express') // Import express npm
9
const app = express() // instantiate an express app
0
const app = express() // instantiate an express app
1
const app = express() // instantiate an express app
2
const app = express() // instantiate an express app
3
const app = express() // instantiate an express app
4
const app = express() // instantiate an express app
5
const app = express() // instantiate an express app
6
> npm install --save express
7
> npm install --save express
8

Đẩy mã của bạn vào GitLab

Bây giờ mọi thứ đã sẵn sàng để xây dựng và triển khai trên máy chủ. Bạn chỉ cần đẩy mã của mình vào tài khoản GitLab tương ứng bằng các lệnh đã cho.  

const app = express() // instantiate an express app
9
const port = 3000 // Specify the port on which the HTTP call will listen
0
const port = 3000 // Specify the port on which the HTTP call will listen
1
const port = 3000 // Specify the port on which the HTTP call will listen
2
const port = 3000 // Specify the port on which the HTTP call will listen
3

Ngoài ra, bạn có thể lưu trữ dữ liệu riêng tư của mình như khóa SSH máy chủ, tên người dùng và mật khẩu docker vào GitLab để sử dụng trong tương lai. Trong repo GitLab của bạn, hãy chuyển đến cài đặt> CI/CD (ở thanh bên trái). Bạn sẽ có thể xem phần biến môi trường

CI/CD nodejs GitLab

Sử dụng điều này, bạn có thể thêm nhiều biến trong cùng một repo. Bạn có thể sử dụng các biến này trong. gitlab-ci. tập tin yml như

const port = 3000 // Specify the port on which the HTTP call will listen
4
const port = 3000 // Specify the port on which the HTTP call will listen
5

Khi bạn đẩy mã của mình, giai đoạn đầu tiên trong hai giai đoạn, tôi. bản dựng điện tử, sẽ thực thi. Nó sẽ xây dựng tệp docker bằng Dockerfile. Một điều bạn cũng nên biết là, trong gitlab-ci. yml, chúng tôi chỉ định chi nhánh sản xuất như thế này

const port = 3000 // Specify the port on which the HTTP call will listen
6
const port = 3000 // Specify the port on which the HTTP call will listen
7

Điều này có nghĩa là nó sẽ chỉ tạo trình kích hoạt nếu bạn đẩy các thay đổi của mình sang nhánh sản xuất. Sau khi xây dựng, bước tiếp theo, tôi. e. deployToAWS, sẽ được thực thi. Cuối cùng, nó sẽ triển khai mã của bạn đến máy chủ (ở đây, EC2) và bạn sẽ thấy dấu hiệu 'đã qua' màu xanh lục trong cột đầu tiên.

CI/CD nodejs GitLab

Quá trình tổng thể của bạn đã hoàn tất tại đây. Từ giờ trở đi, bạn sẽ chỉ cần đẩy các thay đổi mới nhất tới các nhánh tương ứng của chúng và sau khi nhận được các thay đổi, quy trình sẽ tự động bắt đầu.