Walrus 是一款开源的基于平台工程理念、以应用为中心、以完整应用系统自动化编排交付为目标进行设计开发的云原生应用平台,简化和自动化应用部署与发布流程并与现有的 CI/CD 流水线无缝集成。今天我们来点有趣的,跟随本教程,一起将 Walrus CLI 与 CI/CD 工具集成来部署2048游戏 。

前提条件

在开始之前,请先完成以下准备工作:

  1. 创建一个 GitHub 仓库,fork 我们的 demo 项目(https://github.com/seal-demo/2048)。

  2. 安装 Walrus(https://seal-io.github.io/docs/deploy/standalone)。

  3. 在 Walrus 中创建 demo 项目。

  4. 在 demo 项目中创建 K8s 连接器。

  5. 创建一个环境,并添加上面创建的 K8s 连接器。

准备就绪,现在开始吧~

生成 API 密钥

为了让 Walrus CLI 与 Walrus Server 之间能够通信,您需要创建一个 API 密钥。操作步骤如下:

  1. 在用户信息 中选择API密钥 。

  2. 点击添加密钥 ,为密钥命名并设置过期时间。

  3. 配置密钥后,复制生成的密钥。此密钥用来让 CLI 连接到 Walrus Server。

将 Walrus CLI 与 GitHub Actions 集成

这里我们将演示如何将 Walrus CLI 与 GitHub Actions 集成。按照以下步骤操作:

  1. 访问 GitHub 仓库,选择Settings 选项卡,然后导航到Security > Secrets and variables > Actions

  2. 在 Repository secrets 下添加以下变量,配置存储 GitHub Actions 执行需要的敏感信息:CI_REGISTRY_USERNAMECI_REGISTRY_PASSWORDCD_WALRUS_SERVERCD_WALRUS_TOKEN 。对于CD_WALRUS_SERVER ,格式为https://domain:port/ 。这些变量将于 GitHub Actions 与镜像仓库、Walrus CLI 之间进行安全通信。

在 GitHub 仓库中创建 ci.yaml 文件(位于 `.github/workflows``` 目录下)。此文件将定义您的 CI/CD 工作流。

以下是用于部署2048游戏的 ci.yaml 文件示例,您可以根据特定的环境变量和要求进行复制和自定义。例如,将镜像 Repo 修改为自己的镜像仓库 Repo:

name: CICD

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ] env:
CI_REGISTRY: '' # Use Docker Hub when empty
CI_IMAGE_NAME: sealdemo/game2048
CD_WALRUS_PROJECT: demo
CD_WALRUS_PROJECT_ENV: dev
CD_WALRUS_SERVICE_NAME: game2048 jobs:
delivery:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn -B clean package --file pom.xml
- name: Docker Login
uses: docker/login-action@v3.0.0
with:
registry: ${{ env.CI_REGISTRY }}
username: ${{ secrets.CI_REGISTRY_USERNAME }}
password: ${{ secrets.CI_REGISTRY_PASSWORD }}
- name: Build and push Docker image
run: |
docker build . --file Dockerfile --tag ${{ env.CI_IMAGE_NAME }}:${{ github.run_id }}
docker push ${{ env.CI_IMAGE_NAME }}:${{ github.run_id }}
- name: Download CLI
run: |
# Download walrus CLI
curl -v -k -o walrus -LO "${{ secrets.CD_WALRUS_SERVER }}/cli?arch=amd64&os=linux"
chmod +x ./walrus
- name: Deploy
run: |
# Setup CLI config
./walrus config setup --insecure --server ${{ secrets.CD_WALRUS_SERVER }} --token ${{ secrets.CD_WALRUS_TOKEN }} --project ${{ env.CD_WALRUS_PROJECT }} --environment ${{ env.CD_WALRUS_PROJECT_ENV }} # Deploy app
./walrus service create --debug --name ${{ env.CD_WALRUS_SERVICE_NAME }} --template '{"name": "webservice", "version": "v0.0.2"}' --attributes '{"image": "${{ env.CI_IMAGE_NAME }}:${{ github.run_id }}", "ports": ["8080"]}'

现在,选择 Actions 选项卡,尝试触发工作流执行并检查结果。

如果在工作流程执行过程中遇到任何错误,请先检查 GitHub Actions 的权限和配置,确保一切都设置正确。

完成部署后,您可以在 Walrus 中查看所部署的2048游戏。可以使用此 URL(http://domain:port/2048/)访问2048游戏。

到此,你已经成功部署2048游戏啦,Enjoy your time~

轻松一刻|Walrus CLI与CI/CD工具集成,轻松部署2048游戏的更多相关文章

  1. CI/CD持续集成/持续部署 敏捷开发

    敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它 ...

  2. GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署

    预期目标 源代码管理 借助GitLab实现源代码托管,私有化部署版本,创建项目,创建用户组,分配权限,项目的签入/牵出等. 自动化部署 源代码产生变更时(如签入),自动化编译并发布到指定服务器中部署, ...

  3. WTM框架使用技巧之:CI/CD(持续集成/持续部署)

    1. 什么是WTM框架? 一个快速.灵活.社区活跃.最最最最高效的.netcore 后台管理系统.详见 https://wtmdoc.walkingtec.cn/ 欢迎大家付费支持WTMPlus,反哺 ...

  4. 8款不错的 CI/CD工具

    Jenkins Jenkins是CI市场中最知名且最常见的名号之一.其最初是由Sun公司的一位工程师打造的一个辅助项目,并迅速扩展为最大的开源CI工具之一,可帮助工程团队实现自动化部署.顺带一提:我们 ...

  5. 7款不错的 CI/CD工具

    时至今日,越来越多的工程团队开始实行敏捷开发,借以推动更短.更快的发布周期.而代码库的增长与更高的生产构建频率,也带动持续集成与持续部署/交付工具快速兴起.如果您有意提升发布频率,或者是不太清楚哪些工 ...

  6. 从零入门 Serverless | 企业级 CI/CD 工具部署 Serverless 应用的落地实践

    背景知识 通过以往几节课程的学习,相信大家对于 SAE 平台已经有了一定的了解.SAE 为客户免除了很多复杂的运维工作,开箱即用.按用量付费:与此同时 SAE 提供了丰富的 Open API,可以很容 ...

  7. 持续集成指南:GitLab 的 CI/CD 工具配置与使用

    前言 写代码这项工作,本质就是将工作自动化,减少手工操作提供效率,因为人的本质都是懒狗,程序员也不能例外,为了各种意义的效率提升(懒),我们需要持续集成工具,将代码测试.编译.发布这些重复性很高的工作 ...

  8. 通读《构建之法》与CI/CD工具尝试

    项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 作业要求 我在这个课程的目标是 积累软件开发经验,提高工程能力 这个作业在哪个具体方面帮助我实现目标 通读课 ...

  9. 使用CI/CD工具Github Action发布jar到Maven中央仓库

    之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一 ...

  10. CI/CD持续集成方案

    一,CI/CD流程和持续交付简介 CI(Continuous Integration)持续集成  CD(Continuous Deployment)持续部署  CD(Continuous delive ...

随机推荐

  1. 获取Rtx用户状态方法

    背景:企业OA系统需要与Rtx集成,且高权限身份用户需要获取符合某一条下的所有员工rtx状态... 方案:以此背景,基于rtx sdk做二次开发, 1.后台调用RootObj.QueryUserSta ...

  2. oracle数据备份和还原

    前言 用户:userzs 密码:passzs IP和端口:192.168.0.10:1521/orcl oracle版本:11和12 oracle自带exp和expdp程序用于数据导出备份,imp和i ...

  3. 银河麒麟SP2 auditd服务内存泄露问题

    这几天遇到基于海光服务器的银河麒麟V10 SP2版本操作系统出现内存无故增长问题. 排查发现auditd服务,占用了大量内存. 我的环境是银河麒麟V10 SP2 524,audit版本audit-3. ...

  4. 为什么要使用API接口,他能带来哪些便利

    API接口是程序员进行应用程序开发时不可或缺的工具之一.以下是使用API接口的一些优点: 数据交换:使用API接口可以使不同的应用程序.网站或服务之间交换数据更为便捷,减少人工输入数据的时间和风险. ...

  5. BeanUtils.copyProperties:曾经是我的女神,现在是我的毒药。

    前言 BeanUtils.copyProperties十有八九是你这些年工作中用的很多的其中一个,不管是Apache的还是Spring的. 网上的解释浩如烟海,我这边用一个超简单的例子直观展示给你看. ...

  6. LSTM推导

    LSTM推导 forward propagation def lstm_cell_forward(xt, a_prev, c_prev, parameters): """ ...

  7. k8s 入门到实战--部署应用到 k8s

    背景 最近这这段时间更新了一些 k8s 相关的博客和视频,也收到了一些反馈:大概分为这几类: 公司已经经历过服务化改造了,但还未接触过云原生. 公司部分应用进行了云原生改造,但大部分工作是由基础架构和 ...

  8. 文盘Rust——子命令提示,提高用户体验

    上次我们聊到 CLI 的领域交互模式.在领域交互模式中,可能存在多层次的子命令.在使用过程中如果全评记忆的话,命令少还好,多了真心记不住.频繁 --help 也是个很麻烦的事情.如果每次按 'tab' ...

  9. 全景VR KRPano项目打包成安卓APP快速简易教程

    有时候,我们可能不想把我们制作的全景VR项目发布到网站上,而是想把它作为一个手机应用来使用或者分享.这样,我们就可以更好地保护我们的作品,也可以更方便地展示给客户或者朋友.本文将介绍一种简单的方法,让 ...

  10. 遥遥领先.NET 7, .NET 8 性能大幅提升

    每个版本必有的性能提升汇总文章又来了.大家可以学习阅读了. 微软 .NET 开发团队的工程师 Stephen Toub 发表博客<Performance Improvements in .NET ...