利用Github Action實現Tornadofx/JavaFx打包

one 發表於 2022-06-09
Java Github

原文地址: 利用Github Action實現Tornadofx/JavaFx打包 - Stars-One的雜貨小窩

最近開了個新專案,主要是個工具軟體,也算個人的自娛自樂吧,也算開源的一部分,想著都開源了,順便上個自動化打包吧

得知github action可以自動完成打包的操作,於是便是來研究了下

注意:本文所研究都是基於JavaFx是JDK8中內建的,不適用了之後的FX版本,僅供參考

本文實現了每次推送一個新的tag到github上,就會觸發github action的自動打包,併釋出一個release

步驟

1.建立github專案並推送程式碼

這步應該沒有什麼好講的,都是常規操作了

2.建立action指令碼

點選github專案的action選單,按照提示新建一個action,選擇某項,點選configure

利用Github Action實現Tornadofx/JavaFx打包

之後會進入到action的編輯選單,實際上,預設配置的並不符合我們的需要的情況,我們需要對action進行改造

這裡我也是折騰了十幾次,最終才成功了,附上成功的action配置

# This workflow will build a package using Maven and then publish it to GitHub packages when a release is created
# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path

name: Maven Package

on:
  # 監聽push tag事件,且匹配tag是v開頭的  
  push:
    tags:
    - 'v*'

jobs:
  build:

    runs-on: ubuntu-latest
    permissions: write-all

    steps:
    - uses: actions/[email protected]
    - name: Set up JDK 8
      # 安裝jdk8環境(且要含有javafx)
      uses: actions/[email protected]
      with:
        java-version: '1.8'
        java-package: 'jdk+fx'
        
    - name: Build with Maven
      # 執行打包的mvn命令 
      run: mvn -B compile assembly:single --file pom.xml

    # 移動打包檔案
    - run: mkdir staging && cp target/*.jar staging

    - name: Set Release version env variable
      run: |
        echo "RELEASE_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
    - name: "Build & test"
      run: |
        echo "done!"
    # 建立一個release,並將打包後的檔案上傳到附件    
    - name: Automatic Releases
      # You may pin to the exact commit or the version.
      # uses: marvinpinto/[email protected]f0
      uses: marvinpinto/[email protected]
      with:
        # GitHub secret token
        repo_token: "${{ secrets.GITHUB_TOKEN }}"
        automatic_release_tag: "${{ env.RELEASE_VERSION }}"
        prerelease: false
        title: "Release ${{ env.RELEASE_VERSION }}"
        # Assets to upload to the release
        files: |
          staging/*.jar

3.推送一個新的tag

之後當想釋出版本的時候,使用git建立一個tag,並推送到遠端分支上,即會觸發如下:

git tag v1.0
git push origin v1.0

參考