name: Create release on: push: tags: - '*' jobs: create_release: runs-on: ubuntu-latest outputs: tag: ${{ steps.previoustag.outputs.tag }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: "Get previous tag" id: previoustag uses: "WyriHaximus/github-action-get-previous-tag@v1" - name: "Build changelog" id: build_changelog uses: mikepenz/release-changelog-builder-action@v5 with: configuration: ".github/config/changelog-config.json" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: "Create release" id: create_release uses: ncipollo/release-action@v1 with: tag: ${{ steps.previoustag.outputs.tag }} body: ${{ steps.build_changelog.outputs.changelog }} token: ${{ secrets.API_TOKEN_GITHUB }} add_release_archive: needs: create_release runs-on: ${{ matrix.os }} environment: "Build Environment" strategy: fail-fast: false matrix: build: - win-x64 - linux-x64 - osx-arm64 include: - build: win-x64 os: windows-latest - build: linux-x64 os: ubuntu-22.04 archive_type: tar archive_extension: .tgz asset_content_type: application/gzip - build: osx-arm64 os: macos-14 archive_type: tar archive_extension: .tgz asset_content_type: application/gzip steps: - uses: actions/checkout@v4 with: fetch-depth: 0 submodules: recursive - name: "Add version to version.txt" shell: bash run: | cd ImperatorToCK3/Data_Files/configurables printf "\nversion = ${{ needs.create_release.outputs.tag }}" >> version.txt - name: "Setup Dotnet for use with actions" uses: actions/setup-dotnet@v4 with: global-json-file: Fronter.NET/global.json - name: "Replace frontend background image" run: | rm Fronter.NET/Fronter.NET/Assets/Images/background.png cp ImperatorToCK3/Resources/images/SteamMainImage.png Fronter.NET/Fronter.NET/Assets/Images/background.png - name: "Build frontend" uses: ./Fronter.NET/.github/actions/build_frontend with: fronter_dir: 'Fronter.NET' release_dir: 'Publish' self_contained: ${{ matrix.build != 'win-x64' }} # InnoSetup takes care of installing the .NET runtime on Windows. build_updater: ${{ matrix.build != 'win-x64' }} # Windows release uses InnoSetup instead. env: BACKBLAZE_KEY_ID: ${{ secrets.BACKBLAZE_KEY_ID }} BACKBLAZE_APPLICATION_KEY: ${{ secrets.BACKBLAZE_APPLICATION_KEY }} BACKBLAZE_BUCKET_ID: ${{ secrets.BACKBLAZE_BUCKET_ID }} - name: "Setup Dotnet for use with actions" uses: actions/setup-dotnet@v4 with: global-json-file: global.json - name: "Build backend" working-directory: ImperatorToCK3 shell: bash run: | dotnet publish -p:PublishProfile=${{ matrix.build }} -c:Release --output:"../Publish/ImperatorToCK3" if [ "$RUNNER_OS" = "macOS" ] then echo "Signing binary..." codesign --force -s - "../Publish/ImperatorToCK3/ImperatorToCK3Converter" echo "Verifying signature..." codesign -dv --verbose=4 "../Publish/ImperatorToCK3/ImperatorToCK3Converter" fi - name: "Save commit ID" shell: bash run: | git rev-parse HEAD > Publish/commit_id.txt - name: "Install sed for Windows" if: matrix.build == 'win-x64' run: | choco install sed - name: "Build installer for Windows" if: matrix.build == 'win-x64' run: | dotnet tool install --global InnoSetup cp Fronter.NET/Fronter.NET/Assets/converter.ico Publish/Assets/ iscc --version sed -i '5i\\#define MyAppVersion "${{ needs.create_release.outputs.tag }}"' ImperatorToCK3.iss cat ImperatorToCK3.iss iscc ImperatorToCK3.iss - name: "Upload installer for Windows" id: upload-installer if: matrix.build == 'win-x64' uses: alexellis/upload-assets@0.4.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: asset_paths: '["./Output/ImperatorToCK3-${{ matrix.build }}-setup.exe"]' - name: "Archive Publish folder" if: matrix.build != 'win-x64' uses: thedoctor0/zip-release@master with: type: '${{ matrix.archive_type }}' directory: 'Publish' path: '.' filename: '../ImperatorToCK3-${{ matrix.build }}${{ matrix.archive_extension }}' - name: "Upload release zip" id: upload-release-zip if: matrix.build != 'win-x64' uses: alexellis/upload-assets@0.4.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: asset_paths: '["./ImperatorToCK3-${{ matrix.build }}${{ matrix.archive_extension }}"]'