mirror of
https://github.com/ClementTsang/bottom.git
synced 2026-05-04 14:00:38 +00:00
7e9e18faac
Adds an explicit mkdir to the completions directory. No idea why it was bugging out before though, it worked fine on nightly builds.
315 lines
10 KiB
YAML
315 lines
10 KiB
YAML
# Creates nightly deployment builds for main targets. Note this does not cover package distribution channels,
|
|
# such as choco, Homebrew, etc.
|
|
|
|
name: nightly
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 0 * * *"
|
|
workflow_dispatch:
|
|
inputs:
|
|
isMock:
|
|
description: "Replace to trigger a non-mock run."
|
|
default: "mock"
|
|
required: false
|
|
|
|
jobs:
|
|
create-github-release:
|
|
name: create-github-release
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Create artifacts directory
|
|
run: mkdir artifacts
|
|
|
|
- name: Check if mock
|
|
run: |
|
|
echo "${{ github.event.inputs.isMock }}";
|
|
if [[ -z "${{ github.event.inputs.isMock }}" ]]; then
|
|
echo "This is a scheduled nightly run."
|
|
elif [[ "${{ github.event.inputs.isMock }}" == "mock" ]]; then
|
|
echo "This is a mock run."
|
|
else
|
|
echo "This is NOT a mock run. Watch for the generated files!"
|
|
fi
|
|
|
|
- name: Delete tag and release
|
|
uses: dev-drprasad/delete-tag-and-release@v0.1.3
|
|
if: github.event.inputs.isMock != 'mock'
|
|
with:
|
|
delete_release: true
|
|
tag_name: nightly
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Sleep for a few seconds to prevent timing issues between the deletion and creation of the release
|
|
run: sleep 10
|
|
|
|
- name: Create nightly GitHub release
|
|
id: release
|
|
uses: actions/create-release@v1
|
|
if: github.event.inputs.isMock != 'mock'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
draft: false
|
|
tag_name: nightly
|
|
release_name: nightly
|
|
prerelease: true
|
|
|
|
- name: Save release upload URL to artifact
|
|
run: echo "${{ steps.release.outputs.upload_url }}" > artifacts/release-upload-url
|
|
|
|
- name: Save version number to artifact
|
|
run: echo "nightly" > artifacts/release-version
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: artifacts
|
|
path: artifacts
|
|
|
|
build-release:
|
|
name: build-release
|
|
needs: [create-github-release]
|
|
runs-on: ${{ matrix.triple.os }}
|
|
container: ${{ matrix.triple.container }}
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
triple:
|
|
# Standard x86-64 stuff, stable
|
|
- {
|
|
os: "ubuntu-18.04",
|
|
target: "x86_64-unknown-linux-gnu",
|
|
cross: false,
|
|
strip: true,
|
|
}
|
|
- {
|
|
os: "ubuntu-18.04",
|
|
target: "x86_64-unknown-linux-gnu",
|
|
cross: false,
|
|
container: quay.io/pypa/manylinux2014_x86_64,
|
|
suffix: "2-17",
|
|
strip: true,
|
|
}
|
|
- {
|
|
os: "ubuntu-18.04",
|
|
target: "i686-unknown-linux-gnu",
|
|
cross: true,
|
|
strip: true,
|
|
}
|
|
- {
|
|
os: "ubuntu-18.04",
|
|
target: "x86_64-unknown-linux-musl",
|
|
cross: false,
|
|
strip: true,
|
|
}
|
|
- {
|
|
os: "ubuntu-18.04",
|
|
target: "i686-unknown-linux-musl",
|
|
cross: true,
|
|
strip: true,
|
|
}
|
|
- {
|
|
os: "macOS-latest",
|
|
target: "x86_64-apple-darwin",
|
|
cross: false,
|
|
strip: true,
|
|
}
|
|
- {
|
|
os: "windows-2019",
|
|
target: "x86_64-pc-windows-msvc",
|
|
cross: false,
|
|
}
|
|
- { os: "windows-2019", target: "i686-pc-windows-msvc", cross: false }
|
|
- {
|
|
os: "windows-2019",
|
|
target: "x86_64-pc-windows-gnu",
|
|
cross: false,
|
|
}
|
|
|
|
# aarch64
|
|
- {
|
|
os: "ubuntu-18.04",
|
|
target: "aarch64-unknown-linux-gnu",
|
|
cross: true,
|
|
}
|
|
|
|
# armv7
|
|
- {
|
|
os: "ubuntu-18.04",
|
|
target: "armv7-unknown-linux-gnueabihf",
|
|
cross: true,
|
|
}
|
|
|
|
# PowerPC 64 LE
|
|
- {
|
|
os: "ubuntu-18.04",
|
|
target: "powerpc64le-unknown-linux-gnu",
|
|
cross: true,
|
|
}
|
|
|
|
# Risc-V 64gc
|
|
- {
|
|
os: "ubuntu-18.04",
|
|
target: "riscv64gc-unknown-linux-gnu",
|
|
cross: true,
|
|
}
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
- uses: actions/setup-python@v2
|
|
|
|
- name: Get release download URL
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: artifacts
|
|
path: artifacts
|
|
|
|
- name: Set release upload URL and release version
|
|
shell: bash
|
|
run: |
|
|
release_upload_url="$(cat ./artifacts/release-upload-url)"
|
|
echo "RELEASE_UPLOAD_URL=$release_upload_url" >> $GITHUB_ENV
|
|
release_version="$(cat ./artifacts/release-version)"
|
|
echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV
|
|
|
|
- name: Validate release environment variables
|
|
run: |
|
|
echo "Release upload url: ${{ env.RELEASE_UPLOAD_URL }}"
|
|
echo "Release version: ${{ env.RELEASE_VERSION }}"
|
|
|
|
- name: Install Net-Framework-Core (Windows x86-64 MSVC)
|
|
if: matrix.triple.target == 'x86_64-pc-windows-msvc'
|
|
shell: powershell
|
|
run: Install-WindowsFeature Net-Framework-Core
|
|
|
|
- name: Install wixtoolset (Windows x86-64 MSVC)
|
|
if: matrix.triple.target == 'x86_64-pc-windows-msvc'
|
|
uses: crazy-max/ghaction-chocolatey@v1.4.0
|
|
with:
|
|
args: install -y wixtoolset
|
|
|
|
- name: Install toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
override: true
|
|
target: ${{ matrix.triple.target }}
|
|
|
|
- uses: Swatinem/rust-cache@v1
|
|
with:
|
|
key: ${{ matrix.triple.target }}
|
|
|
|
- name: Build
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: build
|
|
args: --release --verbose --target=${{ matrix.triple.target }} --features "battery"
|
|
use-cross: ${{ matrix.triple.cross }}
|
|
|
|
- name: Move autocomplete to working directory
|
|
shell: bash
|
|
run: |
|
|
mkdir completion
|
|
cp -r ./target/${{ matrix.triple.target }}/release/build/bottom-*/out/. completion
|
|
|
|
- name: Strip release binary (macOS or Linux x86-64/i686)
|
|
if: matrix.triple.strip == true
|
|
run: |
|
|
strip target/${{ matrix.triple.target }}/release/btm
|
|
|
|
# TODO: Strip ARM
|
|
|
|
- name: Bundle release and completion (Windows)
|
|
if: matrix.triple.os == 'windows-2019'
|
|
shell: bash
|
|
run: |
|
|
cp target/${{ matrix.triple.target }}/release/btm.exe btm.exe
|
|
7z a bottom_${{ matrix.triple.target }}.zip "btm.exe"
|
|
7z a bottom_${{ matrix.triple.target }}.zip "completion"
|
|
echo "ASSET=bottom_${{ matrix.triple.target }}.zip" >> $GITHUB_ENV
|
|
|
|
- name: Bundle release and completion (Linux and macOS)
|
|
if: matrix.triple.os != 'windows-2019'
|
|
shell: bash
|
|
run: |
|
|
cp target/${{ matrix.triple.target }}/release/btm ./btm
|
|
tar -czvf bottom_${{ matrix.triple.target }}${{ matrix.triple.suffix }}.tar.gz btm completion
|
|
echo "ASSET=bottom_${{ matrix.triple.target }}${{ matrix.triple.suffix }}.tar.gz" >> $GITHUB_ENV
|
|
|
|
# TODO: Move this elsewhere; do this all at once, and do not continue if any fails. Store artifacts. Do the same for deployment.
|
|
|
|
- name: Upload main release
|
|
if: github.event.inputs.isMock != 'mock'
|
|
uses: actions/upload-release-asset@v1.0.1
|
|
id: upload
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ env.RELEASE_UPLOAD_URL }}
|
|
asset_path: ${{ env.ASSET }}
|
|
asset_name: ${{ env.ASSET }}
|
|
asset_content_type: application/octet-stream
|
|
|
|
- name: Build msi file (Windows x86-64 MSVC)
|
|
if: matrix.triple.target == 'x86_64-pc-windows-msvc'
|
|
shell: powershell
|
|
run: |
|
|
cargo install cargo-wix --version 0.3.1 --locked
|
|
cargo wix init
|
|
cargo wix
|
|
|
|
- name: Upload msi file (Windows x86-64 MSVC)
|
|
if: matrix.triple.target == 'x86_64-pc-windows-msvc' && github.event.inputs.isMock != 'mock'
|
|
uses: actions/upload-release-asset@v1.0.1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ env.RELEASE_UPLOAD_URL }}
|
|
asset_path: bottom_x86_64_installer.msi
|
|
asset_name: bottom_x86_64_installer.msi
|
|
asset_content_type: application/octet-stream
|
|
|
|
- name: Build Debian release (Linux x86-64 GNU)
|
|
if: matrix.triple.target == 'x86_64-unknown-linux-gnu' && matrix.triple.container == ''
|
|
run: |
|
|
cargo install cargo-deb --version 1.29.0 --locked
|
|
cargo deb
|
|
cp ./target/debian/bottom_*.deb ./bottom_${{ env.RELEASE_VERSION }}_amd64.deb
|
|
|
|
- name: Upload Debian file (Linux x86-64 GNU)
|
|
if: matrix.triple.target == 'x86_64-unknown-linux-gnu' && matrix.triple.container == '' && github.event.inputs.isMock != 'mock'
|
|
uses: actions/upload-release-asset@v1.0.1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ env.RELEASE_UPLOAD_URL }}
|
|
asset_path: bottom_${{ env.RELEASE_VERSION }}_amd64.deb
|
|
asset_name: bottom_${{ env.RELEASE_VERSION }}_amd64.deb
|
|
asset_content_type: application/octet-stream
|
|
|
|
- name: Compress completion files (Linux x86-64 GNU)
|
|
if: matrix.triple.target == 'x86_64-unknown-linux-gnu' && matrix.triple.container == ''
|
|
shell: bash
|
|
run: |
|
|
tar -C ./completion -czvf completion.tar.gz .
|
|
|
|
- name: Release completion files (Linux x86-64 GNU)
|
|
if: matrix.triple.target == 'x86_64-unknown-linux-gnu' && matrix.triple.container == '' && github.event.inputs.isMock != 'mock'
|
|
uses: actions/upload-release-asset@v1.0.1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ env.RELEASE_UPLOAD_URL }}
|
|
asset_path: completion.tar.gz
|
|
asset_name: completion.tar.gz
|
|
asset_content_type: application/octet-stream
|