Gitness CI

ssh客户端配置 拉取ssh镜像 1 docker pull testcontainers/sshd:latest 启动容器 1 docker run -it --name sshd testcontainers/sshd:latest sh 配置服务器密钥 生成密钥 1 ssh-keygen -t rsa -b 4096 生成后选择存储路径,回车默认即可 存储密钥后输入密码,由于是自动化脚本无需设置,直接回车 复制密钥 1 ssh-copy-id user@remote_host 执行后输入yes确定链接 连接后输入password完成连接 执行命令 非交互式命令 1 ssh user@remote_host 'ls -l /path/to/directory' 文件传输 1 scp local_file user@remote_host:/path/to/remote/directory 打包容器并将镜像上传仓库 若无需上传私有仓库可跳过此步骤 打包容器 1 docker commit sshd registry_host/sshd:latest registry_host为镜像仓库地址 登录远程仓库 1 docker login registry_host 按照提示输入用户名和密码 推送镜像 1 docker push registry_host/sshd:latest 配置Gitness 关于基础项目创建与仓库配置可参考Gitness文档,这边不再赘述。 ...

2024-10-09 · 4 分钟 · Nebula

私有服务器搭建过程

引 今天整理了一下常用的服务,加上有些服务因为安全问题直接暴露到公网不太合适,需要通过VPN访问,所以干脆重新部署一下服务器, 记录一下搭建过程 作为一个云原生和容器化的脑残粉,遵循可以容器绝不折腾的思想,以容器化部署为主,本文中暂时不提及二进制部署方式 前置需求 配置方面网上有很多相关教程了,这边就不赘述了,以硬性要求为主,有些不是必须的前置需求本次暂时忽略 1. 一个公网服务器 2. 一个看起来还不错的域名 3. 一个比较稳定的魔法工具 环境准备 开启root登录(ubuntu) 1 sudo passwd root 按照提示输入密码,成功后会提示passwd: password updated successfully 1 sudo vi /etc/ssh/sshd_config # 编辑ssh配置文件 将PermitRootLogin参数修改为yes 将PasswordAuthentication参数修改为yes 1 sudo service ssh restart # 重启ssh服务 更新软件包 1 sudo apt update 安装ShellCrash 魔法工具,一条指令即可实现安装 1 export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && bash /tmp/install.sh && source /etc/profile &> /dev/null 根据提示进行安装即可,订阅链接请自行购买 安装Docker 若之前安装过docker请务必先卸载再继续执行,本文假设你是全新vps或者第一次安装 若当前apt源非官方源,ShellCrash可能会导致其无法正常使用,请更换官方源或者关闭ShellCrash进行安装 1. 安装必要支持 1 sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release 2. 添加 Docker 官方 GPG key 这一步可能需要开启VPN ...

2024-10-06 · 6 分钟 · Nebula

Kotlin & Springboot

开发技巧 代码结构 常用代码范例 工具类 统一响应结构 响应结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 class ScResult<T> private constructor( private val code: Int, private val message: String, private val data: T? ) { private constructor(enum: ScResultEnum, data: T? = null) : this( enum.code, enum.message, data ) companion object { fun <T> ok(data: T? = null): ScResult<T> { return ScResult(ScResultEnum.OK, data) } fun <T> error(data: T? = null): ScResult<T> { return ScResult(ScResultEnum.INTERNAL_SERVER_ERROR, data) } fun <T> make(enum: ScResultEnum, data: T? = null): ScResult<T> { return ScResult(enum, data) } fun <T> make(code: Int, message: String, data: T? = null): ScResult<T> { return ScResult(code, message, data) } } override fun toString(): String { return "ScResult(code=$code, message='$message', data=$data)" } } 响应枚举 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 enum class ScResultEnum(val code: Int, val message: String) { OK(200, "Success"), // 请求成功 CREATED(201, "Created"), // 请求成功并且创建了新的资源 ACCEPTED(202, "Accepted"), // 请求已接受,但尚未处理 NO_CONTENT(204, "No Content"), // 请求成功,但没有返回内容 MOVED_PERMANENTLY(301, "Moved Permanently"), // 资源已永久移动到新位置 FOUND(302, "Found"), // 资源临时移动到新位置 SEE_OTHER(303, "See Other"), // 重定向到另一个 URI NOT_MODIFIED(304, "Not Modified"), // 资源未被修改 BAD_REQUEST(400, "Bad Request"), // 请求无效或格式错误 UNAUTHORIZED(401, "Unauthorized"), // 需要身份验证 FORBIDDEN(403, "Forbidden"), // 服务器拒绝请求 NOT_FOUND(404, "Not Found"), // 资源未找到 METHOD_NOT_ALLOWED(405, "Method Not Allowed"), // 请求方法不允许 NOT_ACCEPTABLE(406, "Not Acceptable"), // 服务器无法生成请求的内容 PROXY_AUTHENTICATION_REQUIRED(407, "Proxy Authentication Required"), // 需要代理身份验证 REQUEST_TIMEOUT(408, "Request Timeout"), // 请求超时 CONFLICT(409, "Conflict"), // 请求冲突 GONE(410, "Gone"), // 资源已永久删除 LENGTH_REQUIRED(411, "Length Required"), // 需要 Content-Length 头 PRECONDITION_FAILED(412, "Precondition Failed"), // 预条件失败 PAYLOAD_TOO_LARGE(413, "Payload Too Large"), // 请求体过大 URI_TOO_LONG(414, "URI Too Long"), // URI 过长 UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"), // 媒体类型不受支持 RANGE_NOT_SATISFIABLE(416, "Range Not Satisfiable"), // 请求范围不可满足 EXPECTATION_FAILED(417, "Expectation Failed"), // 期望值失败 IM_A_TEAPOT(418, "I'm a teapot"), // 只为趣味性,表示服务器是茶壶 UPGRADE_REQUIRED(426, "Upgrade Required"), // 需要升级协议 INTERNAL_SERVER_ERROR(500, "Internal Server Error"), // 服务器内部错误 NOT_IMPLEMENTED(501, "Not Implemented"), // 服务器不支持请求的方法 BAD_GATEWAY(502, "Bad Gateway"), // 网关或代理服务器收到无效响应 SERVICE_UNAVAILABLE(503, "Service Unavailable"), // 服务不可用 GATEWAY_TIMEOUT(504, "Gateway Timeout"), // 网关或代理服务器超时 HTTP_VERSION_NOT_SUPPORTED(505, "HTTP Version Not Supported"), // HTTP 版本不受支持 NETWORK_AUTHENTICATION_REQUIRED(511, "Network Authentication Required"); // 需要网络认证 }

2024-08-17 · 2 分钟 · Nebula