轻松一刻|Walrus CLI与CI/CD工具集成,轻松部署2048游戏

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/[email protected]
      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~

相关推荐
Unity官方开发者社区2 分钟前
《Cryptical Path》开发诀窍:像玩游戏一样开发一款类Rogue游戏
java·游戏·玩游戏
GoodStudyAndDayDayUp6 小时前
gitlab+portainer 实现Ruoyi Vue后端CI/CD
vue.js·ci/cd·gitlab
二狗哈20 小时前
制作一款打飞机游戏49:敌人抖动
游戏
Time Famine21 小时前
射击游戏demo11
python·游戏·pygame
染指11101 天前
25.第二阶段x64游戏实战-分析物品相关数据
汇编·游戏·游戏逆向·x64dbg·x64游戏
web150854159351 天前
使用Python开发经典俄罗斯方块游戏
python·游戏·pygame
白露秋482 天前
C——五子棋小游戏
c语言·游戏
wgc2k2 天前
Java游戏服务器开发流水账(5)Spring 在游戏开发中的使用简介
java·服务器·游戏
passionSnail2 天前
《用MATLAB玩转游戏开发》推箱子游戏的MATLAB趣味实现
开发语言·游戏·matlab
不念霉运2 天前
2025年中国DevOps工具选型指南:主流平台能力横向对比
运维·ci/cd·团队开发·devops