From c5b437648688ec26e05144ccfd7943c911bb069f Mon Sep 17 00:00:00 2001 From: neuecc Date: Sun, 17 May 2020 02:43:54 +0900 Subject: [PATCH] gh-actions --- .circleci/config.yml | 114 ---------------------------- .github/workflows/build-debug.yml | 73 ++++++++++++++++++ .github/workflows/build-release.yml | 108 ++++++++++++++++++++++++++ .github/workflows/toc.yml | 15 ++++ 4 files changed, 196 insertions(+), 114 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/build-debug.yml create mode 100644 .github/workflows/build-release.yml create mode 100644 .github/workflows/toc.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 58ead3b..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,114 +0,0 @@ -version: 2.1 -executors: - unity: - # https://hub.docker.com/r/gableroux/unity3d/tags - parameters: - version: {type: string} - docker: - - image: gableroux/unity3d:<< parameters.version >> - go: - docker: - - image: circleci/golang -commands: - unity_activate: - parameters: - unity_version: {type: string} - unity_license: {type: string} - steps: - # get activation file, if fail to activate unity, use this key and activate from https://license.unity3d.com/manual - - run: apt update && apt install libunwind8 -y - - run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -logFile -createManualActivationFile || exit 0 - - run: cat Unity_v<< parameters.unity_version >>.alf - # get from UNITY_LICENSE envvar(base64 encoded(cat foo.ulf | base64 )), this file is generated from above manual activation - - run: echo << parameters.unity_license >> | base64 -di >> .circleci/Unity.ulf - - run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -manualLicenseFile .circleci/Unity.ulf || exit 0 -jobs: - build-and-test: - parameters: - unity_version: {type: string} - unity_license: {type: string} - executor: - name: unity - version: << parameters.unity_version >> - steps: - - checkout - - unity_activate: - unity_version: << parameters.unity_version >> - unity_license: << parameters.unity_license >> - - run: - name: Build Linux(Mono) - command: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -projectPath . -executeMethod UnitTestBuilder.BuildUnitTest /headless /ScriptBackend Mono2x /BuildTarget StandaloneLinux64 - working_directory: . - # TODO:check unity version and packages... - # - run: ./bin/UnitTest/StandaloneLinux64_Mono2x/test - build-and-create-package: - parameters: - unity_version: {type: string} - unity_license: {type: string} - executor: - name: unity - version: << parameters.unity_version >> - steps: - - checkout - - unity_activate: - unity_version: << parameters.unity_version >> - unity_license: << parameters.unity_license >> - - run: - name: Export unitypackage - command: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -projectPath . -executeMethod PackageExporter.Export - working_directory: . - - store_artifacts: - path: ./UniRx.Async.unitypackage - destination: /UniRx.Async.unitypackage - # upload to github by ghr - upload-github: - executor: go - steps: - - attach_workspace: - at: . - - run: go get github.com/tcnksm/ghr - - run: ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} ${CIRCLE_TAG} . - - store_artifacts: - path: UniRx.Async.unitypackage - destination: UniRx.Async.unitypackage -workflows: - version: 2 - build-unity: - jobs: - # does not exists yet. - # - build-and-test: - # unity_version: 2019.3.0a2 - # unity_license: ${UNITY_LICENSE_2019_3} - # - build-and-test: - # unity_version: 2019.2.0b2 - # unity_license: ${UNITY_LICENSE_2019_2} - - build-and-test: - unity_version: 2019.1.2f1 - unity_license: ${UNITY_LICENSE_2019_1} - filters: - tags: - only: /.*/ - # test asmdef will not found. - # - build-and-test: - # unity_version: 2018.4.0f1 - # unity_license: ${UNITY_LICENSE_2018_4} - # # UniTask minimum support version is 2018.3(C# 7.x) - # - build-and-test: - # unity_version: 2018.3.12f1 - # unity_license: ${UNITY_LICENSE_2018_3} - - build-and-create-package: - unity_version: 2019.1.2f1 - unity_license: ${UNITY_LICENSE_2019_1} - filters: - tags: - only: /^\d\.\d\.\d.*/ - branches: - ignore: /.*/ - - upload-github: - requires: - - build-and-create-package - filters: - tags: - only: /^\d\.\d\.\d.*/ - branches: - ignore: /.*/ diff --git a/.github/workflows/build-debug.yml b/.github/workflows/build-debug.yml new file mode 100644 index 0000000..1a9a4b5 --- /dev/null +++ b/.github/workflows/build-debug.yml @@ -0,0 +1,73 @@ +name: Build-Debug + +on: + push: + branches: + - "**" + tags: + - "!*" # not a tag push + pull_request: + types: + - opened + - synchronize + +jobs: + build-dotnet: + runs-on: ubuntu-latest + env: + DOTNET_CLI_TELEMETRY_OPTOUT: 1 + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 + NUGET_XMLDOC_MODE: skip + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-dotnet@v1 + with: + dotnet-version: 3.1.101 + - run: dotnet test -c Debug ./src/UniTask.NetCoreTests/UniTask.NetCoreTests.csproj + + build-unity: + strategy: + matrix: + unity: ['2019.3.9f1', '2020.1.0b5'] + include: + - unity: 2019.3.9f1 + license: UNITY_2019_3 + - unity: 2020.1.0b5 + license: UNITY_2020_1 + runs-on: ubuntu-latest + container: + # with linux-il2cpp. image from https://hub.docker.com/r/gableroux/unity3d/tags + image: gableroux/unity3d:${{ matrix.unity }}-linux-il2cpp + steps: + - run: apt update && apt install git -y + - uses: actions/checkout@v2 + # create unity activation file and store to artifacts. + - run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -logFile -createManualActivationFile || exit 0 + - uses: actions/upload-artifact@v1 + with: + name: Unity_v${{ matrix.unity }}.alf + path: ./Unity_v${{ matrix.unity }}.alf + # activate Unity from manual license file(ulf) + - run: echo -n "$UNITY_LICENSE" >> .Unity.ulf + env: + UNITY_LICENSE: ${{ secrets[matrix.license] }} + - name: Activate Unity, always returns a success. But if a subsequent run fails, the activation may have failed(if succeeded, shows `Next license update check is after` and not shows other message(like GUID != GUID). If fails not). In that case, upload the artifact's .alf file to https://license.unity3d.com/manual to get the .ulf file and set it to secrets. + run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -manualLicenseFile .Unity.ulf || exit 0 + + # Execute scripts: RuntimeUnitTestToolkit + - name: Build UnitTest(Linux64, mono) + run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -projectPath . -executeMethod UnitTestBuilder.BuildUnitTest /headless /ScriptBackend mono /BuildTarget StandaloneLinux64 + working-directory: src/UniTask + - name: Execute UnitTest + run: ./src/UniTask/bin/UnitTest/StandaloneLinux64_Mono2x/test + + # Execute scripts: Export Package + - name: Export unitypackage + run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -projectPath . -executeMethod PackageExporter.Export + working-directory: src/UniTask + + # Store artifacts. + - uses: actions/upload-artifact@v2 + with: + name: UniTask.unitypackage + path: ./src/UniTask/*.unitypackage \ No newline at end of file diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml new file mode 100644 index 0000000..9b8844b --- /dev/null +++ b/.github/workflows/build-release.yml @@ -0,0 +1,108 @@ +name: Build-Release + +on: + push: + tags: + - "[0-9]+.[0-9]+.[0-9]+*" + +jobs: + build-dotnet: + runs-on: ubuntu-latest + env: + DOTNET_CLI_TELEMETRY_OPTOUT: 1 + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 + NUGET_XMLDOC_MODE: skip + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-dotnet@v1 + with: + dotnet-version: 3.1.101 + # set release tag(*.*.*) to env.GIT_TAG + - run: echo ::set-env name=GIT_TAG::${GITHUB_REF#refs/tags/} + + # build CommandTools first (use dotnet run command in ZLogger.csproj) + - run: dotnet build -c Release ./tools/CommandTools/CommandTools.csproj + - run: dotnet build -c Release -p:Version=${{ env.GIT_TAG }} + - run: dotnet test -c Release --no-build + - run: dotnet pack ./src/ZLogger/ZLogger.csproj -c Release --no-build -p:Version=${{ env.GIT_TAG }} + + # Store artifacts. + - uses: actions/upload-artifact@v1 + with: + name: nuget + path: ./src/ZLogger/bin/Release/ZLogger.${{ env.GIT_TAG }}.nupkg + + build-unity: + strategy: + matrix: + unity: ['2019.3.9f1'] + include: + - unity: 2019.3.9f1 + license: UNITY_2019_3 + runs-on: ubuntu-latest + container: + # with linux-il2cpp. image from https://hub.docker.com/r/gableroux/unity3d/tags + image: gableroux/unity3d:${{ matrix.unity }}-linux-il2cpp + steps: + - run: apt update && apt install git -y + - uses: actions/checkout@v2 + - run: echo -n "$UNITY_LICENSE" >> .Unity.ulf + env: + UNITY_LICENSE: ${{ secrets[matrix.license] }} + - run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -manualLicenseFile .Unity.ulf || exit 0 + + # set release tag(*.*.*) to env.GIT_TAG + - run: echo ::set-env name=GIT_TAG::${GITHUB_REF#refs/tags/} + + # Execute scripts: Export Package + - name: Export unitypackage + run: /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -projectPath . -executeMethod PackageExporter.Export + working-directory: src/ZLogger.Unity + env: + UNITY_PACKAGE_VERSION: ${{ env.GIT_TAG }} + + # Store artifacts. + - uses: actions/upload-artifact@v1 + with: + name: ZLogger.Unity.${{ env.GIT_TAG }}.unitypackage + path: ./src/ZLogger.Unity/ZLogger.Unity.${{ env.GIT_TAG }}.unitypackage + + create-release: + needs: [build-dotnet, build-unity] + runs-on: ubuntu-latest + env: + DOTNET_CLI_TELEMETRY_OPTOUT: 1 + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 + NUGET_XMLDOC_MODE: skip + steps: + # setup dotnet for nuget push + - uses: actions/setup-dotnet@v1 + with: + dotnet-version: 3.1.101 + # set release tag(*.*.*) to env.GIT_TAG + - run: echo ::set-env name=GIT_TAG::${GITHUB_REF#refs/tags/} + + # Create Releases + - uses: actions/create-release@v1 + id: create_release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Ver.${{ github.ref }} + + # Download (All) Artifacts to current directory + - uses: actions/download-artifact@v2-preview + + # Upload to NuGet + - run: dotnet nuget push "./nuget/*.nupkg" -s https://www.nuget.org/api/v2/package -k ${{ secrets.NUGET_KEY }} + + # Upload to Releases(unitypackage) + - uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./ZLogger.Unity.${{ env.GIT_TAG }}.unitypackage/ZLogger.Unity.${{ env.GIT_TAG }}.unitypackage + asset_name: ZLogger.Unity.${{ env.GIT_TAG }}.unitypackage + asset_content_type: application/octet-stream \ No newline at end of file diff --git a/.github/workflows/toc.yml b/.github/workflows/toc.yml new file mode 100644 index 0000000..f7519c3 --- /dev/null +++ b/.github/workflows/toc.yml @@ -0,0 +1,15 @@ +name: TOC Generator + +on: + push: + paths: + - 'README.md' + +jobs: + generateTOC: + name: TOC Generator + runs-on: ubuntu-latest + steps: + - uses: technote-space/toc-generator@v2.4.0 + with: + TOC_TITLE: "## Table of Contents" \ No newline at end of file