Skip to content

Commit

Permalink
Add test to CI
Browse files Browse the repository at this point in the history
  • Loading branch information
mondeja committed Nov 11, 2024
1 parent 4398438 commit c7c5a13
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 0 deletions.
8 changes: 8 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ jobs:
codesign: '-'
codesign-prefix: 'com.example.'
codesign-options: 'runtime'
upx: ${{ startsWith(matrix.os, 'ubuntu-') && matrix.target != 'x86_64-pc-windows-gnu' && matrix.target != 'aarch64-unknown-linux-gnu' }}
- name: Check action outputs
run: |
printf 'outputs.archive should not be empty\n'
Expand All @@ -121,6 +122,13 @@ jobs:
printf 'outputs.md5 should be a file\n'
test -f "${{ steps.upload-rust-binary-action.outputs.md5 }}"
- name: Check UPX
if: startsWith(matrix.os, 'ubuntu-') && matrix.target != 'x86_64-pc-windows-gnu' && matrix.target != 'aarch64-unknown-linux-gnu'
run: |
printf 'binary should be compressed with UPX\n'
target_dir="./test-crate/target/release"
tar -C "$target_dir" -xf "${{ steps.upload-rust-binary-action.outputs.tar }}"
test -n "$(file "$target_dir/test-crate" | grep 'no section header')"
- name: Check b2 output
if: ${{ contains(matrix.checksums || 'b2,sha256,sha512,sha1,md5', 'b2') }}
run: |
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ Currently, this action is basically intended to be used in combination with an a
| codesign | false | Sign build products using `codesign` on macOS | String | |
| codesign-prefix | false | Prefix for the `codesign` identifier on macOS | String | |
| codesign-options | false | Specifies a set of option flags to be embedded in the code signature on macOS. See the `codesign` manpage for details. | String | |
| upx | false | Compress binaries using [UPX](https://upx.github.io) on some platforms | Boolean | `false` |

\[1] Required one of `token` input option or `GITHUB_TOKEN` environment variable. Not required when `dry-run` input option is set to `true`.<br>
\[2] This is optional but it is recommended that this always be set to clarify which target you are building for if macOS is included in the matrix because GitHub Actions changed the default architecture of macos-latest since macos-14.<br>
Expand Down
5 changes: 5 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,10 @@ inputs:
codesign_options:
description: Alias for 'codesign-options'
required: false
upx:
description: Compress binaries using UPX on some platforms
required: false
default: 'false'

outputs:
archive:
Expand Down Expand Up @@ -166,3 +170,4 @@ runs:
INPUT_CODESIGN: ${{ inputs.codesign }}
INPUT_CODESIGN_PREFIX: ${{ inputs.codesign-prefix || inputs.codesign_prefix }}
INPUT_CODESIGN_OPTIONS: ${{ inputs.codesign-options || inputs.codesign_options }}
INPUT_UPX: ${{ inputs.upx }}
29 changes: 29 additions & 0 deletions main.sh
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,7 @@ build() {
*) bail "unrecognized build tool '${build_tool}'" ;;
esac
}

do_codesign() {
if [[ -n "${INPUT_CODESIGN:-}" ]]; then
local codesign_options=(--sign "${INPUT_CODESIGN}")
Expand Down Expand Up @@ -374,6 +375,34 @@ case "${INPUT_TARGET:-}" in
;;
esac

# Compress binaries with UPX
if [[ "${INPUT_UPX:-}" = "true" ]]; then
compress_binaries() {
for bin_exe in "${bins[@]}"; do
x upx --best "${target_dir}/${bin_exe}"
done
}

case "${host_os}" in
windows)
choco install upx -y
compress_binaries
;;
linux)
if ! type -P upx >/dev/null; then
sudo apt-get install -y upx-ucl
fi
compress_binaries
;;
macos)
# MacOS is not currently supported by UPX
;;
*)
warn "UPX is not available on ${host_os}"
;;
esac
fi

case "${host_os}" in
macos)
if type -P codesign >/dev/null; then
Expand Down

0 comments on commit c7c5a13

Please sign in to comment.