LỜI NÓI ĐẦU:
Chắc các bạn đã từng nghe nói đến hệ thống tích hợp liên tục (continuous integration) và một số gương mặt nổi tiếng trong đó phải kể đến :Jenkins, Gitlab CI, Travis CI...Hôm nay mình sẽ giới thiệu cách cài đặt Gitlab CI với hệ điều hành Ubuntu/Debian.
Cài đặt Gitlab:
+ Cài theo Omnibus package :
- -Cài các gói cần thiết:
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates postfix
- Thêm package Gitlab
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
- Cài đặt Gitlab CE (bạn có thể thay your-url bằng url của bạn)
sudo EXTERNAL_URL="http://your-url" apt-get install gitlab-ce
- Đăng nhập vào url của bạn để thử
+ Cài đặt Gitlab CE bằng docker:
- Cài đặt docker theo link Install Docker
- Chạy lệnh :
docker run -d --restart=unless-stopped --name gitlab -p 80:80 -p 443:443 -p 22:22 \
-v /etc/gitlab -v /var/log/gitlab -v /var/opt/gitlab \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-ce:latest
- Khi docker run xong đăng nhập http://localhost để sử dụng
Cài đặt Gitlab Runner:
+ Cài theo docker :
docker exec -it gitlab bash
Cài đặt theo các bước như Omnibus package dưới đây:
+ Cài theo Omnibus package :
- Chọn tải file binary phù hợp
# Linux x86-64
sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# Linux x86
sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386
# Linux arm
sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm
- Cấp quyền truy cập file:
sudo chmod +x /usr/local/bin/gitlab-runner
- Tạo tài khoản user cho Gitlab CI :
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
- Cài đặt Gitlab Runner:
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start
- Cấp quyền docker cho user gitlab-runner
sudo usermod -aG docker gitlab-runner
- Logout hoặc khởi động lại máy để xác nhận quyền.
Tạo Repository trên Gitlab:
- Sau khi truy cập thành công vào địa chỉ web git , bạn tạo cho mình 1 project tên là test như sau:
- Thêm hai file .gitlab-ci.yml và Dockerfile vào project như sau :
#file .gitlab-ci.yml
image: docker
before_script:
- ls
- whoami
stages:
- test
- build
format:
stage: test
script:
- docker build -t test .
compile:
stage: build
script:
- docker stop test
- docker rm test
- docker run -d --name test -p 8089:8089 test:latest
- Nội dung file Dockerfile
FROM golang:latest
ENV HOST 192.168.1.8
ENV WDIR $GOPATH/src/test
RUN mkdir -p $GOPATH/src/test
ADD . $WDIR
WORKDIR $WDIR
RUN apt-get install git
RUN ls && go build -o test .
CMD ["./test"]
EXPOSE 8089
- File main.go có nội dung như sau và thêm các thư viện cần thiết vào vendor :
package main
import (
"github.com/kataras/iris"
"github.com/kataras/iris/middleware/logger"
"github.com/kataras/iris/middleware/recover"
)
func main() {
app := iris.New()
app.Logger().SetLevel("debug")
app.Use(recover.New())
app.Use(logger.New())
app.Handle("GET", "/", func(ctx iris.Context) {
ctx.HTML("<h1>Xin chao cac ban</h1>")
})
app.Run(iris.Addr(":8089"), iris.WithoutServerError(iris.ErrServerClosed))
}
- Vào phần Setting > CI/CD > Runners settings lấy token của project cho gitlab-runner
Đăng ký cho Gitlab Runner :
+ Với Gitlab CE cài bằng docker:
- Chạy lệnh để truy cập vào terminal của container gitlab và làm các bước cài đặt như theo gói Omnibus ở dưới :
docker excec -it gitlab bash
+ Với Gitlab CE cài bằng Omnibus
sudo gitlab-runner register -n \
--url http://localhost/ \
--registration-token urCaUTrmzs2c_-JDcvU- \
--executor docker \
--description "test" \
--docker-image "docker:stable" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock
gitlab-runner restart
Bạn có thể thay --url http://localhost bằng địa chỉ trang gitlab của bạn
Sau đó truy cập vào CI/CD của project để kiểm tra kết quả :
Cảm ơn vì đã đọc bài viết, mọi thắc mắc bạn có thể đặt câu hỏi ở bên dưới .
Bình luận