GitHub Actions 部署前端项目

简介: 先把代码 npm run build,把生成的 dist 拿来,登录服务器,到指定目录页面,打开 ftp,手动上传 dist 中的文件

我要部署一个项目,我大喊!!


怎么做?


先把代码 npm run build,把生成的 dist 拿来,登录服务器,到指定目录页面,打开 ftp,手动上传 dist 中的文件


其中你要开启你的 nginx 服务


你每一次想部署项目,就要先在本地打包,然后登录服务器,再打开 ftp 服务,再手动上传,这一来一回太麻烦,而且这种情况不利于多人开发,依赖的环境也许受操作系统的影响等等


总之,这不便于开发者以及不科学


我们需要持续集成


在公司中我们可以搭建 GitLab 亦或是 用 Jenkins,但是对个人,独立开发者或者只有五人以下的小公司来说,有什么可以帮我们实现自动化工作流的呢?


Github 推出了 Github Actions


GitHub Actions 是什么



GitHub Actions[1] 是 GitHub 的持续集成服务[2],于 2018 年 10 月推出[3]


持续集成由很多操作组成,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。GitHub 把这些操作就称为 actions


GitHub 做了一个官方市场[4],可以搜索到他人提交的 actions。另外,还有一个 awesome actions[5] 的仓库,也可以找到不少 action。


基本概念



GitHub Actions 有一些自己的术语。


(1)workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。


(2)job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。


(3)step(步骤):每个 job 由多个 step 构成,一步步完成。


(4)action (动作):每个 step 可以依次执行一个或多个命令(action)。


具体可以前往 阮一峰的这篇  GitHub Actions 入门教程[6] 了解一二


实操



我们的目的,通过 Github Action 把一个单页面应用部署到 云服务器上


具体可参考 使用  使用 Github Action 部署项目到云服务器[7]  中的操作,我讲讲在使用这位大哥写的 SFTP-Deploy-Action@v1.0 action 时遇到的坑


常见问题:



首先遇到 Load key "../private_key.pem": invalid format 的错误。


解决方案 ssh-keygen -m PEM 生成 新 key


我遇到类似的问题,以为要更新我的私钥,后来发现不是,是因为我的私钥是 openssh,改成 rsa 就没报这个错误了


错误二:Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).


免登录问题


具体步骤较多,简单来说,就是 .ssh 文件下新建一个 authorized_keys 文件,将公钥放到其中


并去 /etc/ssh/sshd_config 中修改一些配置,实现免登录


这里不细讲,具体可以 Google 查一下


错误三:


Warning: Permanently added '_\*\*' (ECDSA) to the list of known hosts.
sftp> put -r ./build/_ /home/johan/www/react-app
Multiple paths match, but destination "/home/johan/www/react-app" is not a directory


文件路径不对


错误四:


Couldn't canonicalize: No such file or directory
Unable to canonicalize path "/home/johan/www/react-app/static"


找不到 static 文件,新生成的 static 文件不能放入项目中,那就新建一个


去项目目录下 mkdir static


再编译,成功


image.png


附上 Github 地址:React-Deploy[8]


参考资料



  • GitHub Actions 入门教程[9]


  • 使用 Github Action 部署项目到云服务器[10]


  • 手把手教你用 Github Actions 部署前端项目[11]


  • 使用 GitHub Actions 实现博客自动化部署[12]


[1] GitHub Actions: https://github.com/features/actions


[2] 持续集成服务: https://www.ruanyifeng.com/blog/2015/09/continuous-integration.html


[3] 推出: https://github.blog/changelog/2018-10-16-github-actions-limited-beta/


[4] 官方市场: https://github.com/marketplace?type=actions


[5] awesome actions: https://github.com/sdras/awesome-actions


[6] GitHub Actions 入门教程: http://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html


[7] 使用 Github Action 部署项目到云服务器: https://zhuanlan.zhihu.com/p/107545396


[8] React-Deploy: https://github.com/johanazhu/React-Deploy


[9] GitHub Actions 入门教程: http://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html


[10] 使用 Github Action 部署项目到云服务器: https://zhuanlan.zhihu.com/p/107545396


[11] 手把手教你用 Github Actions 部署前端项目: https://segmentfault.com/a/1190000039818913


[12] 使用 GitHub Actions 实现博客自动化部署: https://frostming.com/2020/04-26/github-actions-deploy/


相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
JSON Kubernetes 安全
找到啦,我们已上车,Github 27000+ star,研发团队必备开源工具项目,真丝滑!!!
Trivy 是一款高效灵活的开源安全扫描工具,支持容器镜像、文件系统、Kubernetes 等多目标扫描,具备快速、易用、集成性强等特点,适用于 DevSecOps 全流程安全检测。
493 0
|
人工智能 JavaScript 前端开发
Github 2024-10-28 开源项目周报 Top15
本周GitHub热门项目涵盖Svelte、Open Interpreter、PowerShell等,涉及Web开发、AI助手、自动化工具等领域,Python、JavaScript为主流语言,展现开源技术活跃生态。(239字)
1092 19
|
人工智能 JavaScript 前端开发
Github 2024-11-04 开源项目周报 Top14
本周GitHub热门项目涵盖屏幕截图转代码、网页监控、低代码开发等。Python与TypeScript主导,亮点项目包括AI生成代码工具、开源社交应用Bluesky及机器人框架LeRobot,展现AI与自动化技术的快速发展趋势。
629 15
|
人工智能 JavaScript Docker
Github 2024-11-11 开源项目周报 Top15
本周GitHub热门项目涵盖多领域:Python与TypeScript领跑,包括屏幕截图转代码、本地文件共享、PDF处理、AI开发代理等。亮点项目如screenshot-to-code、LocalSend、OpenHands及Diagrams,兼具创新与实用性,广受开发者关注。
1058 13
|
人工智能 算法 JavaScript
Github 2024-10-14 开源项目周报 Top14
本周GitHub热门项目共14个,Python项目占7席。涵盖算法实现、生成式AI、金融分析、目标检测等领域,包括TheAlgorithms系列、OpenBB金融平台、Ultralytics YOLO11、Manim动画框架等,展现开源技术多元发展态势。
504 8
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
646 13
|
人工智能 Rust JavaScript
Github 2024-10-07 开源项目周报 Top15
本周GitHub热门项目共15个,Python项目占比最高达7个。榜首为Python算法实现集合TheAlgorithms/Python,Star数超17万;其他亮点包括Godot游戏引擎、OpenBB金融平台、ToolJet低代码框架及新兴AI相关项目如Crawl4AI、Llama Stack等,涵盖游戏、金融、AI、理财等多个领域。
545 4
|
人工智能 Rust 算法
Github 2024-09-30 开源项目周报 Top15
本周GitHub热门项目揭晓:Python主导,AutoGPT居首,涵盖AI、编程、数学动画等领域,助力开发者探索前沿技术。
482 4
|
人工智能 JavaScript 前端开发
Github 2024-09-16 开源项目周报 Top14
本周GitHub热门项目涵盖Python、TypeScript、Go等语言,React居首。亮点包括微软PowerToys、Node版本管理器、AI证件照工具HivisionIDPhotos及端侧大模型MiniCPM等。
398 2
|
Rust JavaScript 安全
Github 2024-09-02 开源项目周报 Top13
本周GitHub热门项目涵盖AI、开发工具与开源替代品。包括Notion替代AppFlowy、Airtable替代NocoDB、云平台Coolify及可观察性平台OpenObserve等,涉及Python、TypeScript、Rust等语言,聚焦效率、隐私与自动化。
612 1