From f0c2d88764ff6fe5ca5c6df7f089ead7402cd32b Mon Sep 17 00:00:00 2001 From: MedzikUser Date: Fri, 17 Jun 2022 13:58:53 +0200 Subject: [PATCH] ci: setup release build --- .github/workflows/build-release-binaries.yml | 143 +++++++++++++++++++ Cross.toml | 3 + src/plugins/mod.rs | 2 +- 3 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build-release-binaries.yml create mode 100644 Cross.toml diff --git a/.github/workflows/build-release-binaries.yml b/.github/workflows/build-release-binaries.yml new file mode 100644 index 0000000..92f4883 --- /dev/null +++ b/.github/workflows/build-release-binaries.yml @@ -0,0 +1,143 @@ +name: Build release binaries (and publish them if this is a tag) + +on: + push: + paths-ignore: + - '*.md' + + workflow_dispatch: + +env: + CARGO_TERM_COLOR: always + +jobs: + binaries: + strategy: + fail-fast: false + + matrix: + target: + - x86_64-unknown-linux-musl + - aarch64-unknown-linux-musl + - x86_64-pc-windows-msvc + - x86_64-apple-darwin + - aarch64-apple-darwin + - x86_64-unknown-freebsd + + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-musl + artifact_name: target/x86_64-unknown-linux-musl/release/servers + release_name: x86_64-unknown-linux-musl + cross: true + strip: true + compress: true + cargo_flags: "" + + - os: ubuntu-latest + target: aarch64-unknown-linux-musl + artifact_name: target/aarch64-unknown-linux-musl/release/servers + release_name: aarch64-unknown-linux-musl + cross: true + strip: false + compress: true + cargo_flags: "" + + - os: windows-latest + target: x86_64-pc-windows-msvc + artifact_name: target/x86_64-pc-windows-msvc/release/servers.exe + release_name: x86_64-pc-windows-msvc.exe + cross: false + strip: true + compress: true + cargo_flags: "" + + - os: macos-latest + target: x86_64-apple-darwin + artifact_name: target/x86_64-apple-darwin/release/servers + release_name: x86_64-apple-darwin + cross: false + strip: true + compress: true + cargo_flags: "" + + - os: macos-latest + target: aarch64-apple-darwin + artifact_name: target/aarch64-apple-darwin/release/servers + release_name: aarch64-apple-darwin + cross: false + strip: true + compress: true + cargo_flags: "" + + - os: ubuntu-latest + target: x86_64-unknown-freebsd + artifact_name: target/x86_64-unknown-freebsd/release/servers + release_name: x86_64-unknown-freebsd + cross: true + strip: false + compress: false + cargo_flags: "" + + name: ${{ matrix.os }} for ${{ matrix.target }} + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: ${{ matrix.target }} + + - name: cargo build + uses: actions-rs/cargo@v1 + with: + command: build + args: --release --target=${{ matrix.target }} ${{ matrix.cargo_flags }} + use-cross: ${{ matrix.cross }} + + - name: Compress binaries + uses: svenstaro/upx-action@v2 + with: + file: ${{ matrix.artifact_name }} + args: --lzma + strip: ${{ matrix.strip }} + if: ${{ matrix.compress }} + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.target }} + path: ${{ matrix.artifact_name }} + + ### + # Below this line, steps will only be ran if a tag was pushed. + ### + + - name: Get tag name + id: tag_name + run: | + echo ::set-output name=current_version::${GITHUB_REF#refs/tags/v} + shell: bash + if: startsWith(github.ref, 'refs/tags/v') + + - name: Get CHANGELOG.md entry + id: changelog_reader + uses: mindsers/changelog-reader-action@v1 + with: + version: ${{ steps.tag_name.outputs.current_version }} + path: ./CHANGELOG.md + if: startsWith(github.ref, 'refs/tags/v') + + - name: Publish + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ matrix.artifact_name }} + tag: ${{ github.ref }} + asset_name: servers-$tag-${{ matrix.release_name }} + body: ${{ steps.changelog_reader.outputs.log_entry }} + if: startsWith(github.ref, 'refs/tags/v') diff --git a/Cross.toml b/Cross.toml new file mode 100644 index 0000000..ccb61cf --- /dev/null +++ b/Cross.toml @@ -0,0 +1,3 @@ +# NOTE: Custom image specification for freebsd is required until new version of cross is released. +[target.x86_64-unknown-freebsd] +image = "svenstaro/cross-x86_64-unknown-freebsd:latest" diff --git a/src/plugins/mod.rs b/src/plugins/mod.rs index 51e90a6..373fed4 100644 --- a/src/plugins/mod.rs +++ b/src/plugins/mod.rs @@ -16,7 +16,7 @@ //! ```toml //! [dependencies] //! async-trait = "0.1.56" -//! servers = { path = ".." } +//! servers = "0.1.0" //! ``` //! //! ### Command plugin