Skip to content

Merge pull request #68 from turecross321/main #37

Merge pull request #68 from turecross321/main

Merge pull request #68 from turecross321/main #37

Workflow file for this run

# https://acraven.medium.com/a-nuget-package-workflow-using-github-actions-7da8c6557863
name: Create new release from pushed tag
on:
push:
tags:
- "*"
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
name: Build, Test, and Upload Builds (${{ matrix.os }})
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 8.0.x
- name: Set VERSION variable from tag
if: ${{ contains(github.ref, 'refs/tags') }}
shell: bash
run: echo "VERSION=${GITHUB_REF/refs\/tags\/v/}" >> $GITHUB_ENV
- name: Print VERSION variable for debugging
shell: bash
run: echo "$VERSION"
- name: Publish for Linux x64
if: matrix.os == 'ubuntu-latest'
run: dotnet publish -c Release -r linux-x64 --self-contained Refresher /p:Version=${VERSION}
- name: Publish for Windows x64
if: matrix.os == 'windows-latest'
shell: bash
run: dotnet publish -c Release -r win-x64 --self-contained Refresher //p:Version=${VERSION}
- name: Publish for macOS x64
if: matrix.os == 'macos-latest'
shell: bash
run: dotnet publish -c Release -r osx-x64 --self-contained Refresher /p:Version=${VERSION}
- name: Publish for macOS ARM64
if: matrix.os == 'macos-latest'
shell: bash
run: dotnet publish -c Release -r osx-arm64 --self-contained Refresher /p:Version=${VERSION}
- name: Create macOS universal2 binary
if: matrix.os == 'macos-latest'
shell: bash
working-directory: Refresher/bin/Release/net8.0/
run: |
mkdir -p osx-universal2/publish/Refresher.app/Contents/MacOS
cp -r osx-arm64/publish/*.app/Contents/ osx-universal2/publish/Refresher.app/Contents/
for file in $(find osx-arm64/publish/*.app/Contents/MacOS); do
if [[ "$(file $file)" == *"Mach-O"* ]]; then
if [[ "$(lipo -archs $file)" != *"x86_64 arm64"* ]]; then
lipo -create osx-arm64/publish/*.app/Contents/MacOS/$(basename $file) osx-x64/publish/*.app/Contents/MacOS/$(basename $file) -output osx-universal2/publish/Refresher.app/Contents/MacOS/$(basename $file);
fi;
fi;
done
rm -rfv osx-universal2/publish/Refresher.app/Contents/MacOS/*.app
codesign -fs - --deep osx-universal2/publish/Refresher.app
- name: 'Tar macOS universal2 build'
if: matrix.os == 'macos-latest'
working-directory: Refresher/bin/Release/net8.0/osx-universal2/publish/
run: tar -czvf ../../../../../../Refresher_for_macOS.tar.gz *.app
- name: 'Tar Linux x64'
if: matrix.os == 'ubuntu-latest'
working-directory: Refresher/bin/Release/net8.0/linux-x64/publish/
run: tar -czvf ../../../../../../Refresher_for_Linux_x64.tar.gz *
- name: Upload Linux x64 build
if: matrix.os == 'ubuntu-latest'
uses: actions/[email protected]
with:
name: "Refresher_for_Linux_x64"
path: "Refresher_for_Linux_x64.tar.gz"
if-no-files-found: error
retention-days: 1
- name: Upload Windows x64 build
if: matrix.os == 'windows-latest'
uses: actions/[email protected]
with:
name: "Refresher_for_Windows_x64"
path: "Refresher/bin/Release/net8.0-windows/win-x64/publish/"
if-no-files-found: error
retention-days: 1
- name: Upload macOS universal2 build
if: matrix.os == 'macos-latest'
uses: actions/[email protected]
with:
name: "Refresher_for_macOS"
path: "Refresher_for_macOS.tar.gz"
if-no-files-found: error
retention-days: 1
release:
name: Release Built Artifacts
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Download artifacts
id: download
uses: actions/[email protected]
- name: Create zip files
run: |
cd ${{steps.download.outputs.download-path}}/Refresher_for_Windows_x64
zip -r "${{steps.download.outputs.download-path}}/Refresher_for_Windows_x64.zip" .
cd ${{steps.download.outputs.download-path}}
mv ${{steps.download.outputs.download-path}}/Refresher_for_Linux_x64/*.tar.gz .
mv ${{steps.download.outputs.download-path}}/Refresher_for_macOS/*.tar.gz .
- uses: ncipollo/[email protected]
name: "Create release"
with:
token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
draft: true
generateReleaseNotes: true
bodyFile: "RELEASE_NOTES.md"
artifacts: |
*.zip
*.tar.gz