diff --git a/.gitea/workflows/master.yaml b/.gitea/workflows/master.yaml index 879ac69..b54c903 100644 --- a/.gitea/workflows/master.yaml +++ b/.gitea/workflows/master.yaml @@ -3,26 +3,25 @@ on: branches: - master jobs: - cd: - name: "CD > 發布專案" - runs-on: docker - env: - RUNNER_TOOL_CACHE: /toolcache + version: + name: "CD > 計算版本號" + runs-on: ubuntu + outputs: + version: ${{ steps.version.outputs.version }} steps: - name: 計算版本號 id: version uses: https://gitea.jsc.idv.tw/actions/calculate-version@${{ vars.ACTION_CALCULATE_VERSION }} - with: - gitea-server: ${{ gitea.server_url }} - repository: ${{ gitea.repository }} - token: ${{ secrets.GITEA_TOKEN }} + release: + name: "CD > 發布專案" + runs-on: ubuntu + needs: version + steps: - name: 發布專案 uses: akkuman/gitea-release-action@${{ vars.ACTION_RELEASE_VERSION }} with: - tag_name: "v${{ steps.version.outputs.VERSION }}" - - name: 清理舊版本 (保留最新2個) + tag_name: "v${{ needs.version.outputs.version }}" + - name: 清理成品 uses: https://gitea.jsc.idv.tw/actions/cleanup-release@${{ vars.ACTION_CLEANUP_RELEASE_VERSION }} with: - gitea-server: ${{ gitea.server_url }} - repository: ${{ gitea.repository }} - token: ${{ secrets.GITEA_TOKEN }} \ No newline at end of file + RUNNER_TOKEN: ${{ secrets.RUNNER_TOKEN }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..62fd762 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM mcr.microsoft.com/dotnet/sdk:10.0 + +# 更新並安裝必要的工具後清理暫存檔案以減小映像檔大小 +RUN apt update \ + && apt install -y curl jq unzip \ + && rm -rf /var/lib/apt/lists/* + +COPY entrypoint.sh /entrypoint.sh + +RUN chmod +x /entrypoint.sh + +ENTRYPOINT ["/entrypoint.sh"] \ No newline at end of file diff --git a/action.yaml b/action.yaml index d79184b..a9d13a9 100644 --- a/action.yaml +++ b/action.yaml @@ -1,6 +1,40 @@ name: 'DOTNET PACK' -description: '打包套件' +description: '打包 NUGET 套件' author: 'Jeffery' +inputs: + CONFIGURATION: + description: '組建配置' + default: 'Release' + RELEASE_PROJECT: + description: '專案名稱' + required: true + RELEASE_VERSION: + description: '專案版本' + required: true + RELEASE_AUTHOR: + description: '專案作者' + default: 'Jeffery' + RELEASE_COMPANY: + description: '公司名稱' + default: 'jsc.idv.tw' + RELEASE_DESCRIPTION: + description: '專案描述' + required: true +runs: + using: 'docker' + image: 'Dockerfile' + env: + GITEA_SERVER_URL: ${{ gitea.server_url }} + GITEA_REPOSITORY: ${{ gitea.repository }} + CONFIGURATION: ${{ inputs.CONFIGURATION }} + RELEASE_PROJECT: ${{ inputs.RELEASE_PROJECT }} + RELEASE_VERSION: ${{ inputs.RELEASE_VERSION }} + RELEASE_AUTHOR: ${{ inputs.RELEASE_AUTHOR }} + RELEASE_COMPANY: ${{ inputs.RELEASE_COMPANY }} + RELEASE_COPYRIGHT: "Copyright©2025 ${{ inputs.RELEASE_COMPANY }}" + RELEASE_DESCRIPTION: ${{ inputs.RELEASE_DESCRIPTION }} + + inputs: project: required: true @@ -17,11 +51,11 @@ runs: steps: - run: | cd "${{ gitea.workspace }}/${{ inputs.project }}" - dotnet pack -c "${{ inputs.configuration }}" -o "${{ gitea.workspace }}/output" \ - /p:PackageVersion="${{ inputs.version }}" \ - /p:RepositoryUrl="${{ inputs.repository }}" \ + dotnet pack -c "$CONFIGURATION" -o "${{ gitea.workspace }}/output" \ + /p:PackageVersion="$RELEASE_VERSION" \ + /p:RepositoryUrl="$GITEA_REPOSITORY" \ /p:RepositoryType="git" \ - /p:Authors="Jeffery" \ - /p:Company="jsc.idv.tw" \ - /p:Copyright="Copyright©2025 jsc.idv.tw" \ + /p:Authors="$RELEASE_AUTHOR" \ + /p:Company="$RELEASE_COMPANY" \ + /p:Copyright="$RELEASE_COPYRIGHT" \ /p:Description="${{ inputs.description }}" \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..e58a427 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +echo "==================================================" + +echo "參數檢查" + +echo "--------------------------------------------------" + +# 顯示 GITEA_SERVER_URL 參數,並檢查是否為空或 "null",如果是則輸出錯誤訊息並退出 +echo "GITEA_SERVER_URL=$GITEA_SERVER_URL" && ([ -z "$GITEA_SERVER_URL" ] || [ "$GITEA_SERVER_URL" = "null" ]) && exit 1 + +# 顯示 GITEA_REPOSITORY 參數,並檢查是否為空或 "null",如果是則輸出錯誤訊息並退出 +echo "GITEA_REPOSITORY=$GITEA_REPOSITORY" && ([ -z "$GITEA_REPOSITORY" ] || [ "$GITEA_REPOSITORY" = "null" ]) && exit 1 + +# 顯示 CONFIGURATION 參數,並檢查是否為空或 "null",如果是則輸出錯誤訊息並退出 +echo "CONFIGURATION=$CONFIGURATION" && ([ -z "$CONFIGURATION" ] || [ "$CONFIGURATION" = "null" ]) && exit 1 + +# 顯示 RELEASE_PROJECT 參數,並檢查是否為空或 "null",如果是則輸出錯誤訊息並退出 +echo "RELEASE_PROJECT=$RELEASE_PROJECT" && ([ -z "$RELEASE_PROJECT" ] || [ "$RELEASE_PROJECT" = "null" ]) && exit 1 + +# 顯示 RELEASE_VERSION 參數,並檢查是否為空或 "null",如果是則輸出錯誤訊息並退出 +echo "RELEASE_VERSION=$RELEASE_VERSION" && ([ -z "$RELEASE_VERSION" ] || [ "$RELEASE_VERSION" = "null" ]) && exit 1 + +# 顯示 RELEASE_AUTHOR 參數,並檢查是否為空或 "null",如果是則輸出錯誤訊息並退出 +echo "RELEASE_AUTHOR=$RELEASE_AUTHOR" && ([ -z "$RELEASE_AUTHOR" ] || [ "$RELEASE_AUTHOR" = "null" ]) && exit 1 + +# 顯示 RELEASE_COMPANY 參數,並檢查是否為空或 "null",如果是則輸出錯誤訊息並退出 +echo "RELEASE_COMPANY=$RELEASE_COMPANY" && ([ -z "$RELEASE_COMPANY" ] || [ "$RELEASE_COMPANY" = "null" ]) && exit 1 + +# 顯示 RELEASE_DESCRIPTION 參數,並檢查是否為空或 "null",如果是則輸出錯誤訊息並退出 +echo "RELEASE_DESCRIPTION=$RELEASE_DESCRIPTION" && ([ -z "$RELEASE_DESCRIPTION" ] || [ "$RELEASE_DESCRIPTION" = "null" ]) && exit 1 + +echo "==================================================" + +echo "打包 NUGET 套件" + +echo "--------------------------------------------------" + +# 組合來源連結 +RELEASE_URL="$GITEA_SERVER_URL/$GITEA_REPOSITORY/src/branch/master" + +# 打包 NUGET 套件 +cd $RELEASE_PROJECT && dotnet pack -c "$CONFIGURATION" -o "output" \ + /p:PackageVersion="$RELEASE_VERSION" \ + /p:RepositoryUrl="$RELEASE_URL" \ + /p:RepositoryType="git" \ + /p:Authors="$RELEASE_AUTHOR" \ + /p:Company="$RELEASE_COMPANY" \ + /p:Copyright="$RELEASE_COPYRIGHT" \ + /p:Description="$RELEASE_DESCRIPTION" + +echo "==================================================" \ No newline at end of file