name: Continuous Deployment on: push: tags: - '[0-9]+.[0-9]+.[0-9]+' jobs: publish: name: Publishing for ${{ matrix.job.os }} runs-on: ${{ matrix.job.os }} strategy: matrix: job: - os: macos-latest target: x86_64-apple-darwin use-cross: false - os: macos-latest target: aarch64-apple-darwin use-cross: false - os: windows-latest target: x86_64-pc-windows-msvc use-cross: false - os: ubuntu-latest target: x86_64-unknown-linux-gnu use-cross: false - os: ubuntu-latest target: x86_64-unknown-linux-musl use-cross: true - os: ubuntu-latest target: i686-unknown-linux-gnu use-cross: true - os: ubuntu-latest target: arm-unknown-linux-gnueabihf use-cross: true - os: ubuntu-latest target: aarch64-unknown-linux-gnu use-cross: true steps: - name: Installing Rust toolchain uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.job.target }} - name: Checkout repository uses: actions/checkout@v3 - name: Install cross if: matrix.job.use-cross uses: taiki-e/install-action@v2 with: tool: cross - name: Cargo build env: MACOSX_DEPLOYMENT_TARGET: 10.7 shell: bash run: | if [[ "${{ matrix.job.use-cross }}" == "true" ]]; then cross build --release --target ${{ matrix.job.target }} else cargo build --release --target ${{ matrix.job.target }} fi - name: Install required dependencies shell: bash run: | if [[ ${{ matrix.job.target }} == arm-unknown-linux-gnueabihf ]]; then sudo apt update sudo apt-get install -y binutils-arm-linux-gnueabihf fi if [[ ${{ matrix.job.target }} == aarch64-unknown-linux-gnu ]]; then sudo apt update sudo apt-get install -y binutils-aarch64-linux-gnu fi - name: Packaging final binary shell: bash env: TARGET: ${{ matrix.job.target }} PROJECT_NAME: delta PACKAGE_NAME: git-delta OS_NAME: ${{ matrix.job.os }} run: ./etc/ci/before_deploy.sh - name: Releasing assets uses: softprops/action-gh-release@v1 with: files: | delta-*-${{ matrix.job.target }}.* git-delta*.deb env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} publish-to-cargo: name: Publishing to Cargo runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable - run: cargo publish --token ${{ secrets.CARGO_API_KEY }} --allow-dirty publish-to-winget: name: Publish to WinGet runs-on: ubuntu-latest needs: publish steps: - uses: vedantmgoyal2009/winget-releaser@v2 with: identifier: dandavison.delta version: ${{ github.ref_name }} installers-regex: '-pc-windows-msvc\.zip$' token: ${{ secrets.WINGET_TOKEN }}