Angular gitlab持續集成之runner配置

gitlab持續集成

安裝Runner

正常安裝

sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start
image: node:8cache:paths:- node_modules/stages:- test- buildtest:stage: testscript:- npm install- ./node_modules/@angular/cli/bin/ng test --browsers PhantomJS --watch=falsebuild:stage: buildscript:- ./node_modules/@angular/cli/bin/ng build --prod

docker in docker 安裝

推薦使用此方式安裝runner。

  1. pull鏡像

    sudo docker pull gitlab/gitlab-runner:latest
    
  2. 創建容器運行

    docker run -d --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest
    
  3. 查看注冊token

    在這里插入圖片描述

    在這里插入圖片描述

    查看注冊需要的url和token

  4. 注冊runner

    sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register
    

    執行完上面命令后,會交互式的讓你輸入相關信息,如下操作:

    #  1、輸入上圖中的注冊URL
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
    http://192.168.2.100:9799/# 2、輸入上圖中的注冊令牌
    Please enter the gitlab-ci token for this runner:
    xxxxxxxxxx# 3、輸入描述 如 another runner
    Please enter the gitlab-ci description for this runner:
    [gitlab]:another runner# 4、輸入Runner的tag 多個的話逗號隔開
    Please enter the gitlab-ci tags for this runner (comma separated):
    my-tag# 7、選擇執行類型 輸入shell即可
    Registering runner... succeeded                     runner=E7XAAAAA
    Please enter the executor: docker+machine, docker-ssh, parallels, shell, ssh, virtualbox, docker-ssh+machine, kubernetes, docker:
    docker
    

    接下來選擇鏡像根據自己的需求,我所使用的是node:8.9.4

  5. 注冊成功后,在gitlab項目中即可查看gitlab-runner

在這里插入圖片描述

  1. 修改gitlab-runner容器內的配置

    進入容器內部

    sudo docker exec -it gitlab-runner /bin/bash
    

    然后編輯gitlab-runner配置文件

    nano /etc/gitlab-runner/config.toml
    

    修改如下

    concurrent = 1
    check_interval = 0[session_server]session_timeout = 1800[[runners]]name = "Angular build ^ ^ test and deploy."clone_url = "http://192.168.2.100:9799/"  # 增加此段,否則默認不帶端口,會出現無法克隆項目的情況url = "http://192.168.2.100:9799/"token = "ea6a17d35baf89d3d7ddab5f026428"executor = "shell"[runners.cache][runners.cache.s3][runners.cache.gcs]

    查看runner

    gitlab-runner list
    
  2. 編寫.gitlab-ci.yml然后push

    test:script:- ls
    

    在這里插入圖片描述
    在這里插入圖片描述

  3. 增加部署runner

    進入容器

    sudo docker exec -it gitlab-runner /bin/bash
    

    注冊新的runner

    綁定/var/run/docker.sock到容器

     gitlab-runner register -n \
    > -url http://192.168.2.100:9799/ \
    > --registration-token UX91nm9za1YbgGPSymci \
    > --executor docker \
    > --description "Angular Runner" \
    > --docker-image "docker:latest" \
    > --docker-volumes /var/run/docker.sock:/var/run/docker.sock
    

    這個runner是使用宿主的docker構建鏡像
    同樣需要在配置文件中增加

    ...
    clone_url = "http://192.168.2.100:9799/"
    ...
    
  4. 由于gitlab runner會使用宿主機的docker下載一些鏡像,以及會有一些緩存,長期使用所占的空間對于一個磁盤空間不足的機器來說是個問題,需要定時清理相應文件。可以使用自己寫定時任務清理,也可以使用官方提供的cleanup鏡像來定時清理。

    docker run -d \
    -e LOW_FREE_SPACE=10G \
    -e EXPECTED_FREE_SPACE=20G \
    -e LOW_FREE_FILES_COUNT=1048576 \
    -e EXPECTED_FREE_FILES_COUNT=2097152 \
    -e DEFAULT_TTL=10m \
    -e USE_DF=1 \
    --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    --name=gitlab-runner-docker-cleanup \
    quay.io/gitlab/gitlab-runner-docker-cleanup
    

docker不加sudo執行

  1. 如果還沒有docker group就添加一個
sudo groupadd docker

2.將用戶加入該group內。然后退出并重新登錄就生效啦。

sudo gpasswd -a ${USER} docker

3.重啟docker

sudo service docker restart

4.將gitlab-runner添加到docker組

sudo gpasswd -a gitlab-runner docker

項目的gitlab runner

