1,gitlab runner安装以及配置
Download and install binary # Download the binary for your system sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 # Give it permissions to execute sudo chmod +x /usr/local/bin/gitlab-runner # Create a GitLab CI user sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash # Install and run as service sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo gitlab-runner start Command to register runner sudo gitlab-runner register --url https://gitlab.bdynamics.com.cn/ --registration-token $REGISTRATION_TOKEN
2,指定runner clone仓库的地址
sudo vi /etc/gitlab-runner/config.toml 指定 clone_url = "http://127.0.0.1/"
3,gitlab 安装以及指定https/http方式运行
sudo vi /etc/gitlab/gitlab.rb
external_url 'https://gitlab.bdynamics.com.cn' ##nginx['ssl_certificate'] = "/home/penglei/opt/bdynamics.com.cn.pem" nginx['ssl_certificate'] = "/home/penglei/opt/Nginx/1_bdynamics.com.cn_bundle.crt" nginx['ssl_certificate_key'] = "/home/penglei/opt/Nginx/2_bdynamics.com.cn.key"
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
nginx配置
/var/opt/gitlab/nginx/conf 增加 gitlab-http.conf 内容
listen *:80; server_name gitlab.bdynamics.com.cn;
然后再 /var/opt/gitlab/nginx/conf/nginx.conf中添加
include /var/opt/gitlab/nginx/conf/gitlab-http.conf; include /var/opt/gitlab/nginx/conf/gitlab-https.conf;
sudo gitlab-ctl nginx restart (此时不要sudo gitlab-ctl reconfigure,reconfigure会重写配置 /var/opt/gitlab/nginx/conf/nginx.conf)
4,gtest 与CI/CD
CICD配置文件 .gitlab-ci.yml (script中命令所在目录就是源码的根目录,源码会由gitlab runner自动拉取,stages 也可以定义多个,这样可以把代码静态检查等加入到CI/CD里)
stages: - buildtest buildtest: stage: buildtest script: - rm buildx86 -rf - mkdir buildx86 - cd buildx86 - cmake .. - make -j4 - make all_test
项目cmake参考,根目录的cmake
cmake_minimum_required (VERSION 2.8) project (my_app) enable_testing() add_custom_target(all_test ${CMAKE_CTEST_COMMAND} -V) set_property(GLOBAL PROPERTY ROOT_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set_property(GLOBAL PROPERTY COMMON_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) add_executable(my_app ${DIR_SRCS}) target_link_libraries(my_app pthread dl m )
测试代码对应的cmake
aux_source_directory(. DIR_LIB_SRCS) ## singleton test add_executable(singleton_test test/singleton_test.cpp) target_link_libraries(singleton_test core_base ${GTEST_LIB} pthread ) add_test(singleton_test singleton_test )
测试代码示例singleton_test.cpp:
TEST(singletonTest, create_singleton_test) { std::cout << Singleton<TestNoDestroy>::instance().name() << std::endl;; std::cout << Singleton<TestDestroy>::instance().name() << std::endl;; }