轻松一刻|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/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~

相关推荐
撬动未来的支点4 小时前
【小游戏开发攻略】(二)游戏玩法设计模式
游戏
中二病码农不会遇见C++学姐4 小时前
文明6-mod制作-游戏素材AI生成记录
人工智能·游戏
德育处主任Pro10 小时前
『NAS』在群晖部署一款太空策略游戏-ogame-vue-ts
前端·vue.js·游戏
全职计算机毕业设计13 小时前
设计属于自己的古代纸币 古代纸币H5交互设计游戏
游戏
Bruk.Liu15 小时前
Gitea Actions 的概念及基础使用
运维·ci/cd·持续集成
学嵌入式的小杨同学17 小时前
【Linux 实战】手写 ls 命令核心功能:C 语言实现文件属性与目录遍历(附完整可运行代码)
linux·运维·服务器·c语言·chrome·后端·ci/cd
共享家952717 小时前
打造AI智能”成语接龙“游戏
前端·javascript·人工智能·python·游戏·html
叼奶嘴的超人18 小时前
手动创建Docker版Fastapi CI/CD镜像文件
ci/cd·docker·fastapi
云边散步18 小时前
godot2D游戏教程系列二(5)
笔记·学习·游戏·游戏开发
CCIE-Yasuo18 小时前
高性能游戏本“三角洲行动瞬间卡顿”与“英雄联盟网络卡死”双疑难杂症:全链路诊断与根除报告(后面都有工具清单)
网络·游戏·排故