name: Deploy on: push: tags: - "[0-9]+.[0-9]+.[0-9]+" permissions: contents: write jobs: build-and-upload: name: Build and upload runs-on: ${{ matrix.os }} strategy: matrix: # You can add more, for any target you'd like! include: - build: linux os: ubuntu-latest target: x86_64-unknown-linux-musl - build: macos os: macos-latest target: x86_64-apple-darwin - build: windows-gnu os: windows-latest target: x86_64-pc-windows-gnu steps: - name: Checkout uses: actions/checkout@v3 - name: Get the release version from the tag shell: bash run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y \ libglib2.0-dev \ # Add any other dependencies needed by your project - name: Set PKG_CONFIG_PATH run: export PKG_CONFIG_PATH=/usr/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig - name: Install Rust # Or @nightly if you want uses: dtolnay/rust-toolchain@stable # Arguments to pass in with: # Make Rust compile to our target (defined in the matrix) targets: ${{ matrix.target }} - name: Build uses: actions-rs/cargo@v1 with: use-cross: true command: build args: --verbose --release --target ${{ matrix.target }} - name: Build archive shell: bash run: | # Replace with the name of your binary binary_name="Calcifer" dirname="$binary_name-${{ env.VERSION }}-${{ matrix.target }}" mkdir "$dirname" if [ "${{ matrix.os }}" = "windows-latest" ]; then mv "target/${{ matrix.target }}/release/$binary_name.exe" "$dirname" else mv "target/${{ matrix.target }}/release/$binary_name" "$dirname" fi if [ "${{ matrix.os }}" = "windows-latest" ]; then 7z a "$dirname.zip" "$dirname" echo "ASSET=$dirname.zip" >> $GITHUB_ENV else tar -czf "$dirname.tar.gz" "$dirname" echo "ASSET=$dirname.tar.gz" >> $GITHUB_ENV fi - name: Release uses: softprops/action-gh-release@v1 with: files: | ${{ env.ASSET }}