• 轻松一刻|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"]}'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

     

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

     

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

     

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

     

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

     

  • 相关阅读:
    java计算机毕业设计基于安卓Android的订餐系统APP
    (十)Jmeter操作数据库/INSERT数据/读取CSV数据/bean shell使用
    计算机毕业设计之java+springboot基于vue的校园志愿者管理系统
    三步减少打包机故障
    【MACOS(M1)编译Risc-v版OpenOCD】
    【Python】文件操作
    Spring基础与核心概念
    UE5 打包安卓报错LogPlayLevel: UAT: at org.codehaus.groovy.vmplugin.v7.Java7
    一文带你弄懂 JVM 三色标记算法!
    消费增值模式:产品回报+现金回报,用户忠诚度大增!
  • 原文地址:https://blog.csdn.net/SEAL_Security/article/details/134456525