Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: follow .deb naming conventions #969

Merged
merged 15 commits into from
Jan 12, 2023
43 changes: 33 additions & 10 deletions .github/workflows/build_releases.yml
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,7 @@ jobs:
uses: ClementTsang/cargo-action@v0.0.3
env:
BTM_GENERATE: true
BTM_BUILD_RELEASE_CALLER: ${{ inputs.caller }}
with:
command: build
args: --release --locked --verbose --features deploy --target ${{ matrix.info.target }}
Expand All @@ -359,28 +360,50 @@ jobs:
run: |
gzip ./manpage/btm.1

- name: Prepare custom version if needed
if: ${{ inputs.caller == 'nightly' }}
id: custom-version
run: |
if [[ ${{ matrix.info.cross }} == false ]]; then
# x86-64 can be directly executed, so we can do the easy way out.
VERSION=$(./target/${{ matrix.info.target }}/release/btm -V | awk '{print $2}')
echo "CUSTOM_VERSION_ARG='--deb-version=$VERSION'" >> $GITHUB_OUTPUT
else
VER=$(grep -m1 "^version" Cargo.toml | awk '{print $3}' | tr -d \") # NB: Assumes the first instance of version is the build version
APPEND=nightly-${GITHUB_SHA::8}
echo "CUSTOM_VERSION_ARG='--deb-version=$VER-$APPEND'" >> $GITHUB_OUTPUT
fi

- name: Build Debian release (x86-64)
if: matrix.info.cross == false
env:
BTM_GENERATE: true
run: |
cargo install cargo-deb --version 1.41.1 --locked
cargo deb --no-build --target ${{ matrix.info.target }}
cp ./target/${{ matrix.info.target }}/debian/bottom_*.deb ./bottom_${{ matrix.info.target }}.deb
cargo install cargo-deb --version 1.41.3 --locked
VERSION_ARG=$(echo ${{ steps.custom-version.outputs.CUSTOM_VERSION_ARG }} | tr -d \')
cargo deb --no-build --target ${{ matrix.info.target }} $VERSION_ARG
cp ./target/${{ matrix.info.target }}/debian/bottom_*.deb .

- name: Build Debian release (ARM)
if: matrix.info.cross == true
env:
BTM_GENERATE: true
run: |
docker pull ${{ matrix.info.container }}
docker run -t --rm --mount type=bind,source="$(pwd)",target=/volume ${{ matrix.info.container }} "--variant ${{ matrix.info.dpkg }} --target ${{ matrix.info.target }} --no-build" "/volume"
cp ./target/${{ matrix.info.target }}/debian/bottom-*.deb ./bottom_${{ matrix.info.target }}.deb

- name: Test Debian release
VERSION_ARG=$(echo ${{ steps.custom-version.outputs.CUSTOM_VERSION_ARG }} | tr -d \')
docker run -t --rm --mount type=bind,source="$(pwd)",target=/volume ${{ matrix.info.container }} "--no-build --variant ${{ matrix.info.dpkg }} --target ${{ matrix.info.target }} $VERSION_ARG" "/volume"
cp ./target/${{ matrix.info.target }}/debian/bottom-*.deb .
TMP_NAME=$(find bottom-*.deb)
VERSION=${{ matrix.info.dpkg }}
mv $TMP_NAME $(echo $TMP_NAME | sed "s/-$VERSION//")

- name: Verify Debian release
id: verify
run: |
dpkg -I ./bottom_${{ matrix.info.target }}.deb
dpkg -I ./bottom_${{ matrix.info.target }}.deb | grep ${{ matrix.info.dpkg }} && echo "Found correct architecture"
DEB_FILE=$(find bottom_*.deb)
dpkg -I $DEB_FILE
dpkg -I $DEB_FILE | grep ${{ matrix.info.dpkg }} && echo "Found correct architecture"
echo "DEB_FILE=$DEB_FILE" >> $GITHUB_OUTPUT

- name: Delete generated Debian folder
run: |
Expand All @@ -391,7 +414,7 @@ jobs:
shell: bash
run: |
mkdir release
mv bottom_${{ matrix.info.target }}.deb release/
mv ${{ steps.verify.outputs.DEB_FILE }} release/

- name: Save release as artifact
uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3.1.1
Expand Down
16 changes: 10 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
- [Scoop](#scoop)
- [Chocolatey](#chocolatey)
- [winget](#winget)
- [MSI](#MSI)
- [Windows installer](#windows-installer)
- [Manual installation](#manual-installation)
- [Binaries](#binaries)
- [Auto-completion](#auto-completion)
Expand Down Expand Up @@ -155,12 +155,16 @@ A `.deb` file is provided on each [stable release](https://github.com/ClementTsa

```bash
# x86-64
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.7.1/bottom_x86_64-unknown-linux-gnu.deb
sudo dpkg -i bottom_x86_64-unknown-linux-gnu.deb
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.7.1/bottom_0.7.1_amd64.deb
sudo dpkg -i bottom_0.7.1_amd64.deb

# ARM64
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.7.1/bottom_aarch64-unknown-linux-gnu.deb
sudo dpkg -i bottom_aarch64-unknown-linux-gnu.deb
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.7.1/bottom_0.7.1_arm64.deb
sudo dpkg -i bottom_0.7.1_arm64.deb

# ARM
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.7.1/bottom_0.7.1_armhf.deb
sudo dpkg -i bottom_0.7.1_armhf.deb
```

### Snap
Expand Down Expand Up @@ -256,7 +260,7 @@ winget install Clement.bottom

You can uninstall via Control Panel, Options, or `winget --uninstall bottom`.

### MSI
### Windows installer

You can also manually install bottom as a Windows program by going to the [latest release](https://github.com/ClementTsang/bottom/releases/latest)
and installing via the `.msi` file.
Expand Down
6 changes: 5 additions & 1 deletion build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,12 @@ fn nightly_version() {
.and_then(|cirrus_sha: &str| cirrus_sha.get(0..8))
{
println!("cargo:rustc-env=NIGHTLY_VERSION={version}-nightly-{git_hash}");
} else if let Some(git_hash) =
option_env!("GITHUB_SHA").and_then(|gha_sha: &str| gha_sha.get(0..8))
{
println!("cargo:rustc-env=NIGHTLY_VERSION={version}-nightly-{git_hash}");
} else if let Ok(output) = std::process::Command::new("git")
.args(["rev-parse", "--short", "HEAD"])
.args(["rev-parse", "--short=8", "HEAD"])
.output()
{
let git_hash = String::from_utf8(output.stdout).unwrap();
Expand Down