边缘化搭建DotNet Core 2.1 自动化构建和部署环境(上)

写在前面

  写这篇文章的缘由是由于笔者的对新兴技术方向有所追求,但个人资产有限,只能容许购买一台阿里云低配1核2G服务器。服务器上搭建了 Centos7 & Docker & Jenkins & ASP.NET Core 2.0 自动化发布和部署 环境后牺牲了大部分性能。造成了一个基于angular编写的前端应用无法自动构建,构建时一直出错,通过错误信息各种搜索并无任何结果。经过反反复复的的试验,用一台1核1G的Debain虚拟机去手动构建并成功,最后经过排查,确定是因为基于Java运行时的Jenkins对内存造成了一个巨大的占用。无奈之举,因为穷,导致不能升级服务器,但又想享受自动构建带来的快感,只好另辟蹊径,将Jenkins这个自动化构建和部署服务进行边缘化,以便去享受自动化构建和部署带来的快感。本文章考虑篇幅问题分为上下两篇。

先决条件

一块根据教程安装Debain系统的树莓派2B+ (低于2B+型号的树莓派性能没经过试验,读者可以尝试)

树莓派安装Docker CE

  本文已根据教程安装Debain系统,接下来安装的Docker的操作过程都是基于Debain系统,若读者的树莓派安装的是其他版本的系统,可另阅读Docker官方提供的安装操作说明,本文就不提供其他系统版本的操作步骤了。

设置Docker源仓库

1.更新 apt 包索引:

$ sudo apt-get update

2.安装包

$ sudo apt-get -y install      apt-transport-https      ca-certificates      curl      gnupg2      software-properties-common

3.添加Docker的官方GPG密钥:

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88

4.设置稳定的Docker源仓库

$ echo "deb [arch=armhf] https://download.docker.com/linux/debian \
     $(lsb_release -cs) stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list

安装Docker CE

1.更新 apt 包索引:

$ sudo apt-get update

2.安装最新版本的Docker CE

$ sudo apt-get install docker-ce

3.运行Hello World 测试

$ sudo docker run armhf/hello-world

构建镜像

  因为树莓派本身的CPU架构是ARM,博客园存在大量基于docker搭建Jenkins环境的教程,所依赖官方的镜像都是基于x86架构的CPU构建的,所以我们需要重新根据ARM架构的CPU去构建一个可以运行的Jenkins镜像。并通过通过二次自定义构建的方式,修改镜像本身的配置信息。

  Jenkins官方在Docker Hub上面的镜像是没有ARM版本的,如果直接使用官方在Dokcer Hub上的镜像直接自定义构建会出现错误。笔者在GitHub上找到一个Jenkins for Docker on Raspberry Pi的项目,里面包含构建Jenkins的Dockerfile。经过笔者的反复验证,排除网路环境,设备原因,确信这个项目的Dockerfile是存在问题的。笔者到这里曾经想过放弃,但是既然都这么穷,又没有钱买新的云服务,只好继续硬着头皮往下研究出现错误的原因。最后经过不断的试验,成功解决了这个问题,随后笔者Fork这个项目修复问题并提交到GitHub。如果真正尝试构建ARM版本失败的读者,看了这篇文章之后,就少走弯路了。项目GitHub地址:https://github.com/Loongle/rpi-jenkins

构建Jenkins ARM镜像

1.克隆GitHub项目:

$ git clone https://github.com/Loongle/rpi-jenkins

2.进入项目并开始构建:

$ cd rpi-jenkins
$ sudo docker build . -t jenkins

3.读者可以忽略此步骤,直接到构建自定义镜像的操作。

构建自定义镜像

  单纯的直接构建Jenkins并不能符合本文的主题,现在我们需要通过自定义Dockerfile来扩充我们原本的Jenkins环境设置。当然,如果直接修改笔者GitHub项目里的Dockerfile进行构建,那么这一步也是可以忽略的。见仁见智,看读者喜欢怎么方便怎么来,喜欢怎么折腾就怎么折腾,此处构建没有固定的操作方式,只要能确保树莓派能运行Jenkins就Ok啦。

1.新建Dockerfile:

$ cd ~
$ sudo nano Dockerfile

2.查看docker组id:

cat /etc/group

3.在Dockerfile插入如下代码后,执行保存:

FROM jenkins  # 可将jenkins 替换 loongle/rpi-jenkins:latest 以解决自己构建Jenkins镜像速度慢的问题
USER root

ARG dockerGid=996 # 填写/etc/group查到的id
#切换阿里云加速
RUN echo ‘‘ > /etc/apt/sources.list.d/jessie-backports.list   && echo ‘‘ >  /etc/apt/sources.list   && echo ‘‘ > /etc/apt/raspi.list   && echo "deb http://mirrors.aliyun.com/raspbian/raspbian/ stretch main contrib non-free rpi" > /etc/apt/sources.list   && echo "deb-src http://mirrors.aliyun.com/raspbian/raspbian/ stretch main contrib non-free rpi" >> /etc/apt/sources.list   && echo "deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ jessie main" >> /etc/apt/sources.list.d/raspi.list
#安装依赖关系
RUN apt-get install      apt-transport-https      ca-certificates      curl      gnupg2      software-properties-common
#安装docker-compose
RUN wget https://bootstrap.pypa.io/get-pip.py \
  && python get-pip.py   && pip install docker-compose

RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group 

#修改时区
RUN rm -rf /etc/localtime && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime   &&  echo ‘Asia/Shanghai‘ > /etc/timezone

USER jenkins

4.自定义Dockerfile执行构建:

