name: Create release on: workflow_dispatch: jobs: create-release: runs-on: ubuntu-latest steps: - name: Create Release id: create_release uses: ncipollo/release-action@v1 with: token: ${{ secrets.GITHUB_TOKEN }} tag: ${{ github.head_ref || github.ref_name }} commit: master name: Release ${{ github.head_ref || github.ref_name }} draft: true - name: Output Release URL File run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt - name: Save Release URL File for publish uses: actions/upload-artifact@v3 with: name: release_url path: release_url.txt publish: needs: create-release runs-on: ubuntu-latest strategy: matrix: os: [win, linux, osx] arch: [x86, x64, arm, arm64] sc: [no-self-contained, self-contained] exclude: - os: linux arch: x86 - os: osx arch: x86 - os: osx arch: arm env: APP_NAME: nestiler PROJECT_PATH: NesTiler OUTPUT_DIR: output CONFIGURATION: Release OUTPUT_SUBDIR: ${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.sc }} OUTPUT_FILE: nestiler-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.sc == 'self-contained' && '-self-contained' || '' }}.${{ matrix.os == 'win' && 'zip' || 'tar.gz' }} steps: - name: Fix line endings run: git config --global core.autocrlf false - name: Checkout uses: actions/checkout@v3 - name: Setup .NET uses: actions/setup-dotnet@v2 with: dotnet-version: 6.0.x - name: Build env: SC_OPS: ${{ matrix.sc == 'self-contained' && '--self-contained true -p:PublishTrimmed=False' || '--no-self-contained' }} run: dotnet publish ${{ env.PROJECT_PATH }} -c ${{ env.CONFIGURATION }} -r ${{ matrix.os }}-${{ matrix.arch }} ${{ env.SC_OPS }} -o ${{ env.OUTPUT_DIR }}/${{ env.OUTPUT_SUBDIR }}/${{ env.APP_NAME }} - name: Archive working-directory: ${{ env.OUTPUT_DIR }}/${{ env.OUTPUT_SUBDIR }} env: CMD: ${{ matrix.os == 'win' && 'zip -r9' || 'tar -czvf' }} run: | ${{ env.CMD }} ../../${{ env.OUTPUT_FILE }} ${{ env.APP_NAME }} - name: Load Release URL File from release job uses: actions/download-artifact@v1 with: name: release_url - name: Get Release File Name & Upload URL id: get_release_info env: TAG_REF_NAME: ${{ github.head_ref || github.ref_name }} REPOSITORY_NAME: ${{ github.repository }} run: | value=`cat release_url/release_url.txt` echo upload_url=$value >> $GITHUB_OUTPUT - name: Upload uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} MIME: ${{ matrix.os == 'win' && 'zip' || 'tar.gz' }} with: upload_url: ${{ steps.get_release_info.outputs.upload_url }} asset_path: ${{ env.OUTPUT_FILE }} asset_name: ${{ env.OUTPUT_FILE }} asset_content_type: ${{ env.MIME }}