tags: NYCU-Software-Testing-2021-lab

CI/CD with Github Action

NYCU-Software-Testing-2021-lab4

[TOC]

學號

github url

https://github.com/p870613/st_nycu_lab4_309551042

part1

  • Main.java
    • 單純input output 處理 + call Game.java的function
  • Game.java
    • Check_input
      • 檢查input是否符合規定
    • Result
      • 就一個個把邏輯寫出來而已

part2

  • 先創3個Stream<Arguments> 分別可以導致p1 win and p2 lose, p1 lose and p2 win, p1 and p2 draw

  • test case

    • p1 win and p2 lose

    • p1 lose and p2 win

    • p1 and p2 draw

    • input

      • valid input
      • invalid input

part3

  • Makefile

  • push and pull

    • 都使用branch master
  • job

    • compile

      • runs-on: ubuntu-latest : 表示跑在ubuntu
      • steps
        • actions/checkout@v2 表示下載你的repo
        • actions/setup-java@v1: setup Java11
        • chmod +x gradlew: 給權限
        • make compile: compile

    • test

      • runs-on: ubuntu-latest : 表示跑在ubuntu
      • steps
        • actions/checkout@v2 表示下載你的repo
        • chmod +x gradlew: 給權限
        • make test: 進行測試
        • actions/upload-artifact@v2 : 有report, 會把他upload, 他的名字叫作testreport, 路徑是build/reports

    • assemble

      • runs-on: ubuntu-latest : 表示跑在ubuntu
      • steps
        • actions/checkout@v2 表示下載你的repo
        • chmod +x gradlew: 給權限
        • make assemble: 建制jar檔
        • actions/upload-artifact@v2 : 有jar檔, 會把他upload, 名字叫作buildJar, 路徑是build/libs

part4

  • assemble

    • runs-on: ubuntu-latest : 表示跑在ubuntu

    • output

      • step做完之後 才會做 之後再Release會用
    • steps

      • actions/checkout@v2 表示下載你的repo

      • chmod +x gradlew: 給權限

      • make assemble: 建制jar檔

      • id: get_jarname : 要輸出jar檔名

      • id: get_artifact_jarname: 要upload的檔名

      • actions/upload-artifact@v2 : 有jar檔, 會把他upload, 名字叫作buildJar, 路徑是build/libs

  • release

    • runs-on: ubuntu-latest : 表示跑在ubuntu
    • id: getReleaseName : 拿到tag的name
    • actions/download-artifact@v2: 把之前upload的東西載下來
      • name: ${{needs.assemble.outputs.artifact_jar_name}} 這是要抓檔名
    • softprops/action-gh-release@v1: 之後就release了
      • steps.getReleaseName.outputs.RELEASE_NAME: 抓tag的name
      • needs.assemble.outputs.jar_name:檔名
      • 就release了