diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 6a132a09..2f3e2a33 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,9 +4,65 @@ on: release: types: [published] +defaults: + run: + shell: bash + jobs: publish: uses: stellar/actions/.github/workflows/rust-publish.yml@main secrets: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + + upload: + strategy: + matrix: + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + - os: ubuntu-latest + target: aarch64-unknown-linux-gnu + - os: macos-latest + target: x86_64-apple-darwin + - os: macos-latest + target: aarch64-apple-darwin + - os: windows-latest + target: x86_64-pc-windows-msvc + ext: .exe + runs-on: ${{ matrix.os }} + env: + VERSION: '${{ github.event.release.name }}' + NAME: 'stellar-xdr-${{ github.event.release.name }}-${{ matrix.target }}' + steps: + - uses: actions/checkout@v3 + - run: rustup update + - run: rustup target add ${{ matrix.target }} + - if: matrix.target == 'aarch64-unknown-linux-gnu' + run: sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + - name: Package + run: cargo package --no-verify + - name: Build + env: + CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc + run: | + cd target/package + tar xvfz stellar-xdr-$VERSION.crate + cd stellar-xdr-$VERSION + cargo build --target-dir=../.. --release --target ${{ matrix.target }} --features cli + - uses: actions/upload-artifact@v3 + with: + name: ${{ env.NAME }} + path: 'target/${{ matrix.target }}/release/stellar-xdr${{ matrix.ext }}' + - name: Upload + uses: actions/github-script@v6 + with: + script: | + const fs = require('fs'); + await github.rest.repos.uploadReleaseAsset({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: ${{ github.event.release.id }}, + name: '${{ env.NAME }}${{ matrix.ext }}', + data: fs.readFileSync('target/${{ matrix.target }}/release/stellar-xdr${{ matrix.ext }}'), + });