name: Publish on: push: tags: - '*' jobs: publish: name: ${{ matrix.target }} runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-latest target: x86_64-unknown-linux-gnu use-cross: false - os: ubuntu-latest target: x86_64-unknown-linux-musl use-cross: false - os: ubuntu-latest target: arm-unknown-linux-gnueabihf use-cross: true - os: windows-latest target: x86_64-pc-windows-msvc use-cross: false - os: macos-latest target: x86_64-apple-darwin use-cross: false - os: macos-latest target: aarch64-apple-darwin use-cross: false steps: - name: Checkout repository uses: actions/checkout@v2 with: fetch-depth: 1 - name: Set the version id: version run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/} - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal override: true target: ${{ matrix.target }} - name: Build uses: actions-rs/cargo@v1 with: use-cross: ${{ matrix.use-cross }} command: build args: --target ${{ matrix.target }} --release --locked - name: Strip binary if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' run: strip target/release/sd - name: Upload binaries to release uses: svenstaro/upload-release-action@v1-release with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: target/release/sd asset_name: sd-${{ steps.version.outputs.VERSION }}-${{ matrix.target }} tag: ${{ github.ref }}