[[runners]]name = "Angular Runner"url = "http://192.168.2.100:9799/"token = "a2bf55eaea82fffce1cff48b3ebf3b"executor = "docker"clone_url = "http://192.168.2.100:9799/"[runners.docker]tls_verify = falseimage = "docker:latest"privileged = falsedisable_entrypoint_overwrite = falseoom_kill_disable = falsedisable_cache = falsevolumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]shm_size = 0[runners.cache][runners.cache.s3][runners.cache.gcs]
[[runners]]name = "Angular test build"clone_url = "http://192.168.2.100:9799/"url = "http://192.168.2.100:9799/"token = "b2a10b9b16d5678e141bf5df636853"executor = "docker"[runners.docker]tls_verify = falseimage = "node:8.9.4"privileged = falsedisable_entrypoint_overwrite = falseoom_kill_disable = falsedisable_cache = falsevolumes = ["/cache"]shm_size = 0[runners.cache][runners.cache.s3][runners.cache.gcs]

錯誤

ERROR: Job failed: Error response from daemon: repository node-cnpm not found: does not exist or no pull access (executor_docker.go:168:3s)

報錯的原因在于,gitlab-runner嘗試去官方的docker hub倉庫拉取鏡像。通過修改gitlab-runner中的配置,設置只拉取本地鏡像:

never, if-not-present or always (default)

修改 /etc/gitlab-runner/config.toml ,在 [runners.docker] 下,添加:

pull_policy = "if-not-present"  # 該配置默認always,即只在線上拉取鏡像

gitlab-ci.yml

# 定義 stages
stages:- install_deps- test- build- deploy# 設置緩存
cache:key: ${CI_COMMIT_REF_NAME}paths:- node_modules/# 安裝依賴
install_deps:stage: install_depstags:- Angular-clionly:- develop- masterscript:- npm config set registry https://registry.npm.taobao.org --global  # 設置淘寶鏡像加速- npm install# 測試 job
test: # 這是 Job 的名字,不用與 stage 選項一致,也可以寫成 job1stage: testtags:- Angular-cliscript:- echo "unit test successful"# 構建 job
build:stage: buildtags:- Angular-clionly:- develop- masterscript:- ./node_modules/@angular/cli/bin/ng build --prodartifacts:   # 成功后將dist發送到gitlab,供后續步驟使用name: "ioa-clent-dist"expire_in: 1 weekpaths:- dist/# 部署 job
deploy:stage: deploydependencies: - build    # 是具體的job名稱,這樣就會自動下載artifactstags:- Angular-Deployonly:- develop- masterscript:- sh deploy.sh

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536024.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

javascript編譯壓縮

javascript編譯 js是JavaScript 源碼文件, .min.js是壓縮版的js文件。 .min.js文件經過壓縮,相對編譯前的js文件體積較小,傳輸效率快。經過編碼將變量和函數原命名改為毫無意義的命名,以防止他人窺視和竊取 js 源代碼 在線版 g…

vscode設置中文

vscode設置中文 當我們安裝完成vscode后,會發現它是中文的,因為默認情況下,vscode使用的語言為英文(us)。 那很多同學是不喜歡英文的,不是看不懂,而是不方便哈。 修改語言配置文件 使用快捷鍵組合【CtrlShiftp】 在…

linux下編譯boost

linux下編譯boost 下載boot庫 官方下載地址 下載完成會解壓。 編譯 1.進入解壓后的文件夾內 cd boost_1_69_0 執行下面的語句 ./bootstrap.sh --with-librariesall --with-toolsetgcc–with-libraries 指定編譯哪些boost庫,all的話就是全部編譯,只想…

C++通過原子變量代替互斥量

C通過原子變量代替互斥量 廢話不多說&#xff0c;直接上代碼。 實現類似lock_guard功能 #include <atomic> #include <thread>class ClockGuard { public:ClockGuard(std::atomic_flag & atomic):m_lockedFlag(atomic){lock();}~ClockGuard(){unlock();}voi…

conky安裝配置

conky安裝配置 安裝conky sudo apt-get install conky-all修改配置 在主目錄下創建’.conkyrc’ 文件內容&#xff1a; # set to yes if you want Conky to be forked in the background background no cpu_avg_samples 2 net_avg_samples 2 out_to_console no # X font w…

Windows子系統安裝圖形界面

Windows子系統安裝圖形界面 有很多同學需要使用 linux 系統,但是又不想真正安裝一個 linux 系統。于是微軟大哥就把 ubuntu 系統集成到 windows 內了&#xff0c;你說 微軟 屌不屌&#xff1f; 言歸正傳。 安裝Xlaunch 因為這個是最靠譜的圖形化界面了&#xff0c;所以不解…

C++ 判斷類是否有某變量

C 判斷類是否有某變量 話不多說上代碼。 #define HAS_MEMBER(member)\template<typename T, typename... Args>struct has_member_##member\ {\private:\template<typename U> static auto Check(int) -> decltype(std::declval<U>().member(std::declv…

C++將地址轉換為字符串

C將地址轉換為字符串 有時候在做程序設計的時候&#xff0c;有可能需要做一個類似messageBus的功能&#xff0c;并且需要一個key保證唯一&#xff0c;那么如何實現這個key的唯一呢&#xff1f;大致兩種思路: 使用函數簽名&#xff0c;因為messagebus綁定的是一個函數&#xf…

Angular 8之升級和新功能摘要

Angular 8之升級和新功能摘要 Angular 8已經到來,并帶來了大量的工作流程和性能改進。就像我們之前發布的幾個版本一樣,讓我們回顧一下Angular 8的新功能,以及如何將Angular 7應用程序升級到Angular 8。 Angular 8中明顯的新功能數量有限,但確實還有一些好東西: Differen…

Linux下查看顯卡PCIE速率x16x8x4及設定

Linux下查看顯卡PCIE速率x16x8x4 由于linux軟件并不是很齊全所以查看顯卡占用PCIE的帶寬并不直觀&#xff0c;所以本文介紹如何查看。 Windows下使用GPU-Z即可查看 Linux 確定當前顯卡型號 lspci | grep NVIDIA返回 02:00.0 3D controller: NVIDIA Corporation GM107M [GeFor…

Deepin安裝最新顯卡RTX2080Ti及CUDA10.1

Deepin安裝最新顯卡RTX2080Ti及CUDA10.1 廢話不多說直接上教程。 本系統為Deepin 15.10.2&#xff0c;是基于debian 9發布的&#xff0c;不排除后續deepin升級為debian 10&#xff0c;就目前來看是和ubuntu 16.04一樣&#xff0c;使用的是debian 9&#xff0c;所以下載安裝包等…

Anaconda安裝Tensorflow環境

Anaconda安裝Tensorflow環境 Anaconda安裝 下載安裝包&#xff0c;請到這個地址下載 安裝 打開終端執行&#xff1a; bash Anaconda3-5.3.1-Linux-x86_64.sh安裝過程全部yes即可。 然后重新啟動。 驗證是否安裝成功 conda --version如果沒有報錯&#xff0c;并且輸出下面內容…

Windows下Qt Creator設置IDE菜單字體樣式

Windows下Qt Creator設置IDE菜單字體樣式 本文為解決以下問題&#xff1a; IDE的菜單字體太小IDE的菜單字體樣式&#xff0c;可以更換為微軟雅黑 創建樣式文件 在Qt Creator目錄下C:\Qt\Qt5.12.2創建 custom-style.css 文件&#xff0c;內容如下&#xff1a; QWidget { fo…

Clonezilla再生龍備份與還原linux系統

文章目錄Clonezilla再生龍備份與還原linux系統簡介功能與要求一、制作再生龍啟動盤1.下載鏡像2.制作啟動盤二、系統分區三、備份系統四、還原系統注意事項Clonezilla再生龍備份與還原linux系統 簡介 再生龍&#xff08;Clonezilla&#xff09;是一個免費的災難恢復、硬盤克隆…

ubuntu Qt Creator不能輸入中文

ubuntu Qt Creator不能輸入中文 解決方式為下面的腳本&#xff0c;如果你的Qt是安裝在根目錄下&#xff0c;那么需要加sudo&#xff0c;如果不是&#xff0c;直接運行即可 sudo bash ChineseInputForQt-v1.1.sh# 或者bash ChineseInputForQt-v1.1.sh腳本內容為&#xff1a; …

修改gitlab數據卷的位置

修改gitlab數據卷的位置 在使用docker安裝gitlab的時候&#xff0c;一開始沒有考慮其他事情&#xff0c;直接在本地創建了一個數據卷就掛載到容器上了&#xff0c;導致后續數據越來越多&#xff0c;想將數據放到其他盤&#xff0c;大致可以這樣操作。 1.停止容器 docker sto…

Angular安裝教程

Angular安裝 安裝node和npm 參考這篇文章安裝 https://blog.csdn.net/wf19930209/article/details/84226365 正式安裝 當然&#xff0c;在安裝 angular/cli 之前需要先把 Node.js 安裝好&#xff0c;請到官方網站下載安裝包 &#xff0c;安裝過程和普通軟件沒有區別。裝好…

Angular之ngx-permissions安裝入門

Angular之ngx-permissions安裝入門 權限幫助您對路線的控制權,通過使用簡單的概念,你來決定誰可以訪問它們。 安裝 安裝這個第三方庫: npm install ngx-permissions --save導入 App Module導入 import {BrowserModule } from @angular/platform-browser; import {NgMo…

Angular之ngx-permissions的常見使用情況

Angular之ngx-permissions的常見使用情況 權限驗證 首先需要請求驗證并通過&#xff0c;然后獲得權限&#xff0c;最后檢查權限。 這種方式需要在Angular 4.3.2 版本以上才會有效工作。 一般來說我們的程序有2個守衛&#xff0c;一個是信息驗證&#xff0c;一個是權限守衛&am…

Angular之ngx-permissions的控制視圖訪問

Angular之ngx-permissions的控制視圖訪問 案例 demo https://stackblitz.com/edit/ngx-permissions-iwexsb Permission指令 Permission模塊將導出指令 ngxPermissionsOnly 和 ngxPermissionsExcept,它能夠根據權限和角色控制元素的顯示/隱藏。 指令屬性 屬性值描述ngxPerm…