$ sudo docker build . -t auto-jenkins

5.等待构建完成后,启动 Jenkins 即可:

$ sudo docker run --name=jenkins --restart=always --add-host master:192.168.6.200 -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/bin/docker -v /var/jenkins_home:/usr/local/jenkins/ -d auto-jenkins

写在后面

  至此,我们已经成功在树莓派上运行 Jenkins ,笔者将在下一篇中讲述从树莓派上的Jenkins构建项目并发布到云服务器上的Docker环境中。希望正在屏幕上阅读本文的你,能顺利在树莓派上运行你的Jenkins 环境。构建途中出现任何疑问,欢迎在评论区中留言。

参考文献

https://docs.docker.com/install/linux/docker-ce/debian/

https://github.com/Loongle/rpi-jenkins

原文地址:https://www.cnblogs.com/LongJiangXie/p/9964925.html

时间: 2024-10-11 11:14:56

边缘化搭建DotNet Core 2.1 自动化构建和部署环境(上)的相关文章

边缘化搭建 DotNet Core 2.1 自动化发布和部署(下)

写在前面 本篇文章是上一篇边缘化搭建 DotNet Core 2.1 自动化发布和部署(上)的后续操作,本文主要讲解如何开启Docker Remote API,开启Remote API后的权限安全问题.配置Jenkins构建项目,并在云服务器上构建成功.废话不多说,我们一起来动手操作吧. 先决条件 1.一台Debain 9系统 x86 服务器 硬件环境:1核2G 40G硬盘. 2. x86服务器成功安装并运行Docker环境(本文不阐述安装过程,读者可查阅参考文献) 2.根据上一篇边缘化搭建 D

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(一)(网内首发超详细版)

目录结构如下: 目录 1说明及环境介绍3 1.1说明3 1.2环境准备及格式约定4 2 Linux下apache搭建svn服务器4 2.1 apache安装部署4 2.2 svn安装部署5 2.3整合svn和apache6 2.4 ssl方式部署apache7 2.4.1安装apache7 2.4.2安装svn7 2.4.2 部署认证8 3 Linux下svn独立服务器方式部署9 3.1安装SVN9 3.2 配置环境10 3.3 权限配置样例11 3.4 启动SVN服务器12 3.5 访问方式1

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(四)(网内首发超详细版)

6安装maven 下载地址:http://maven.apache.org/download.cgi 解压安装 unzip –o apache-maven-3.2.1-bin.zip mv apache-maven-3.2.1 maven 配置环境变量 MAVEN_HOME=/usr/local/maven export PATH=$MAVEN_HOME/bin:$PATH 7 java环境自动构建部署 7.1 新建job 输入名称如下图 输入SVN服务器地址 注意:上面已经认证过了,因此没有报

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(二)(网内首发超详细版)

2.4 ssl方式部署apache 2.4.1安装apache ./configure --prefix=/usr/local/apache2 --enable-dav --enable-ssl--enable-so --enable-mods-shared=all make && make install 2.4.2安装svn 安装apr-1.4.6.tar.gz.apr-util-1.5.1.tar.gz.neon-0.29.6.tar.gz同2.2章节部分 unzip sqlite-

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(三)(网内首发超详细版)

3.3 权限配置样例 注意: * 权限配置文件中出现的用户名必须已在用户配置文件中定义. * 对权限配置文件的修改立即生效,不必重启svn. 用户组格式: [groups] = , 其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔. 版本库目录格式: [<版本库>:/项目/目录] @<用户组名> = <权限> <用户名> = <权限> 其中,方框号内部分可以有多种写法: [/],表示根目录及以下,根目录是svnserve启动时指定的,我们

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(五)(网内首发超详细版)

8 Subversion FAQ 8.1 官方FAQ网址 http://subversion.apache.org/faq.zh.html 8.2 svn遇到错误总结 8.2.1 svn不显示日志 解决办法:1)找到你SVN版本库下conf文件夹下的svnserve.conf文件2)打开svnserve.conf文件,将其中名为anon-access的一项设置为anon-access=none. 这样的话,日志文件即可显示正常. 8.2.2 版本冲突问题 svn update --usernam

GeneXus DevOps 自动化构建和部署流程

以下视频详细介绍了GeneXus DevOps自动化构建和部署流程,包括通过MS Bulid来管理自动化流程,自动化的架构,以及在GeneXus Server上使用Jenkins做为自动化引擎. 视频链接:https://v.qq.com/x/page/e3048y6pl9e.html(视频为英文语音和英文字幕) 原文地址:https://www.cnblogs.com/genexusblog/p/12191319.html

Centos7 &amp; Docker &amp; Jenkins &amp; ASP.NET Core 2.0 自动化发布和部署

写在前面 Docker一直很火热,一直想把原本的Jenkins自动部署工具搬到Docker上面,无奈今年一直忙于各种事情,迟迟未实施这个事情,正好迎来了dotnet core 2.0 的正式发布,升级项目的同时,顺便直接将Jenkins搬到Docker上.为什么要写这篇文章呢?因为找过相关的资料,大多数文章都是基于Ubuntu 安装.net core 又或者 GitLab 进行持续集成 自动部署等等等,并未有人尝试过Centos7.3 上部署 Jenkins 并且 构建 ASP.NET CORE

Ubuntu运行DOTNET Core MVC(基础,非部署项目)

一. 配置 Ubuntu18.04.3 LTS DOTNET Core3.0 SDK 1.更新 sudo apt-get update 二.安装DOTNET Core SDK 1.首先注册微软密钥以及所需依赖 wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-micro