Skip to content
file-minus

GitHub Action

Strip and run UPX on executables

2.4.1 Latest version

Strip and run UPX on executables

file-minus

Strip and run UPX on executables

Dramatically decreases size of executables by stripping them of debug symbols and running UPX on them

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Strip and run UPX on executables

uses: svenstaro/[email protected]

Learn more about this action in svenstaro/upx-action

Choose a version

Strip and run UPX on executables GitHub Actions Workflow

This action allows you to select an executable file which is then stripped and run through upx which drastically decreases the size of those executables. It runs on all operating systems types offered by GitHub.

Input variables

  • files: Newline-delimited list of path globs for files to compress. It's compressed in-place. If on Windows, provide Unix style paths (c:/something). either files or file required
  • file: The file you want to compress. It's compressed in-place. Deprecated, prefer files.
  • args: Arguments to pass to UPX. optional
  • strip: Whether or not "strip" symbols from object file (default true). optional
  • strip_args: Arguments to pass to strip. optional

Usage

This Action is meant to be ran on just-compiled executables in the same CI job.

Simple example:

name: Publish

on:
  push:
    tags:
      - '*'

jobs:
  build:
    name: Publish binaries
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Build
      run: cargo build --release --locked
    - name: Compress binaries
      uses: svenstaro/upx-action@v2
      with:
        files: |
          target/release/mything
          target/release/*

Complex example with more operating systems and inputs:

name: Publish

on:
  push:
    tags:
      - '*'

jobs:
  build:
    name: Publish binaries for ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
          - os: ubuntu-latest
            files: |
                target/release/mything
            args: --best --lzma
            strip: true
          - os: windows-latest
            files: |
                target/release/mything.exe
            args: -9
            strip: false
          - os: macos-latest
            files: |
                target/release/mything
            args: --best
            strip: true
    steps:
    - uses: actions/checkout@v3
    - name: Build
      run: cargo build --release --locked
    - name: Compress binaries
      uses: svenstaro/upx-action@v2
      with:
        files: |
            ${{ matrix.file }}
        args: ${{ matrix.args }}
        strip: ${{ matrix.strip }}

Releasing and publishing

To release this Action: