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.mzph.cn/news/536024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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的话就是全部编译,只想…

conky安装配置

conky安装配置 安装conky sudo apt-get install conky-all修改配置 在主目录下创建’.conkyrc’ 文件内容: # 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 内了,你说 微软 屌不屌? 言归正传。 安装Xlaunch 因为这个是最靠谱的图形化界面了,所以不解…

Linux下查看显卡PCIE速率x16x8x4及设定

Linux下查看显卡PCIE速率x16x8x4 由于linux软件并不是很齐全所以查看显卡占用PCIE的带宽并不直观,所以本文介绍如何查看。 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,是基于debian 9发布的,不排除后续deepin升级为debian 10,就目前来看是和ubuntu 16.04一样,使用的是debian 9,所以下载安装包等…

Clonezilla再生龙备份与还原linux系统

文章目录Clonezilla再生龙备份与还原linux系统简介功能与要求一、制作再生龙启动盘1.下载镜像2.制作启动盘二、系统分区三、备份系统四、还原系统注意事项Clonezilla再生龙备份与还原linux系统 简介 再生龙(Clonezilla)是一个免费的灾难恢复、硬盘克隆…

网页滚动条上下滚动固定元素左右不固定之sticky

网页滚动条上下滚动固定元素左右不固定之sticky 有时候我们需要网页中某元素在上下滚动时可以固定在某一位置,但是左右不固定,也就是会随着左右滚动条滚动。那么我们可以通过 sticky 布局来解决。 position: sticky 我们先看看兼容性: 在使…

Timeshift系统备份与还原

Timeshift系统备份与还原 系统备份 一般Linux系统是比较稳定的,但是一旦崩溃就很难恢复,这里介绍 Timeshift系统备份工具。 安装Timeshift ubuntu 和 linux mint sudo apt-add-repository -y ppa:teejee2008/ppa sudo apt-get update sudo apt-get ins…

图片床

仅供存储图片

Angular实现dialog对话框封装

Angular实现dialog对话框封装 为什么要封装? 对于Angular Material UI库中的dialog组件,实在不是很好用,所以打算简单封装一下啊。 直接代码吧。 封装dialog组件 1.创建一个dialog组件 2.dialog.component.html文件 <ng-template #dialog><!-- 对话框投射内容…

Ubuntu LinuxMint安装微信QQ阿里旺旺

Ubuntu LinuxMint安装微信QQ阿里旺旺 目前linux大部分桌面发行版都可以安装windows版本的微信、QQ、阿里旺旺等软件了&#xff0c;这是deepin系统的功劳&#xff0c;这里还要感谢一下 前深度CEO 勇哥的不懈努力和坚持。 安装 这里推荐一个移植好的安装方法。 zq1997/deepin-w…

Angular消息通知组件ngx-notification

Angular消息通知组件ngx-notification It is a flexible and usable component. Demo Demo Installation 1.You need install @flywine93/ngx-notification by npm npm install @flywine93/ngx-notification --save2.You need install @flywine93/ngx-autounsubscrb npm …

01-go安装

01-go安装 本教程适用于linux发行版安装。 当前系统使用的是linux mint 19.ubuntu deepin 等同理。 下载安装包 下载地址 go downloads。 选择Linux包点击下载。 开始安装 1.设定安装目录 在下载好的压缩包文件夹内打开终端&#xff0c;并设置安装目录环境变量&#xff0c…

02-go的IDE安装

02-go的IDE安装 此篇文章是在go已经安装的前提下进行的&#xff0c;如果go还没有安装请参考这篇文章 01-go安装。 本文章使用的是vscode作为go IDE&#xff0c;所以需要提前安装好vscode&#xff0c;并且是在linux系统下。 当前系统为linux mint 19&#xff0c;ubuntu deepin…

go validator使用教程

go validator使用教程 很多时候在B/S开发过程中,经常会遇到对参数的校验工作,一般客户端需要提前验证一次提交的数据是否合理,以减少后端的压力,而后端是必须要对数据做验证的。 一般验证的方式大多都是if-else,这种方式会让你掉入无底的深渊,就像下面一样。 [图片来源…

golang代理转发基础

golang代理转发基础 go标准库已经实现了一个反向代理工具,通过代理将客户端的请求转发到代理服务器。 什么是反向代理? 维基百科解释: ”In computer networks , a reverse proxy is a type of proxy server that retrieves resources on behalf of a client from one or…

go之树型结构深度理解

go之树型结构深度理解 如果你是一个编程人员,或多或少对树型结构都有一定的认识,我个人对树型数据结构是又爱又恨。这篇文章主要讲解一些关于tree的数据结构以及使用。 什么是树? 数组、列表、队列、队列、堆栈都是以一个集合的形式存储数据,一般称它们被称为 "线性…

Go信号gsignal和宿主Signal

信号gsignal和宿主Signal signal包提供了信号处理程序,并允许我们的Go程序与输入的信号进行交互。 订阅 信号的订阅是通过channel来完成的,下面是一个例子,功能是监听任何终端信号或者终端退出的信号。 每个os.Signal通道监听自己的事件。 Go还提供了停止通知通道的功能,…

Angular实现图片点击缩放组件

Angular实现图片点击缩放组件 本文将设计一个用于网页中点击图片缩放的 Angular 组件。阅读需要注意的是,本文只讲解原理和设计理念,不过多讲解Angular框架的API。 线demo。 需求分析 一般用户在阅读文章的时候,由于种种限制,图片会比较小,所以需要提供一个可以查看图…