name: release on: push: branches: [main] tags: ["v[0-9]+.[0-9]+.[0-9]+"] pull_request: workflow_dispatch: env: CARGO_INCREMENTAL: 0 jobs: release: name: ${{ matrix.target }} permissions: contents: write runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: ubuntu-latest target: x86_64-unknown-linux-musl - os: ubuntu-latest target: arm-unknown-linux-musleabihf - os: ubuntu-latest target: armv7-unknown-linux-musleabihf - os: ubuntu-latest target: aarch64-unknown-linux-musl - os: macos-11 target: x86_64-apple-darwin - os: macos-11 target: aarch64-apple-darwin - os: windows-latest target: x86_64-pc-windows-msvc - os: windows-latest target: aarch64-pc-windows-msvc steps: - name: Checkout repository uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set artifact name shell: bash run: | version="$(git describe --tags --match='v*.*.*' --always)" name="zoxide-$version-${{ matrix.target }}" echo "ARTIFACT_NAME=$name" >> $GITHUB_ENV echo "version: $version" echo "artifact: $name" - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal override: true target: ${{ matrix.target }} - name: Setup cache uses: Swatinem/rust-cache@v1 - name: Build binary uses: actions-rs/cargo@v1 with: command: build args: --release --locked --target=${{ matrix.target }} --color=always --verbose use-cross: ${{ runner.os == 'Linux' }} - name: Package (*nix) if: runner.os != 'Windows' run: > tar -cv CHANGELOG.md LICENSE README.md man/ -C contrib/ completions/ -C ../ -C target/${{ matrix.target }}/release/ zoxide | gzip --best > '${{ env.ARTIFACT_NAME }}.tar.gz' - name: Package (Windows) if: runner.os == 'Windows' run: > 7z a ${{ env.ARTIFACT_NAME }}.zip CHANGELOG.md LICENSE README.md ./man/ ./contrib/completions/ ./target/${{ matrix.target }}/release/zoxide.exe - name: Upload artifact uses: actions/upload-artifact@v2 with: name: ${{ matrix.target }} path: | *.zip *.tar.gz - name: Create release if: startsWith(github.ref, 'refs/tags/v') uses: softprops/action-gh-release@v1 with: draft: true files: | *.zip *.tar.gz