diff --git a/.github/workflows/create_release_assets.yml b/.github/workflows/create_release_assets.yml index eb15cc4f..2b457308 100644 --- a/.github/workflows/create_release_assets.yml +++ b/.github/workflows/create_release_assets.yml @@ -1,15 +1,12 @@ -name: Publish release files for CD native environments +name: Publish release files for CD native and non-cd-native environments on: - # workflow_run: - # workflows: ["Check SemVer compliance"] - # types: - # - completed release: types: [ created ] jobs: - build: + # Publish release files for CD native environments + native_build: strategy: fail-fast: false matrix: @@ -86,3 +83,91 @@ jobs: uses: softprops/action-gh-release@v2 with: files: assets/* + + # Publish release files for non-CD-native environments + cross_build: + strategy: + fail-fast: false + matrix: + target: + [ + "aarch64-unknown-linux-gnu", + "armv7-unknown-linux-gnueabihf", + "x86_64-unknown-linux-musl", + "aarch64-unknown-linux-musl", + "x86_64-unknown-freebsd", + ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install cargo-deb cross compilation dependencies + run: sudo apt-get install libc6-arm64-cross libgcc-s1-arm64-cross + if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }} + shell: bash + + - name: Install cargo-deb cross compilation dependencies for armv7 + run: sudo apt-get install libc6-armhf-cross libgcc-s1-armhf-cross + if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} + shell: bash + + - name: Install cargo-deb + run: cargo install cargo-deb + if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf' }} + shell: bash + + - name: install targets + run: rustup target add ${{ matrix.target }} + + - name: install cross + uses: taiki-e/install-action@v2 + with: + tool: cross@0.2.5 + + - name: Check format + run: cross fmt --all -- --check + + - name: Run clippy + run: cross clippy --all-targets --locked --target ${{matrix.target}} -- -D warnings + + - name: Run clippy (All features) + run: cross clippy --locked --all-features --target ${{matrix.target}} -- -D warnings + + - name: Run tests + run: cross test --target ${{matrix.target}} + + - name: Build in Release profile with all features enabled + run: cross build --release --all-features --target ${{matrix.target}} + + - name: Rename Release + run: | + mkdir -p assets + FILENAME=topgrade-${{github.event.release.tag_name}}-${{matrix.target}} + mv target/${{matrix.target}}/release/topgrade assets + cd assets + tar --format=ustar -czf $FILENAME.tar.gz topgrade + rm topgrade + ls . + + - name: Build Debian-based system package without autoupdate feature + # First remove the binary built by previous steps + # because we don't want the auto-update feature, + # then build the new binary without auto-updating. + run: | + rm -rf target/${{matrix.target}} + cross build --release --target ${{matrix.target}} + cargo deb --target=${{matrix.target}} --no-build --no-strip + if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf' }} + shell: bash + + - name: Move Debian-based system package + run: | + mkdir -p assets + mv target/${{matrix.target}}/debian/*.deb assets + if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf' }} + shell: bash + + - name: Release + uses: softprops/action-gh-release@v2 + with: + files: assets/* diff --git a/.github/workflows/create_release_assets_cross.yml b/.github/workflows/create_release_assets_cross.yml deleted file mode 100644 index 5a31ecef..00000000 --- a/.github/workflows/create_release_assets_cross.yml +++ /dev/null @@ -1,97 +0,0 @@ -name: Publish release files for non-cd-native environments - -on: - # workflow_run: - # workflows: ["Check SemVer compliance"] - # types: - # - completed - release: - types: [created] - -jobs: - build: - strategy: - fail-fast: false - matrix: - target: - [ - "aarch64-unknown-linux-gnu", - "armv7-unknown-linux-gnueabihf", - "x86_64-unknown-linux-musl", - "aarch64-unknown-linux-musl", - "x86_64-unknown-freebsd", - ] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Install cargo-deb cross compilation dependencies - run: sudo apt-get install libc6-arm64-cross libgcc-s1-arm64-cross - if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }} - shell: bash - - - name: Install cargo-deb cross compilation dependencies for armv7 - run: sudo apt-get install libc6-armhf-cross libgcc-s1-armhf-cross - if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }} - shell: bash - - - name: Install cargo-deb - run: cargo install cargo-deb - if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf' }} - shell: bash - - - name: install targets - run: rustup target add ${{ matrix.target }} - - - name: install cross - uses: taiki-e/install-action@v2 - with: - tool: cross@0.2.5 - - - name: Check format - run: cross fmt --all -- --check - - - name: Run clippy - run: cross clippy --all-targets --locked --target ${{matrix.target}} -- -D warnings - - - name: Run clippy (All features) - run: cross clippy --locked --all-features --target ${{matrix.target}} -- -D warnings - - - name: Run tests - run: cross test --target ${{matrix.target}} - - - name: Build in Release profile with all features enabled - run: cross build --release --all-features --target ${{matrix.target}} - - - name: Rename Release - run: | - mkdir -p assets - FILENAME=topgrade-${{github.event.release.tag_name}}-${{matrix.target}} - mv target/${{matrix.target}}/release/topgrade assets - cd assets - tar --format=ustar -czf $FILENAME.tar.gz topgrade - rm topgrade - ls . - - - name: Build Debian-based system package without autoupdate feature - # First remove the binary built by previous steps - # because we don't want the auto-update feature, - # then build the new binary without auto-updating. - run: | - rm -rf target/${{matrix.target}} - cross build --release --target ${{matrix.target}} - cargo deb --target=${{matrix.target}} --no-build --no-strip - if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf' }} - shell: bash - - - name: Move Debian-based system package - run: | - mkdir -p assets - mv target/${{matrix.target}}/debian/*.deb assets - if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf' }} - shell: bash - - - name: Release - uses: softprops/action-gh-release@v2 - with: - files: assets/* diff --git a/.github/workflows/release_to_aur.yml b/.github/workflows/release_to_aur.yml index bd53c478..24b2a393 100644 --- a/.github/workflows/release_to_aur.yml +++ b/.github/workflows/release_to_aur.yml @@ -1,13 +1,12 @@ name: Publish to AUR on: - # workflow_run: - # workflows: ["Check SemVer compliance"] - # types: - # - completed - push: - tags: - - "v*" + # Step "Publish binary AUR package" needs the binaries built by the following + # workflow, so we wait for it to complete. + workflow_run: + workflows: ["Publish release files for CD native and non-cd-native environments"] + types: + - completed jobs: aur-publish: