fix: test #549
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Continuous Integration | |
| on: [push, pull_request] | |
| jobs: | |
| check: | |
| strategy: | |
| matrix: | |
| os: [macos-latest, windows-latest, ubuntu-latest] | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install toolchain | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| profile: minimal | |
| override: true | |
| - name: Check | |
| uses: actions-rs/cargo@v1 | |
| with: | |
| command: check | |
| args: --locked --verbose | |
| clippy: | |
| strategy: | |
| matrix: | |
| os: [macos-latest, windows-latest, ubuntu-latest] | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install toolchain | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| profile: minimal | |
| override: true | |
| - name: Check the lints | |
| uses: actions-rs/cargo@v1 | |
| with: | |
| command: clippy | |
| args: --verbose -- -D warnings | |
| test: | |
| strategy: | |
| matrix: | |
| os: [macos-latest, windows-latest, ubuntu-latest] | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install toolchain | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| profile: minimal | |
| override: true | |
| - name: Run the tests | |
| uses: actions-rs/cargo@v1 | |
| with: | |
| command: test | |
| args: --locked --verbose | |
| formatting: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install toolchain | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| profile: minimal | |
| override: true | |
| - name: Check the formatting | |
| uses: actions-rs/cargo@v1 | |
| with: | |
| command: fmt | |
| args: --all -- --check --verbose | |
| build: | |
| needs: [clippy, formatting, check, test] | |
| strategy: | |
| matrix: | |
| os: | |
| - { | |
| NAME: linux, | |
| OS: ubuntu-latest, | |
| ARCH: x86_64, | |
| PATH: target/optimized/bob, | |
| TARGET: "", | |
| } | |
| - { | |
| NAME: linux, | |
| OS: ubuntu-24.04-arm, | |
| ARCH: arm, | |
| PATH: target/optimized/bob, | |
| TARGET: "", | |
| } | |
| - { | |
| NAME: macos, | |
| OS: macos-13, | |
| ARCH: x86_64, | |
| PATH: target/optimized/bob, | |
| TARGET: "", | |
| } | |
| - { | |
| NAME: windows, | |
| OS: windows-latest, | |
| ARCH: x86_64, | |
| PATH: build, | |
| TARGET: "", | |
| } | |
| - { | |
| NAME: macos, | |
| OS: macos-latest, | |
| ARCH: arm, | |
| PATH: target/optimized/bob, | |
| TARGET: "", | |
| } | |
| tls: | |
| - { NAME: Rustls, SUFFIX: "", ARGS: "" } | |
| - { | |
| NAME: OpenSSL, | |
| SUFFIX: "-openssl", | |
| ARGS: "--no-default-features --features native-tls", | |
| } | |
| runs-on: ${{matrix.os.OS}} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| profile: minimal | |
| override: true | |
| - name: Install OpenSSL libraries | |
| run: sudo apt update && sudo apt install libssl-dev | |
| if: matrix.os.OS == 'ubuntu-latest' && matrix.tls.NAME == 'OpenSSL' | |
| - uses: Swatinem/rust-cache@v1 | |
| - name: Build Bob | |
| uses: actions-rs/cargo@v1 | |
| with: | |
| command: build | |
| args: --locked --profile optimized ${{ matrix.tls.ARGS }} | |
| - name: Install AppImage tools | |
| if: matrix.os.NAME == 'linux' | |
| run: | | |
| sudo apt update && sudo apt install -y libfuse2 # Needed by AppImage/linuxdeploy | |
| wget -c "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-${{ matrix.os.ARCH }}.AppImage" -O linuxdeploy | |
| wget -c "https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-${{ matrix.os.ARCH }}.AppImage" -O linuxdeploy-plugin-appimage | |
| chmod +x linuxdeploy linuxdeploy-plugin-appimage | |
| - name: Prepare AppDir | |
| if: matrix.os.NAME == 'linux' | |
| run: | | |
| mkdir -p AppDir/usr/bin AppDir/usr/share/icons/hicolor/256x256/apps | |
| cp target/optimized/bob AppDir/usr/bin/ | |
| # Ensure you have an icon at resources/bob.png or adjust the path | |
| cp resources/bob.png AppDir/usr/share/icons/hicolor/256x256/apps/bob.png | |
| # Create .desktop file | |
| cat <<EOF > AppDir/bob.desktop | |
| [Desktop Entry] | |
| Name=Bob Neovim Manager | |
| Exec=bob | |
| Icon=bob | |
| Type=Application | |
| Categories=Utility;Development; | |
| Comment=A cross-platform Neovim version manager | |
| EOF | |
| cp AppDir/bob.desktop AppDir/usr/share/applications/ | |
| - name: Build AppImage | |
| if: matrix.os.NAME == 'linux' | |
| run: | | |
| export UPD_INFO="gh-releases-zsync|Matsuuu|bob|latest|bob-${{ matrix.os.ARCH }}.AppImage.zsync" | |
| export OUTPUT="bob-${{ matrix.os.ARCH }}${{ matrix.tls.SUFFIX }}.AppImage" | |
| ./linuxdeploy --appdir AppDir --executable usr/bin/bob --desktop-file AppDir/bob.desktop --icon-file AppDir/usr/share/icons/hicolor/256x256/apps/bob.png --output appimage | |
| - name: Setup Bob build directory | |
| run: | | |
| mkdir build | |
| copy .\\bin\\vcruntime140.dll .\\build | |
| copy .\\target\\optimized\\bob.exe .\\build | |
| if: matrix.os.OS == 'windows-latest' | |
| - name: Upload Bob binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: "bob-${{ matrix.os.NAME }}-${{ matrix.os.ARCH }}${{ matrix.tls.SUFFIX }}" | |
| path: ${{ matrix.os.PATH }} | |
| if-no-files-found: error | |
| retention-days: 7 |