test #6
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: test | |
on: | |
push: | |
jobs: | |
release-binaries: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-22.04, macos-12] | |
arch: [amd64, arm64] | |
permissions: | |
contents: write | |
packages: write | |
id-token: write | |
steps: | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-region: us-east-2 | |
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/ghwf-${{ github.event.repository.name }} | |
- name: Validate tag | |
env: | |
SEMVER: v1.1.1 | |
run: | | |
if [[ $SEMVER =~ v[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]; then echo "Tag is okay" && exit 0; else echo "invalid tag" && exit 1; fi | |
aws s3 ls s3://axelar-releases/ampd/"$SEMVER" && echo "tag already exists, use a new one" && exit 1 | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: '0' | |
submodules: recursive | |
- name: Install Rust | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
- name: Import GPG key | |
id: import_gpg | |
uses: crazy-max/ghaction-import-gpg@v6 | |
with: | |
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} | |
passphrase: ${{ secrets.GPG_PASSPHRASE }} | |
- name: build and sign darwin binaries | |
env: | |
SEMVER: v1.1.1 | |
if: matrix.os == 'macos-12' | |
run: | | |
OS="darwin" | |
ARCH="${{ matrix.arch }}" | |
if [ "$ARCH" == "arm64" ] | |
then | |
brew install protobuf | |
rustup target add aarch64-apple-darwin | |
cargo build --release --target aarch64-apple-darwin | |
mkdir ampdbin | |
mv "/Users/runner/work/axelar-amplifier/axelar-amplifier/target/aarch64-apple-darwin/release/ampd" "./ampdbin/ampd-$OS-$ARCH-$SEMVER" | |
gpg --armor --detach-sign "./ampdbin/ampd-$OS-$ARCH-$SEMVER" | |
else | |
brew install protobuf | |
cargo build --release | |
mkdir ampdbin | |
mv "/Users/runner/work/axelar-amplifier/axelar-amplifier/target/release/ampd" "./ampdbin/ampd-$OS-$ARCH-$SEMVER" | |
gpg --armor --detach-sign "./ampdbin/ampd-$OS-$ARCH-$SEMVER" | |
fi | |
- name: build and sign linux binaries | |
env: | |
SEMVER: v1.1.1 | |
if: matrix.os == 'ubuntu-22.04' | |
run: | | |
OS="linux" | |
ARCH="${{ matrix.arch }}" | |
if [ "$ARCH" == "arm64" ] | |
then | |
sudo apt-get install protobuf-compiler gcc-aarch64-linux-gnu g++-aarch64-linux-gnu | |
rustup target add aarch64-unknown-linux-gnu | |
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc | |
cargo build --release --target aarch64-unknown-linux-gnu | |
mkdir ampdbin | |
mv "/home/runner/work/axelar-amplifier/axelar-amplifier/target/aarch64-unknown-linux-gnu/release/ampd" "./ampdbin/ampd-$OS-$ARCH-$SEMVER" | |
gpg --armor --detach-sign "./ampdbin/ampd-$OS-$ARCH-$SEMVER" | |
else | |
sudo apt-get install protobuf-compiler | |
cargo build --release | |
mkdir ampdbin | |
mv "/home/runner/work/axelar-amplifier/axelar-amplifier/target/release/ampd" "./ampdbin/ampd-$OS-$ARCH-$SEMVER" | |
gpg --armor --detach-sign "./ampdbin/ampd-$OS-$ARCH-$SEMVER" | |
fi | |
- name: Test Binary Format | |
working-directory: ./ampdbin | |
run: | | |
for binary in ./ampd-*; do | |
if [[ "$binary" != *.asc ]]; then | |
echo "Testing binary: $binary" | |
if [[ "${{ matrix.os }}" == "ubuntu-22.04" ]]; then | |
OUTPUT=$(file "$binary" | awk -F, '{print $1"," $2}') | |
if [[ "${{ matrix.arch }}" == "amd64" ]]; then | |
EXPECTED="ELF 64-bit LSB pie executable, x86-64" | |
elif [[ "${{ matrix.arch }}" == "arm64" ]]; then | |
EXPECTED="ELF 64-bit LSB pie executable, ARM aarch64" | |
fi | |
elif [[ "${{ matrix.os }}" == "macos-12" ]]; then | |
OUTPUT=$(file "$binary") | |
if [[ "${{ matrix.arch }}" == "amd64" ]]; then | |
EXPECTED="Mach-O 64-bit executable x86_64" | |
elif [[ "${{ matrix.arch }}" == "arm64" ]]; then | |
EXPECTED="Mach-O 64-bit executable arm64" | |
fi | |
fi | |
echo "Output: $OUTPUT" | |
echo "Expected: $EXPECTED" | |
if [[ "$OUTPUT" == *"$EXPECTED"* ]]; then | |
echo "The binary format is correct." | |
else | |
echo "Error: The binary format does not match the expected format." | |
exit 1 | |
fi | |
fi | |
done |