diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index bcedfc6..699e778 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -75,88 +75,84 @@ jobs: env: VCPKG_ROOT: ${{ github.workspace }}/vcpkg - - name: Set Binary Names - id: binary-names + - name: Prepare Binaries shell: bash run: | + build_dir="bin/${{ matrix.build-type }}" os="${{ runner.os }}" build_type="${{ matrix.build-type }}" arch="$(echo "${{ runner.arch }}" | tr '[:upper:]' '[:lower:]')" configuration="$os-$build_type-$arch" - echo "build_dir=bin/$build_type" >> $GITHUB_OUTPUT - echo "configuration=$os-$build_type-$arch" >> $GITHUB_OUTPUT + cd "$build_dir" + # CLI Binary if [[ "$os" == "Windows" ]]; then - echo "cli_source=blur-cli.exe" >> $GITHUB_OUTPUT - echo "cli_binary=blur-cli-$configuration.exe" >> $GITHUB_OUTPUT + cli_source="blur-cli.exe" + cli_binary="blur-cli-$configuration.exe" + else + cli_source="blur-cli" + cli_binary="blur-cli-$configuration" + fi - echo "gui_source=blur.exe" >> $GITHUB_OUTPUT - echo "gui_binary=blur-$configuration.exe" >> $GITHUB_OUTPUT + # GUI Binary + if [[ "$os" == "Windows" ]]; then + gui_source="blur.exe" + gui_binary="blur-$configuration.exe" elif [[ "$os" == "macOS" ]]; then - echo "cli_source=blur-cli" >> $GITHUB_OUTPUT - echo "cli_binary=blur-cli-$configuration" >> $GITHUB_OUTPUT - - echo "gui_source=blur.app" >> $GITHUB_OUTPUT - echo "gui_binary=Blur-$configuration.dmg" >> $GITHUB_OUTPUT + gui_source="blur.app" + gui_binary="Blur-$configuration.dmg" else - echo "cli_source=blur-cli" >> $GITHUB_OUTPUT - echo "cli_binary=blur-cli-$configuration" >> $GITHUB_OUTPUT - - echo "gui_source=blur" >> $GITHUB_OUTPUT - echo "gui_binary=blur-$configuration" >> $GITHUB_OUTPUT + gui_source="blur" + gui_binary="blur-$configuration" fi - - name: Install create-dmg (macOS) - if: runner.os == 'macOS' - run: | - brew install create-dmg - - - name: Create DMG (macOS) - if: runner.os == 'macOS' - run: | - cd ${{ steps.binary-names.outputs.build_dir }} - - mkdir source_folder - mv "${{ steps.binary-names.outputs.gui_source }}" source_folder - - create-dmg \ - --volname "Blur Installer" \ - --icon "Blur.app" 200 190 \ - --hide-extension "Blur.app" \ - --app-drop-link 600 185 \ - "${{ steps.binary-names.outputs.gui_binary }}" \ - "source_folder" - - - name: Rename and Make Binaries Executable - shell: bash - run: | - cd ${{ steps.binary-names.outputs.build_dir }} - mv "${{ steps.binary-names.outputs.cli_source }}" "${{ steps.binary-names.outputs.cli_binary }}" - - if [[ "$RUNNER_OS" != "macOS" ]]; then - mv "${{ steps.binary-names.outputs.gui_source }}" "${{ steps.binary-names.outputs.gui_binary }}" + # Move and prepare binaries + mv "$cli_source" "$cli_binary" + cli_path="$cli_binary" + gui_path="$gui_binary" + + # Tar non-Windows platforms + if [[ "$os" != "Windows" ]]; then + tar -cvf "$configuration-cli.tar.gz" "$cli_binary" + cli_path="$configuration-cli.tar.gz" + + if [[ "$os" == "Linux" ]]; then + mv "$gui_source" "$gui_binary" + tar -cvf "$configuration-gui.tar.gz" "$gui_binary" + gui_path="$configuration-gui.tar.gz" + fi fi - if [[ "$RUNNER_OS" == "Linux" || "$RUNNER_OS" == "macOS" ]]; then - chmod +x "${{ steps.binary-names.outputs.cli_binary }}" - chmod +x "${{ steps.binary-names.outputs.gui_binary }}" + # macOS DMG + if [[ "$os" == "macOS" ]]; then + mkdir source_folder + mv "$gui_source" source_folder + create-dmg \ + --volname "Blur Installer" \ + --icon "Blur.app" 200 190 \ + --hide-extension "Blur.app" \ + "$gui_binary" \ + "source_folder" fi - - name: Upload Binaries + # Output for subsequent steps + echo "build_dir=$build_dir" >> $GITHUB_OUTPUT + echo "cli_path=$cli_path" >> $GITHUB_OUTPUT + echo "gui_path=$gui_path" >> $GITHUB_OUTPUT + + - name: Upload Artifacts uses: actions/upload-artifact@v3 with: - name: Blur-${{ steps.binary-names.outputs.configuration }} + name: Blur-${{ runner.os }}-${{ matrix.build-type }} path: | - ${{ steps.binary-names.outputs.build_dir }}/${{ steps.binary-names.outputs.cli_binary }} - ${{ steps.binary-names.outputs.build_dir }}/${{ steps.binary-names.outputs.gui_binary }} + ${{ steps.prep.outputs.build_dir }}/${{ steps.prep.outputs.cli_path }} + ${{ steps.prep.outputs.build_dir }}/${{ steps.prep.outputs.gui_path }} - name: Release uses: softprops/action-gh-release@v1 - if: ${{ env.is_tag == 'true' }} + if: ${{ github.event_name == 'push' && contains(github.ref, 'refs/tags/') }} with: files: | - ${{ steps.binary-names.outputs.build_dir }}/${{ steps.binary-names.outputs.cli_binary }} - ${{ steps.binary-names.outputs.build_dir }}/${{ steps.binary-names.outputs.gui_binary }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ${{ steps.prep.outputs.build_dir }}/${{ steps.prep.outputs.cli_path }} + ${{ steps.prep.outputs.build_dir }}/${{ steps.prep.outputs.gui_path }}