From cf3bb1591d400e284358be314680b34826dfdf26 Mon Sep 17 00:00:00 2001 From: Stonesmile <62522391+StonesmileGit@users.noreply.github.com> Date: Tue, 23 Jul 2024 15:41:01 +0200 Subject: [PATCH] Add CI (#15) --- .github/workflows/attachReleaseArtifacts.yml | 109 +++++++++++++++++++ .github/workflows/build.yml | 75 +++++++++++++ .github/workflows/pr-comment.yml | 61 +++++++++++ .gitignore | 3 + GameData/KSCSwitcher/Plugins/KSCSwitcher.dll | Bin 27648 -> 0 bytes GameData/KSCSwitcher/changelog.cfg | 7 ++ Source/KSCSwitcher.csproj | 29 +++-- Source/Properties/AssemblyInfo.cs | 13 ++- 8 files changed, 282 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/attachReleaseArtifacts.yml create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/pr-comment.yml delete mode 100644 GameData/KSCSwitcher/Plugins/KSCSwitcher.dll create mode 100644 GameData/KSCSwitcher/changelog.cfg diff --git a/.github/workflows/attachReleaseArtifacts.yml b/.github/workflows/attachReleaseArtifacts.yml new file mode 100644 index 0000000..7968705 --- /dev/null +++ b/.github/workflows/attachReleaseArtifacts.yml @@ -0,0 +1,109 @@ +name: "Attach Release Artifacts" + +# Controls when the action will run. +on: + release: + types: [published] + +env: + KSP_ROOT: /tmp/ksp + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + attach-release-artifacts: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Get Branch + shell: bash + run: | + releaseBranch=${{ github.event.release.target_commitish }} + echo "Found branch ${releaseBranch}" + echo "tagged_branch=${releaseBranch}" >> $GITHUB_ENV + + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + ref: ${{ env.tagged_branch }} + + - name: Download required assemblies + id: download-assemblies + uses: KSP-RO/BuildTools/download-assemblies-v2@master + with: + KSP_ZIP_PASSWORD: ${{ secrets.KSP_ZIP_PASSWORD }} + + - name: Update AssemblyInfo + uses: KSP-RO/BuildTools/update-assembly-info@master + with: + path: ${{ github.workspace }}/Source/Properties/AssemblyInfo.cs + tag: ${{ github.event.release.tag_name }} + + - name: Build mod solution + run: msbuild ${{ github.workspace }}/Source/KSCSwitcher.sln /t:build /restore /p:RestorePackagesConfig=true /p:Configuration=Release /p:ReferencePath="${{ steps.download-assemblies.outputs.ksp-dll-path }}" /p:KSPRoot="${{ env.KSP_ROOT }}" + + - name: Remove excess DLLs + uses: KSP-RO/BuildTools/remove-excess-dlls@master + with: + path: ${{ github.workspace }}/GameData/ + + - name: Update version file + uses: KSP-RO/BuildTools/update-version-file@master + with: + tag: ${{ github.event.release.tag_name }} + path: ${{ github.workspace }}/GameData/KSCSwitcher/KSCSwitcher.version + + - name: Update Readme + uses: KSP-RO/BuildTools/update-version-in-readme@master + with: + path: ${{ github.workspace }}/README.md + tag: ${{ github.event.release.tag_name }} + + - name: Update changelog file + uses: KSP-RO/BuildTools/process-changelog@master + with: + tag: ${{ github.event.release.tag_name }} + body: ${{ github.event.release.body }} + path: ${{ github.workspace }}/GameData/KSCSwitcher/changelog.cfg + + - name: Assemble release + id: assemble-release + run: | + RELEASE_DIR="${RUNNER_TEMP}/release" + echo "Release dir: ${RELEASE_DIR}" + echo "Release zip: ${RELEASE_DIR}/KSCSwitcher-${{ github.event.release.tag_name }}.zip" + mkdir -v "${RELEASE_DIR}" + echo "::set-output name=release-dir::${RELEASE_DIR}" + cp -v -R "${{ github.workspace }}/GameData" "${RELEASE_DIR}" + cd ${RELEASE_DIR} + zip -r KSCSwitcher-${{ github.event.release.tag_name }}.zip GameData + + - name: Upload package to release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ${{ steps.assemble-release.outputs.release-dir }}/KSCSwitcher-${{ github.event.release.tag_name }}.zip + asset_name: KSCSwitcher-${{ github.event.release.tag_name }}.zip + asset_content_type: application/zip + + - name: Setup git config + run: | + git config user.name "GitHub Actions Bot" + git config user.email "<>" + + - name: Commit changes + shell: bash + env: + TAG_STRING: ${{ github.event.release.tag_name }} + run: | + RELEASEBRANCH=${{ env.tagged_branch }} + git add "${{ github.workspace }}/GameData/KSCSwitcher/KSCSwitcher.version" + git add "${{ github.workspace }}/GameData/KSCSwitcher/changelog.cfg" + git commit -m "Update version to $TAG_STRING" + git push origin $RELEASEBRANCH + git tag $TAG_STRING $RELEASEBRANCH --force + git push origin $TAG_STRING --force diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..8d32013 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,75 @@ +# This is a basic workflow to help you get started with Actions + +name: build + +# Controls when the action will run. +on: + # Triggers the workflow on push or pull request events but only for the master branch + push: + branches: [ master ] + pull_request: + branches: [ master ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +env: + KSP_ROOT: /tmp/ksp + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + check-secret: + uses: KSP-RO/BuildTools/.github/workflows/check-secret.yml@master + secrets: + KSP_ZIP_PASSWORD: ${{ secrets.KSP_ZIP_PASSWORD }} + + validate-cfg-files: + uses: KSP-RO/BuildTools/.github/workflows/validate-cfg-files.yml@master + + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + needs: [check-secret] + if: needs.check-secret.outputs.has-password == 'true' + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 100 + + - name: Download required assemblies + id: download-assemblies + uses: KSP-RO/BuildTools/download-assemblies-v2@master + with: + KSP_ZIP_PASSWORD: ${{ secrets.KSP_ZIP_PASSWORD }} + + - name: Update AssemblyInfo + uses: KSP-RO/BuildTools/update-assembly-info@master + with: + path: ${{ github.workspace }}/Source/Properties/AssemblyInfo.cs + tag: "2.99.0.0" + + - name: Build mod solution + run: msbuild ${{ github.workspace }}/Source/KSCSwitcher.sln /t:build /restore /p:RestorePackagesConfig=true /p:Configuration=Release /p:ReferencePath="${{ steps.download-assemblies.outputs.ksp-dll-path }}" /p:KSPRoot="${{ env.KSP_ROOT }}" + + - name: Remove excess DLLs + uses: KSP-RO/BuildTools/remove-excess-dlls@master + with: + path: ${{ github.workspace }}/GameData/ + + - name: Assemble release + id: assemble-release + run: | + RELEASE_DIR="${RUNNER_TEMP}/release" + echo "Release dir: ${RELEASE_DIR}" + mkdir -v "${RELEASE_DIR}" + echo "::set-output name=release-dir::${RELEASE_DIR}" + cp -v -R "${{ github.workspace }}/GameData" "${RELEASE_DIR}" + + - name: Upload artifacts + uses: actions/upload-artifact@v1 + with: + name: KSCSwitcher + path: ${{ steps.assemble-release.outputs.release-dir }} diff --git a/.github/workflows/pr-comment.yml b/.github/workflows/pr-comment.yml new file mode 100644 index 0000000..708503c --- /dev/null +++ b/.github/workflows/pr-comment.yml @@ -0,0 +1,61 @@ +name: Comment on pull request +on: + workflow_run: + workflows: ['build'] + types: [completed] +jobs: + pr_comment: + if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' + runs-on: ubuntu-latest + steps: + - uses: actions/github-script@v5 + with: + # This snippet is public-domain, taken from + # https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml + script: | + async function upsertComment(owner, repo, issue_number, purpose, body) { + const {data: comments} = await github.rest.issues.listComments( + {owner, repo, issue_number}); + + const marker = ``; + body = marker + "\n" + body; + + const existing = comments.filter((c) => c.body.includes(marker)); + if (existing.length > 0) { + const last = existing[existing.length - 1]; + core.info(`Updating comment ${last.id}`); + await github.rest.issues.updateComment({ + owner, repo, + body, + comment_id: last.id, + }); + } else { + core.info(`Creating a comment in issue / PR #${issue_number}`); + await github.rest.issues.createComment({issue_number, body, owner, repo}); + } + } + + const {owner, repo} = context.repo; + const run_id = ${{github.event.workflow_run.id}}; + + const pull_requests = ${{ toJSON(github.event.workflow_run.pull_requests) }}; + if (!pull_requests.length) { + return core.error("This workflow doesn't match any pull requests!"); + } + + const artifacts = await github.paginate( + github.rest.actions.listWorkflowRunArtifacts, {owner, repo, run_id}); + if (!artifacts.length) { + return core.error(`No artifacts found`); + } + let body = `Download the artifacts for this pull request:\n`; + for (const art of artifacts) { + body += `\n* [${art.name}.zip](https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip)`; + } + + core.info("Review thread message body:", body); + + for (const pr of pull_requests) { + await upsertComment(owner, repo, pr.number, + "nightly-link", body); + } \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4ce6fdd..4c7bf8e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,9 @@ ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore +# Ignore all generated DLLs +*.dll + # User-specific files *.rsuser *.suo diff --git a/GameData/KSCSwitcher/Plugins/KSCSwitcher.dll b/GameData/KSCSwitcher/Plugins/KSCSwitcher.dll deleted file mode 100644 index a6b8efefeda42f869280977c260987a4c8e9c072..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27648 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%0AxNP#qvRnJXM6*lE;ytHpVjQ=7uU zqzfZpH>2v}ch$`btk-(Tuc4{i7wa=Yj|J07^A>}$D$SYhaFS)GspkEV zXN%+fFn)vOre&b>{P)1_Db%tb@RIV9zdT>~0`NIlb{wbZqy%<-m0$7B$Ud|hwR}kF z#tc#I@%7zk$I{b^V-8z^{cb92P`OvD#!mQL{QFDqSn#v%_8ZQB=zR;9#SW0KM$>{u z4QYN9EQ`^I6i+j2bj{kUn*lw#$?7x$TF}Ic`g7)zFQi2~0yCm1J=&rB!8Lp4%nH2E z8y)+VHkb0Zls=dAaD}F!iA!XW5v$W5F!XR3UFi{k2wpMP^+<&tsNox`NsmNk`$*Gf ztD3MGFrwRntY#48AbtyI1o445t1}o3kPrN`XX712tJCT%!(Y{kE{a|fO+>dvlhJK+ zq6wcF9Y=o@y#zyxUJ~&y((qdx9!J73quaQUR0B%rF$^WIFb@)=U>giaJN%?Yha>0) z$Z*7uR^unI)DFDys7J@=;J=uzldY(i1^m&m@n{_8i*CZ-2^v2IuLed(OH3H!84XoI zG2z&_&XUH){iq#Z9E5^nFQI^e>Jc$TB#0*C%eCkzbR0j&y)zy{KSGL;FQ7%cd7P~n zQ8#{Rta|B2ld*?U#dq}DU0S2Xxb9)x(4#eW&76QA(CP&7Ms0>QcC#Ld&iC#*lpMQ~ zDWYDdzlN;wO_&H>aJ=%U!3y0VN5>ACP{+HCU&0s!<0Z>rpvI?_;RDm@*4SqvWn}O@ zI-X>9hya3HbbO!;uSBvoPzx9gW_4E7u)eNpF^Xy70t&r+HF$M2=;_OtCNnb-fLs<5 zMrW!g#xRE(T#Owt5|U{fW^#y(==gY~%o@Lvf3E_&!v|3UkHOkSpy)jKRriFxy3 z!Hvg`&cP)!6{vj}@Y+4o3Ypi&Q)i8DsKArK9% zPKduG9EOm)g1EwAUi#5Z5zH?ZC2JXhY?_eHy90pao+w3b@o01No&H zE@F(%4~N;iF)lz}E-;fdb`MX>XvmE?h%hHq=x)SD1aSj5$GW*%Fa(2+gN0+aTNfRF zj)P>p45WN;#3V5z;$@8!;>8uzV{bNDYf;9pZs z8y@-NP1bWV$sv5RpKhwzi1*%7J$UPOi@hhAIcL}DrzcM9Ic?eE*N|96noj&p@8d19J)E~@&+(=51Pbr zH8E9oPavnV3?SGCfSn-?*nvFqQQa#Y(^>RUaIL`AUh1`jAu-3$j8{5t2w6Io_$F+n zrQ}C397YifSHp&gP>r=P3WLK(!H+El5$k9Gm52%5az7SDT*r>K32{WjO`6Pydty=E z6RhDFeuVcJA67B1Bg9EvEfcjkM12reT#)G%g}GK^*!<8JUB?1cdU?1?g7E zQFS}!?u4ie^5A?y>;(YPZX-w$T)Gjbh(9iU;fDrX6%T6sm(uW=%Rm3$qF3>I2J7w2 zD)0S>E&YzYKdXUH7d~V(rTmS*`_c^lsD{RL{M`)my+imK8d)0tT=wji^{ckz-}!3t zybFIIBV|K@yRBr9it{p|@*wH0lu|y* zKEulm$>Qpk!QNev`TyIeYi;Y2)0UBIp4w5@JZ$Fqzy9{T$NFaf$FCm!!&Co5hsA%7 zLjFG1*hB@{;R)a4(Q$OwfvkD zFJR!FKQ%D}{j;wZ-QX`yfX=5Xe!_XYq!q%m2;)}&PQ^J2Ho#v^VSDhyj{*Esr(&Eg z<#TdT9iN>u#V0wJX9a$nqviYKGwc+nJMd0@s^odVCYW!(RZe~UOj1sTXtxBX$wm2# zXa#0f6ASU_*nv*`q%ePOoTi@^JY`7ZAIl4%{W`Smla@U4L5xd%Eg{dX>Ag6Wt7jC5 zYWU!_4pE23H=>2J7d|2V-pI>FiO^Q`vqapreview - + + $(ReferencePath)/Assembly-CSharp.dll False - - + + $(ReferencePath)/System.dll + False + + + $(ReferencePath)/System.Core.dll + False - + + $(ReferencePath)/UnityEngine.dll False - + + $(ReferencePath)/UnityEngine.CoreModule.dll False - - False - ..\..\KSP DLL\UnityEngine.ImageConversionModule.dll + + $(ReferencePath)/UnityEngine.ImageConversionModule.dll False - + + $(ReferencePath)/UnityEngine.IMGUIModule.dll False - + + $(ReferencePath)/UnityEngine.TextRenderingModule.dll False diff --git a/Source/Properties/AssemblyInfo.cs b/Source/Properties/AssemblyInfo.cs index b0df6a5..d29a9a5 100644 --- a/Source/Properties/AssemblyInfo.cs +++ b/Source/Properties/AssemblyInfo.cs @@ -1,3 +1,4 @@ +#define CIBUILD_disabled using System.Reflection; using System.Runtime.CompilerServices; @@ -15,8 +16,10 @@ // The form "{Major}.{Minor}.*" will automatically update the build and revision, // and "{Major}.{Minor}.{Build}.*" will update just the revision. [assembly: AssemblyVersion ("2.0.0.0")] -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - +#if CIBUILD +[assembly: AssemblyFileVersion("@MAJOR@.@MINOR@.@PATCH@.@BUILD@")] +[assembly: KSPAssembly("KSCSwitcher", @MAJOR@, @MINOR@)] +#else +[assembly: AssemblyFileVersion("2.99.0.0")] +[assembly: KSPAssembly("KSCSwitcher", 2, 99)] +#endif