Github Actions 部署java到ec2 教程

本文详细介绍了如何在AWSEC2上安装和配置GitHubActionsRunner,包括处理可能遇到的错误如`bash:shasum:commandnotfound`和`LibicusdependenciesmissingforDotnetCore6.0`,以及如何配置自托管的工作流程以部署Java服务如ruoyi-gateway。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

INFO

一.EC2安装配置GitHub Actions Runner

可能报错

bash: shasum: command not found

Must not run with sudo

Libicu's dependencies is missing for Dotnet Core 6.0

显示如下即成功配置完成

​编辑

后台运行 run.sh保持runner在线

多台EC2 Runner需要在github上创建对应标签区分

二.配置项目.github/workflows/xxx.yml

java 服务→以ruoyi为例


INFO

  • aws ec2→ aws linux2
  • GitHub Actions 快速入门 官网文档

GitHub Actions 快速入门 - GitHub 文档

一.EC2安装配置GitHub Actions Runner

照着Download和Configure copy命令

可能报错

bash: shasum: command not found

  • eg

    [root@ip-172-31-20-152 actions-runner]# echo "xxx actions-runner-linux-x64-2.309.0.tar.gz" | shasum -a 256 -c
    bash: shasum: command not found
    
  • 解决

    sudo yum install -y perl-Digest-SHA
    

    再次尝试


Must not run with sudo

  • eg

    [root@ip-172-31-20-152 actions-runner]# ./config.sh --url <https://github.com/xxx/xxx> --token xxx
    Must not run with sudo
    
  • 原因

    不应该使用 sudo 来运行 config.sh 脚本。GitHub Actions Runner 需要以普通用户身份运行,而不是以 root 用户身份运行。

  • 解决

    设置 RUNNER_ALLOW_RUNASROOT 环境变量为 1: 以允许 root 用户运行此脚本

    echo "export RUNNER_ALLOW_RUNASROOT=1" >> ~/.bashrc
    source ~/.bashrc
    

    再次运行

Libicu's dependencies is missing for Dotnet Core 6.0

  • eg

    [root@ip-172-31-20-152 actions-runner]# ./config.sh --url <https://github.com/xx/xx> --token xxx
    Libicu's dependencies is missing for Dotnet Core 6.0
    Execute sudo ./bin/installdependencies.sh to install any missing Dotnet Core 6.0 dependencies.
    
  • 原因

    缺少 Libicu 依赖的错误,这是 Dotnet Core 6.0 所需的依赖

  • 解决

    安装 libicu 和其他必要的依赖项:

    sudo ./bin/installdependencies.sh
    sudo yum install -y libicu
    

显示如下即成功配置完成

  • runner 已经成功连接到 GitHub 并正在监听作业
[root@ip-172-31-20-152 actions-runner]# ./run.sh

√ Connected to GitHub

Current runner version: '2.309.0'
2023-09-26 08:43:52Z: Listening for Jobs

后台运行 run.sh保持runner在线

并将输出重定向到一个日志文件

mkdir logs
nohup ./run.sh > ./logs/runner.log 2>&1 &

多台EC2 Runner需要在github上创建对应标签区分

二.配置项目.github/workflows/xxx.yml

java 服务→以ruoyi为例

  • 在仓库根目录创建.github/workflows/xxx.yml
  • push 上去
  • # 定义工作流的名称
    name: Deploy ruoyi-gateway
    
    # 定义触发此工作流的条件
    on:
      # 当有代码推送时
      push:
        # 只有推送到 'deploy' 分支时才触发
        branches:
          - 'deploy'
        # 只有 'ruoyi-gateway' 目录下的文件发生变化时才触发
        paths:
          - 'ruoyi-gateway/**'
    
    # 定义工作流中的任务
    jobs:
      build-and-deploy:
        # 指定运行此任务的执行环境
        runs-on: [self-hosted, linux, x64, xxx-prod-a]
    
        # 定义任务中的步骤
        steps:
          # 检出代码到运行器
          - name: Checkout code
            uses: actions/checkout@v2
    
          # 设置 JDK 1.8 环境
          - name: Set up JDK 1.8
            uses: actions/setup-java@v1
            with:
              java-version: 1.8
    
          # 缓存 Maven 依赖,以加速后续构建
          - name: Cache Maven packages
            uses: actions/cache@v2
            with:
              # 指定缓存的路径
              path: ~/.m2
              # 缓存的键,基于运行器的 OS 和 pom.xml 的哈希值
              key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
              # 如果上面的键不存在,则使用此键恢复缓存
              restore-keys: ${{ runner.os }}-m2
    
          # 使用 Maven 进行构建
          - name: Build with Maven
            run: |
              # '-U' 选项确保快照依赖项是最新的
              mvn clean package -U -DskipTests -Pprod
    
          # 构建 Docker 镜像
          - name: Build Docker image
            run: |
              cd ruoyi-gateway
              docker build -t ruoyi-gateway:latest .
    
          # 在本地服务器上部署 Docker 容器
          - name: Deploy to local server
            run: |
              # 停止并删除已存在的 'ruoyi-gateway' 容器
              docker stop ruoyi-gateway || true
              docker rm ruoyi-gateway || true
              # 运行新的 'ruoyi-gateway' 容器
              docker run -d --name ruoyi-gateway -p 8080:8080 ruoyi-gateway:latest

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值