name: Nightly Release on: workflow_dispatch: inputs: tag: description: "Nightly version tag (1, 2, 3...)" required: true jobs: create-tag: runs-on: ubuntu-latest outputs: tagname: ${{ steps.get_tag.outputs.tagname }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Get tag from Cargo.toml id: get_tag run: | VERSION=$(cargo metadata --format-version=1 --no-deps | jq '.packages[0].version') echo "tagname=v$VERSION-nightly.${{ github.event.inputs.tag }}" >> $GITHUB_OUTPUT - uses: rickstaa/action-create-tag@v1 with: tag: ${{ steps.get_tag.outputs.tagname }} build-binary: needs: create-tag strategy: matrix: platform: - release_for: linux-aarch64 os: ubuntu-latest target: aarch64-unknown-linux-musl bin: cup name: cup-linux-aarch64 command: build - release_for: linux-x86_64 os: ubuntu-latest target: x86_64-unknown-linux-musl bin: cup name: cup-linux-x86_64 command: build runs-on: ${{ matrix.platform.os }} steps: - name: Checkout uses: actions/checkout@v4 - name: Setup rust uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Install cross run: cargo install cross --git https://github.com/cross-rs/cross - name: Build binary run: cross ${{ matrix.platform.command }} --target ${{ matrix.platform.target }} --release - name: Upload CLI uses: actions/upload-artifact@v4 with: name: ${{ matrix.platform.name }} path: target/${{ matrix.platform.target }}/release/${{ matrix.platform.bin }} build-image: needs: [create-tag, build-binary] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - 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.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push image uses: docker/build-push-action@v6 with: context: . platforms: linux/amd64, linux/arm64 push: true tags: ghcr.io/sergi0g/cup:${{ needs.create-tag.outputs.tagname }} nightly-release: runs-on: ubuntu-latest needs: [create-tag, build-image, build-binary] steps: - name: Download arm64 binary uses: actions/download-artifact@v4 with: name: cup-linux-aarch64 path: cup-linux-aarch64 - name: Download x86 binary uses: actions/download-artifact@v4 with: name: cup-linux-x86_64 path: cup-linux-x86_64 - name: Create nightly release uses: softprops/action-gh-release@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: prerelease: true tag_name: ${{ needs.create-tag.outputs.tagname }} name: ${{ needs.create-tag.outputs.tagname }} files: | cup-linux-aarch64/cup-linux-aarch64 cup-linux-x86_64/cup-linux-x86_64