name: Release on: push: tags: - "v*" jobs: build: name: Build (${{ matrix.os }}) runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-22.04 target: x86_64-unknown-linux-gnu ext: "" asset_name: x86_64-unknown-linuxu - os: ubuntu-22.04-arm target: aarch64-unknown-linux-gnu ext: "" asset_name: aarch64-unknown-linux-gnu - os: windows-latest target: x86_64-pc-windows-msvc ext: ".exe" asset_name: x86_64-pc-windows-msvc - os: macos-13 target: x86_64-apple-darwin ext: "" asset_name: x86_64-apple-darwin - os: macos-latest target: aarch64-apple-darwin ext: "" asset_name: aarch64-apple-darwin steps: - uses: actions/checkout@v4 - uses: actions-rust-lang/setup-rust-toolchain@v1 - uses: extractions/setup-just@v2 - name: Build run: just build-target ${{ matrix.target }} - name: Rename artifact run: | mv target/${{ matrix.target }}/release/mq${{ matrix.ext }} target/${{ matrix.target }}/release/mq-${{ matrix.asset_name}}${{ matrix.ext }} mv target/${{ matrix.target }}/release/mq-lsp${{ matrix.ext }} target/${{ matrix.target }}/release/mq-lsp-${{ matrix.asset_name}}${{ matrix.ext }} mv target/${{ matrix.target }}/release/mq-mcp${{ matrix.ext }} target/${{ matrix.target }}/release/mq-mcp-${{ matrix.asset_name}}${{ matrix.ext }} - name: Upload artifact uses: actions/upload-artifact@v4 with: name: mq-${{ matrix.asset_name }} path: | target/${{ matrix.target }}/release/mq-${{ matrix.asset_name}}${{ matrix.ext }} target/${{ matrix.target }}/release/mq-lsp-${{ matrix.asset_name }}${{ matrix.ext }} target/${{ matrix.target }}/release/mq-mcp-${{ matrix.asset_name }}${{ matrix.ext }} if-no-files-found: error retention-days: 1 docker: name: Build and Push Docker image runs-on: ubuntu-latest permissions: packages: write contents: read steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata for Docker id: meta uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository }} tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} - name: Build and push Docker image uses: docker/build-push-action@v6 with: context: . push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} release: name: Create Release needs: build runs-on: ubuntu-latest permissions: packages: write contents: write steps: - name: Download artifacts uses: actions/download-artifact@v4 with: pattern: mq-* path: target - name: Generate checksums run: | cd target for file in mq-*/*; do sha256sum "$file" >> checksums.txt done mkdir checksums mv checksums.txt ./checksums/checksums.txt - name: Create Release id: create_release uses: softprops/action-gh-release@v2 with: files: target/*/* draft: true prerelease: false generate_release_notes: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}