GitHub Actions使用实例

后端

后端代码提交后,自动build(使用gradle)打包并将新的可执行jar包部署到指定服务器前端

实现

在项目根目录的.github/workflows目录下写以下文件gradle_build.yamlvue

name: Java CI with Gradle
# 设置触发条件
# 1. 对main分支执行push操做或者pull request操做时触发
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
# CI/CD 任务流程
jobs:
  build:
    # 指定构建容器环境
    runs-on: ubuntu-latest
    steps:
    # 1:下载源码(拉取代码到构建容器中)
    - name: Checkout
      uses: actions/checkout@master
    # 2. 设置Java环境
    - name: Set up JDK 11
      uses: actions/setup-java@v1
      with:
        java-version: 11
    # 3. 设置gradlew执行权限
    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
    # 4. 缓存构建缓存
    - name: Cache Gradle packages
      uses: actions/cache@v2
      with:
        path: | ~/.gradle/caches ~/.gradle/wrapper         key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
        restore-keys: | ${{ runner.os }}-gradle-     # 5. 项目构建
    - name: Build with Gradle
      run: ./gradlew build -x test
    # 6. 部署到服务器
    - name: Copy file via scp
      uses: appleboy/scp-action@master
      env:
        HOST: ${{ secrets.HOST }}
        USERNAME: ${{ secrets.USERNAME }}
        PORT: ${{ secrets.PORT }}
        KEY: ${{ secrets.SSHKEY }}
      with:
        source: "build/libs/dockerhub-1.0.1.jar"
        target: "/opt/dockerhub-1.0.1/temp"
    # 7. 重启服务
    - name: Deploy
      uses: appleboy/ssh-action@master # 使用ssh连接服务器
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.SSHKEY }}
        port: ${{ secrets.PORT }}
        script: | mv /opt/dockerhub-1.0.1/temp/build/libs/dockerhub-1.0.1.jar /opt/dockerhub-1.0.1/lib/ rm -rf /opt/dockerhub-1.0.1/temp cd /opt/dockerhub-1.0.1/ jps |grep DockerHubService | awk '{print $1}' | xargs kill -9 nohup bin/dockerhub > nohup.out 2> nohup.err < /dev/null & 复制代码

注意事项java

  1. 要在项目根目录使用gradlew因此能够事先在本地环境中,尝试使用gradlew构建项目,保证配置没有错误,而且应将gradlew可执行脚本加入到git库中
  2. 使用gradlew配置项目时会在根目录生成gradle/wrapper目录,其中有gradle-wrapper.jargradle-wrapper.properties两个文件,要将此目录加入到git库中
  3. gradle/wrapper/gradle-wrapper.properties配置文件复制到项目根目录中,并加入到git库中,保证gradle配置生效
  4. 在第六、7步骤中,须要远程链接到指定的部署服务器,须要在GitHub项目界面中的Settings选项界面的Secret界面中点击New repository secret添加配置信息,名字就是yaml文件中使用的配置属性名
  5. 第6步骤中须要注意,会将source的目录结构复制到target指定的文件夹中,因此放到一个临时文件夹中
  6. 步骤7中,将目的jar包移动到目的目录。删除临时文件夹,重启服务,注意nohup指令,若是只是写做nohup bin/dockerhub &,GitHub Actions的执行流程会卡顿在此处

前端

前端代码(Vue项目)提交后,自动打包并将新包部署到指定服务器node

实现

在项目根目录的.github/workflows目录下写以下文件vue_build.yamlgit

name: VUE-CI
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master
      - name: set up node env
        uses: actions/setup-node@master
      - name: Installing project dependencies
        run: yarn
      - name: Building the project
        run: npm run build
      # 使用ssh连接服务器,清空旧的部署
      - name: Deploy
        uses: appleboy/ssh-action@master 
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.SSHKEY }}
          port: ${{ secrets.PORT }}
          script: | rm -rf /opt/dvclab/ mkdir -p /opt/dvclab/       # 拷贝打包好的文件
      - name: Copy file via scp
        uses: appleboy/scp-action@master
        env:
          HOST: ${{ secrets.HOST }}
          USERNAME: ${{ secrets.USERNAME }}
          PORT: ${{ secrets.PORT }}
          KEY: ${{ secrets.SSHKEY }}
        with:
          source: "./dist/"
          target: "/opt/dvclab/"
复制代码
相关文章
相关标签/搜索