【运维笔录】局域网实现项目的CI/CD,Docker+Gitea+Drone搭建轻量级自动化部署平台
一、安装Docker
1.1 安装excpet
$ apt-get -f install expect
1.2 编写执行Docker安装脚本
- 编写
docker_dep.exp脚本
#!/usr/bin/expect
set timeout 5
spawn apt install apt-transport-https ca-certificates software-properties-common curl
expect "Y/n"
send "y\n"
interact
- 编辑
docker.sh脚本
#!/bin/bash
expect docker_dep.exp
echo "安装docker基本依赖完成"
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | apt-key add -
echo "添加docker gpg key完成"
add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian stretch stable"
echo "添加docker源完成"
apt update
echo "更新apt源完成"
expect docker.exp
echo "安装docker-ce完成"
echo "{
\"registry-mirrors\": [\"https://exmmtkzp.mirror.aliyuncs.com\"]
}" > /etc/docker/daemon.json
systemctl restart docker
echo "更新docker镜像为阿里云完成"
- 编辑
docker.exp脚本
#!/usr/bin/expect
set timeout 5
spawn apt-get install docker-ce
expect "Y/n"
send "y\n"
interact
- 执行
docker.sh脚本
Docker运行Gitea
1)先将系统22端口空闲出来,即将默认ssh端口改为其他端口。
2)启动Gitea
# 创建文件目录
mkdir -p gitea/data
# 启动gitea
docker run -d --privileged=true --restart=always --name=gitea -p 22:22 -p 3000:3000 -v $PWD/gitea/data:/data gitea/gitea
# 移除旧容器
docker stop gitea && docker rm gitea
如果出现添加ssh的key到gitea服务器上,仍然无法推送,可尝试新建ssh key再配置一次。
Docker运行Drone
# 生成open SSL, 然后赋值给下面的DRONE_RPC_SECRET
openssl rand -hex 16
# docker 启动 drone,先在gitea中添加Oauth2的ClientID和ClientSecret给drone
docker run \
--volume=$PWD/drone:/data \
--env=DRONE_GITEA_SERVER=http://gitea.sleepyocean.cn \
--env=DRONE_GITEA_CLIENT_ID=2a059034-9124-47a7-9394-1a9919c7058e \
--env=DRONE_GITEA_CLIENT_SECRET=rAmdK9kFGj12Zqqib0XMJmYmYTFPk1hegnRX7KK5JA02 \
--env=DRONE_RPC_SECRET=9583246268b343abfc51410a6c418622 \
--env=DRONE_SERVER_HOST=drone.sleepyocean.cn \
--publish=10080:80 \
--publish=10443:443 \
--restart=always \
--detach=true \
--name=drone \
drone/drone:2.11
# docker 启动 pipeline for drone
docker run -d \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=drone.sleepyocean.cn:10080 \
-e DRONE_RPC_SECRET=9583246268b343abfc51410a6c418622 \
-e DRONE_DEBUG=true \
-p 10081:3000 \
--restart always \
--name ssh-runner \
drone/drone-runner-ssh:linux-amd64
# 停止并删除容器
docker stop drone && docker rm drone
【运维笔录】局域网实现项目的CI/CD,Docker+Gitea+Drone搭建轻量级自动化部署平台的更多相关文章
- KubeSphere CI/CD+GitLab+Harbor将Spring Boot项目部署至Kubernetes
上一篇文章分享了如何在 KubeSphere 对公共的代码仓库 GitHub 和镜像仓库 DockerHub 创建流水线,本文将继续使用 KubeSphere,基于 Harbor 和 GitLab 创 ...
- SpringBoot项目的CI配置 # 安全变量
运行GitLab Runner容器 参考Run GitLab Runner in a container - Docker image installation and configuration 执 ...
- flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成
理想的程序员必须懒惰,永远追随自动化法则.Automating shapes smarter future. 在一个 Python 项目的开发过程中可能会做的事情:编译.手动或自动化测试.部署环境配置 ...
- 使用gitlab自带的ci/cd实现.net core应用程序的部署
这两天在折腾持续集成和交付,公司考虑使用gitlab自带的ci/cd来处理,特此记下来整个流程步骤. 好记性不如一支烂笔头---尼古拉斯-古人言 第一步: 安装gitlab,这个自然不用多说 第二步: ...
- Docker环境下的前后端分离项目部署与运维(十二)使用Portainer管理Docker
安装 docker hub地址:https://hub.docker.com/r/portainer/portainer/ # 每台服务器都要安装 docker pull portainer/port ...
- .Net在Windows上使用Jenkins做CI/CD的那些事
背景 最近入职了一家新公司,公司各个方面都让我非常的满意,我也怀着紧张与兴奋的心情入职后,在第一天接到了领导给我的第一个任务——把整个项目的依赖引用重新整理并实施项目的CI/CD. 本篇的重点主要分享 ...
- 近期关于CI/CD策略以及git分支模型的思考
近两个月由于个人处于新环境.新项目的适应阶段,没怎么提笔写些文章.中间有好几个想法想记录下来分享,但受限于没有很好的时间段供自己总结思考(也可以总结为间歇性懒癌和剧癌发作),便啥也没有更新.借这个周末 ...
- 如何搭建安全的 CI/CD 管道?
Eolink 前端负责人黎芷君进行了<工程化- CI / CD>的主题演讲,围绕 CI/CD 管道安全的实践,分享自己在搭建 CI/CD 管道过程中所总结的重要经验,与开发者深入讨论 &q ...
- 实践分享!GitLab CI/CD 快速入门
用过 GitLab 的同学肯定也对 GitLab CI/CD 不陌生,GitLab CI/CD 是一个内置在 GitLab 中的工具,它可以帮助我们在每次代码推送时运行一系列脚本来构建.测试和验证代码 ...
- 创建和使用CI / CD管道【译】【原】
在GitLab 8.8中引入. 介绍 管道是持续集成,交付和部署的顶级组件. 管道包括: 定义要运行的作业的作业.例如,代码编译或测试运行. 定义何时以及如何运行的阶段.例如,该测试仅在代码编译后运行 ...
随机推荐
- BLS签名算法
前言 [失踪人口回归 (*/ω\*)] 真的好久好久没有更新了,因为自己也还在找方向,但还是把新学的知识记录在博客里.今天要介绍的是BLS签名算法. 一.BLS签名算法简介 BLS签名算法[1]是由斯 ...
- phoenix操作HBase
phoenix操作HBase 一.Phoenix简介 Phoenix,由saleforce.com 开源的一个项目,后又捐给了Apache. 它相当于一个Java 中间件,帮助开发者,像使用jdbc ...
- spring boot+vue前后端项目的分离(我的第一个前后端分离项目)
文章目录 1.前端vue的搭建 2.后端项目的构建 pom文件中引入的jar包 yml文件用来配置连接数据库和端口的设置 application.property进行一些整合 controller层( ...
- 驱动开发:内核运用LoadImage屏蔽驱动
在笔者上一篇文章<驱动开发:内核监视LoadImage映像回调>中LyShark简单介绍了如何通过PsSetLoadImageNotifyRoutine函数注册回调来监视驱动模块的加载,注 ...
- Linux之Docker-01
一.镜像基础命令 1.docker version [root@DY-Ubuntu-01 ~]#docker version #查看 Docker 版本 2.docker ...
- 我的Spark学习笔记
一.架构设计 Driver根据用户代码构建计算流图,拆解出分布式任务并分发到 Executors 中去:每个Executors收到任务,然后处理这个 RDD 的一个数据分片子集 DAGSchedule ...
- JS数据结构与算法-栈结构
一.认识栈结构 栈也是一种非常常见的数据结构,并且在程序中的应用非常广泛 数组 我们知道数组是一种线性结构,并且可以在数组的任意位置插入和删除数据. 但是有时候,我们为了实现某些功能,必须对这种任意性 ...
- <五>关于类的各类成员
类的各种成员-> 成员方法 & 成员变量 普通的成员方法=>编译器会添加一个this形参变量 1:属于类的作用域 2:调用该方法时,需要依赖一个对象,而且常对象不能调 3:可以任意 ...
- Java-(array)数组的基本概念 及 Java内存划分
(array)数组的基本概念 数组的概念:是一种容器,可同时存放多个数据值 数组的特点: 1.数组是一种引用数据类型 2.数组当中的多个数据,类型必须统一 3.数组的长度在程序运行期间不可改变 数组的 ...
- Codeforces Round #834 (Div. 3) A-G
比赛链接 A 题目 知识点:模拟. 确定开头字母,然后循环比较即可. 时间复杂度 \(O(n)\) 空间复杂度 \(O(n)\) 题解 #include <bits/stdc++.h> # ...