连续集成意味着,从您开始项目的那一刻起,经常投入到MAIN会自动部署。连续部署意味着,从开始项目的那一刻起,您就始终在具有安全的公共连接的远程服务器上实时构建应用程序的实时构建。
运行ezinnit后,您的WebApp将在您的服务器上运行,现场直播您选择的HTTPS域,并且将来对您的主要分支的承诺将自动部署到实时应用程序。
在一个完全自动化的过程中,Ezinnit初始化并推动您的GitLab存储库和部署管道,然后在服务器上安装Dokku和GitLab Runner。您的gitlab存储库被配置为自动向您的主分支部署到服务器的任何提议,在该分支机构中,您的应用程序是在容器中自动构建并在您的公共HTTPS域中提供的。
Ezinnit包括用于新Django,烧瓶和FastApi项目的应用程序模板。这些模板旨在启动全新的项目,并创建一个部署的工作网站。
开发您知道将部署的应用程序,因为它们总是部署的。
下载并安装ezinnit:
在您项目的根目录中,运行:
mkdir ezinnit
wget https://raw.githubusercontent.com/johnsyncs/ezinnit/main/ezinnit -P ezinnit
bash ezinnit/ezinnit
您将被提示:
- gitlab用户名
- gitlab域(如果您的帐户是gitlab.com,则gitlab域是
gitlab.com ) - Gitlab个人访问令牌
- 应用名称(也成为您的GitLab存储库名称)
- 远程服务器的IP地址
- 您希望指向新应用的域或子域,例如:
mynewapp.mydomain.com - 用于在Letsencrypt注册的电子邮件地址
- 可选应用模板:Django,烧瓶或FastApi
要求:
- 安装了应用程序的Python虚拟环境(或从头开始制作Django项目,请参见ReadMe的底部)
- git
- GitLab帐户(Gitlab.com帐户必须验证以使用GitLab跑步者,但验证是免费的)
- 运行Ubuntu 18.04/20.04/22.04如何创建数字海洋液滴的服务器
- 您当地的机器的SSH密钥在GitLab上注册
- 您当地机器的SSH键添加到新服务器的允许主机(数字海洋教程)
- 要使您的域工作,您需要一个DNS“ A”记录,将您的域指向服务器IP地址(在运行Ezinnit之前创建DNS”记录)
警告!
- 该脚本在远程服务器上创建新的SSH键!
- 如果选择一个应用模板,则Ezinnit将在文件上写入,包括您的procfile,settings.py,main.py等。仅将模板用于全新项目。
Ezinnit做了什么
- 检查ezinnit.config,如果不存在,它会提示您获取值并创建ezinnit.config文件
- 如果您的项目目录中没有.gitignore,请使用TopTotal来创建.gitignore文件
- 运行应用模板脚本如果您选择了一个(此版本中包括Django,Blask和FastApi)
- 在项目目录中创建用于自动部署的GitLab管道(.gitlab-ci.yml)
- 如果您的项目目录中没有要求。
- 初始化GIT存储库,将初始分支设置为Main,将遥控器设置为新的GitLab存储库,并将其推向Gitlab
- 从gitlab获取新存储库的跑步者令牌
- 将ezinnit.config复制到服务器
- 在远程服务器上运行服务器初始化脚本,该脚本执行以下操作:
- 在服务器上创建新的SSH键
- 将服务器的SSH键上传到GitLab存储库
- 下载并在服务器上安装Dokku(这需要几分钟)
- 在服务器上创建Dokku应用
- 在服务器上设置Dokku应用的域
- 将应用程序端口设置为服务器上的80:5000
- 下载并在服务器上创建GitLab跑步者
- 在服务器上注册GitLab Runner
- 下载并在服务器上安装Dokku-letsencrypt
- 从服务器上使用TLS证书在服务器上启用对服务器上的应用程序进行加密
- 在服务器上添加Chron作业以自动续订TLS证书
- 对于Django,烧瓶和Fastapi,创建并运行一个脚本:
ezrun找到一个开放端口并在开发环境中本地运行 - 当Ezinnit完成时,GitLab将自动开始将应用程序部署到服务器。 Ezinnit将为您提供指向新存储库的链接,您可以在其中检查部署状态。
在开发环境中找到一个开放端口并运行Django,烧瓶或Fastapi Ezinnit模板应用程序:
现在和永远部署
每当启动新的WebApp项目时,请使用Ezinnit。按下按钮,您的项目将以GitLab存储库开头,该存储库自动部署主要投入到您选择的服务器上的容器,您的应用程序正在运行并在您选择的域中可用。
现在,您可以为您的应用程序的真实环境开发,以即时反馈有关变化将如何影响现实世界的可用性。您立即知道您的应用程序是否会在容器中构建,以及它在实时服务器上的行为。
安全的生产环境是默认环境,开发模式是例外 - 使开发安全。
当您使用Ezinnit启动项目时,您确实在做CICD。从第一天起,您就可以在自己的域上使用自己的服务器上的实时应用程序运行,因此您可以专注于只能做什么。
从头开始启动Django项目:
mkdir ezinnit
wget https://raw.githubusercontent.com/johnsyncs/ezinnit/main/ezinnit%20template%20scripts/django.innit -P ezinnit
bash ezinnit/django.innit
约翰·休伊特(John Hewitt)
罗伯特·卡洛尔(Robert Carroll)