一、安装Docker

1.1 安装excpet

$ apt-get -f install expect

1.2 编写执行Docker安装脚本

  1. 编写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
  1. 编辑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镜像为阿里云完成"
  1. 编辑docker.exp脚本
#!/usr/bin/expect

set timeout 5
spawn apt-get install docker-ce
expect "Y/n"
send "y\n"
interact
  1. 执行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搭建轻量级自动化部署平台的更多相关文章

  1. KubeSphere CI/CD+GitLab+Harbor将Spring Boot项目部署至Kubernetes

    上一篇文章分享了如何在 KubeSphere 对公共的代码仓库 GitHub 和镜像仓库 DockerHub 创建流水线,本文将继续使用 KubeSphere,基于 Harbor 和 GitLab 创 ...

  2. SpringBoot项目的CI配置 # 安全变量

    运行GitLab Runner容器 参考Run GitLab Runner in a container - Docker image installation and configuration 执 ...

  3. flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成

    理想的程序员必须懒惰,永远追随自动化法则.Automating shapes smarter future. 在一个 Python 项目的开发过程中可能会做的事情:编译.手动或自动化测试.部署环境配置 ...

  4. 使用gitlab自带的ci/cd实现.net core应用程序的部署

    这两天在折腾持续集成和交付,公司考虑使用gitlab自带的ci/cd来处理,特此记下来整个流程步骤. 好记性不如一支烂笔头---尼古拉斯-古人言 第一步: 安装gitlab,这个自然不用多说 第二步: ...

  5. Docker环境下的前后端分离项目部署与运维(十二)使用Portainer管理Docker

    安装 docker hub地址:https://hub.docker.com/r/portainer/portainer/ # 每台服务器都要安装 docker pull portainer/port ...

  6. .Net在Windows上使用Jenkins做CI/CD的那些事

    背景 最近入职了一家新公司,公司各个方面都让我非常的满意,我也怀着紧张与兴奋的心情入职后,在第一天接到了领导给我的第一个任务——把整个项目的依赖引用重新整理并实施项目的CI/CD. 本篇的重点主要分享 ...

  7. 近期关于CI/CD策略以及git分支模型的思考

    近两个月由于个人处于新环境.新项目的适应阶段,没怎么提笔写些文章.中间有好几个想法想记录下来分享,但受限于没有很好的时间段供自己总结思考(也可以总结为间歇性懒癌和剧癌发作),便啥也没有更新.借这个周末 ...

  8. 如何搭建安全的 CI/CD 管道?

    Eolink 前端负责人黎芷君进行了<工程化- CI / CD>的主题演讲,围绕 CI/CD 管道安全的实践,分享自己在搭建 CI/CD 管道过程中所总结的重要经验,与开发者深入讨论 &q ...

  9. 实践分享!GitLab CI/CD 快速入门

    用过 GitLab 的同学肯定也对 GitLab CI/CD 不陌生,GitLab CI/CD 是一个内置在 GitLab 中的工具,它可以帮助我们在每次代码推送时运行一系列脚本来构建.测试和验证代码 ...

  10. 创建和使用CI / CD管道【译】【原】

    在GitLab 8.8中引入. 介绍 管道是持续集成,交付和部署的顶级组件. 管道包括: 定义要运行的作业的作业.例如,代码编译或测试运行. 定义何时以及如何运行的阶段.例如,该测试仅在代码编译后运行 ...

随机推荐

  1. 配置DNS域名解析服务

    概:   DNS技术作为互联网基础设施中的重要一环,为用户提供不间断.稳定且快速的域名查询服务,保证互联网正常运转.在互联网中,用户基本上都是基于DNS服务,使用域名访问网络上的计算机,DNS服务是我 ...

  2. vue中将验证表单输入框的方法写在一个js文件中(表达式验证邮箱、身份证、号码、两次输入的密码是否一致)

    文章目录 1.实现的效果 2.编写的js文件(这里写在了api文件下) 3.在vue页面中引入(script) 4.页面代码 1.实现的效果 20220606_154646 2.编写的js文件(这里写 ...

  3. 抛砖系列之redis监控命令

    前言 redis是一款非常流行的kv数据库,以高性能著称,其高吞吐.低延迟等特性让广大开发者趋之若鹜,每每看到别人发出的redis故障报告都让我产生一种居安思危,以史为鉴的危机感,恰逢今年十一西安烟雨 ...

  4. LcdTools如何实现PX01设置不同的画面不同的背光亮度

    背光驱动分两种原理:恒压模式和恒流模式.恒压背光顾名思义提供恒定电压即可,这种屏正常来讲自带背光驱动电路,只需提供背光工作电压.背光使能和背光调光占空比控制.恒流背光指屏的背光只有纯灯串,需外部提供相 ...

  5. webRTC demo

    准备: 信令服务 前端页面用于视频通话 demo github 地址. 前端页面 为了使 demo 尽量简单,功能页面如下,即包含登录.通过对方手机号拨打电话的功能.在实际生成过程中,未必使用的手机号 ...

  6. 我要涨知识 —— TypeScript 常见面试题(一)

    1.ts 中的 any 和 unknown 有什么区别? unknown 和 any 的主要区别是 unknown 类型会更加严格:在对 unknown 类型的值执行大多数操作之前,我们必须进行某种形 ...

  7. Python基础之网络编程:2、OSI协议之七层协议

    目录 Python基础之网络编程 一.网络编程前戏 二.OSI七层协议 简介: 1.物理连接层 2.数据链路层 网络相关专业名词 3.网络层 4.传输层 Python基础之网络编程 一.网络编程前戏 ...

  8. python小练习:涉及print,json,numpy

    枚举参考文件夹中的文件,并与待比较文件件中的同名文件比较是否一致. #! /usr/bin/python3.6 # -*- coding:utf-8 -*- import os import sys ...

  9. Mysql5.6.44版本安装及基本配置

    内容概要 存储数据的演变史 数据库软件应用史 MySQL简介 MySQL下载及安装 MySQL配置 存储数据的演变史 1.文本文件: 文件路径不固定,并且数据格式不统一 2.软件开发目录规范: 规定了 ...

  10. 群晖NAS搭建外网可访问的calibre

    一.在群晖docker上安装calibre-web 1. 下载相关的镜像文件 打开Docker后点击左侧注册表,在上方搜索栏搜索calibre 然后我们选择使用 technosoft2000/cali ...