From b8986bbc577cbd6b696a61be882bee21f5957c21 Mon Sep 17 00:00:00 2001 From: siimav Date: Fri, 11 Nov 2022 01:30:41 +0200 Subject: [PATCH] Add GH Actions --- .github/workflows/attachReleaseArtifacts.yml | 95 ++++++++++++++++++ .github/workflows/buildAndTest.yml | 65 ++++++++++++ .../ROHeatshields/Plugins/ROHeatshields.dll | Bin 22016 -> 0 bytes Source/Properties/AssemblyInfo.cs | 7 +- Source/ROHeatshields.csproj | 2 +- 5 files changed, 167 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/attachReleaseArtifacts.yml create mode 100644 .github/workflows/buildAndTest.yml delete mode 100644 GameData/ROHeatshields/Plugins/ROHeatshields.dll diff --git a/.github/workflows/attachReleaseArtifacts.yml b/.github/workflows/attachReleaseArtifacts.yml new file mode 100644 index 0000000..4634e88 --- /dev/null +++ b/.github/workflows/attachReleaseArtifacts.yml @@ -0,0 +1,95 @@ +name: "Attach Release Artifacts" + +# Controls when the action will run. +on: + release: + types: [published] + +# 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@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 + shell: bash + env: + TAG_STRING: ${{ github.event.release.tag_name }} + run: | + rm -f ${GITHUB_WORKSPACE}/GameData/ROHeatshields/Plugins/*.dll + msbuild /p:Configuration=Release /p:ReferencePath="${{ steps.download-assemblies.outputs.ksp-dll-path }}" ${GITHUB_WORKSPACE}/Source/ROHeatshields.sln + cp -v ${GITHUB_WORKSPACE}/Source/obj/x64/Release/ROHeatshields.dll ${GITHUB_WORKSPACE}/GameData/ROHeatshields/Plugins/ROHeatshields.dll + + - name: Update version file + uses: KSP-RO/BuildTools/update-version-file@master + with: + tag: ${{ github.event.release.tag_name }} + path: ${GITHUB_WORKSPACE}/GameData/ROHeatshields/ROHeatshields.version + + - name: Assemble release + id: assemble-release + run: | + RELEASE_DIR="${RUNNER_TEMP}/release" + echo "Release dir: ${RELEASE_DIR}" + echo "Release zip: ${RELEASE_DIR}/ROHeatshields-${{ 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}" + cp -v "${GITHUB_WORKSPACE}/README.md" "${RELEASE_DIR}/README.md" + cp -v "${GITHUB_WORKSPACE}/LICENSE" "${RELEASE_DIR}/LICENSE" + cd ${RELEASE_DIR} + zip -r ROHeatshields-${{ github.event.release.tag_name }}.zip GameData README.md LICENSE + + - 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 }}/ROHeatshields-${{ github.event.release.tag_name }}.zip + asset_name: ROHeatshields-${{ 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 new version file + shell: bash + env: + TAG_STRING: ${{ github.event.release.tag_name }} + run: | + RELEASEBRANCH=${{ env.tagged_branch }} + git add "${GITHUB_WORKSPACE}/GameData/ROHeatshields/ROHeatshields.version" + 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/buildAndTest.yml b/.github/workflows/buildAndTest.yml new file mode 100644 index 0000000..169c162 --- /dev/null +++ b/.github/workflows/buildAndTest.yml @@ -0,0 +1,65 @@ +# 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, CI ] + pull_request: + branches: [ master, CI ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# 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: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 100 + + - name: Download required assemblies + id: download-assemblies + uses: KSP-RO/BuildTools/download-assemblies@master + with: + KSP_ZIP_PASSWORD: ${{ secrets.KSP_ZIP_PASSWORD }} + + - name: Build mod solution + run: | + rm -f ${GITHUB_WORKSPACE}/GameData/ROHeatshields/Plugins/*.dll + msbuild /p:Configuration=Release /p:ReferencePath="${{ steps.download-assemblies.outputs.ksp-dll-path }}" ${GITHUB_WORKSPACE}/Source/ROHeatshields.sln + cp -v ${GITHUB_WORKSPACE}/Source/obj/x64/Release/ROHeatshields.dll ${GITHUB_WORKSPACE}/GameData/ROHeatshields/Plugins/ROHeatshields.dll + + - 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}" + cp -v "${GITHUB_WORKSPACE}/README.md" "${RELEASE_DIR}/README.md" + cp -v "${GITHUB_WORKSPACE}/LICENSE" "${RELEASE_DIR}/LICENSE" + + - name: Upload artifacts + uses: actions/upload-artifact@v1 + with: + name: ROHeatshields + path: ${{ steps.assemble-release.outputs.release-dir }} diff --git a/GameData/ROHeatshields/Plugins/ROHeatshields.dll b/GameData/ROHeatshields/Plugins/ROHeatshields.dll deleted file mode 100644 index 58c5d87582be10cb4491727905b2728aeb989570..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22016 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..\GameData\ROHeatshields\Plugins\ TRACE true - pdbonly + none x64 8.0 prompt