From e2ec6bbcdc12167dcee896003783dc5c6c4ee21e Mon Sep 17 00:00:00 2001 From: Rostislav Raykov Date: Thu, 19 Sep 2019 11:41:23 +0200 Subject: [PATCH] feat: Refactor the GH actions Have a matrix to build both macOS and Linux binaries. Fix the version fetching and putting it in the release archive's name --- .github/workflows/publish.yml | 68 ++++++++++++++++++++++++++++++++--- .github/workflows/release.yml | 37 ------------------- 2 files changed, 63 insertions(+), 42 deletions(-) delete mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8a199d9..0bf4588 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,13 +1,71 @@ on: push: - branches: - - master + tags: + - '*.*.*' -name: Publish to crates.io +name: Publish jobs: - build_and_test: - name: Publish cloudflare-ddns + build: + name: Build + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macOS-latest] + steps: + - name: Checkout + uses: actions/checkout@master + - name: Install nightly toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + override: true + - name: Cargo build + uses: actions-rs/cargo@v1 + with: + toolchain: nightly + command: build + args: --release + - name: Get the version + id: get_version + run: echo ::set-output name=VERSION::$(echo $GITHUB_REF | cut -d / -f 3) + - name: Archive binary + run: tar cfJ cloudflare-ddns-${{ matrix.os }}-${{ steps.get_version.outputs.VERSION }}.tar.xz target/release/cloudflare-ddns + - name: Save archived binary as an artifact + uses: actions/upload-artifact@v1 + with: + name: binary-${{ matrix.os }}-${{ steps.get_version.outputs.VERSION }} + path: cloudflare-ddns-${{ matrix.os }}-${{ steps.get_version.outputs.VERSION }}.tar.xz + create_github_release: + name: Prepare a GitHub release + runs-on: ubuntu-latest + needs: build + steps: + - name: Get the version + id: get_version + run: echo ::set-output name=VERSION::$(echo $GITHUB_REF | cut -d / -f 3) + - name: Download macOS binary archive + uses: actions/download-artifact@v1 + with: + name: binary-macOS-latest-${{ steps.get_version.outputs.VERSION }} + path: cloudflare-ddns-macOS-${{ steps.get_version.outputs.VERSION }}.tar.xz + - name: Download Linux binary archive + uses: actions/download-artifact@v1 + with: + name: binary-ubuntu-latest-${{ steps.get_version.outputs.VERSION }} + path: cloudflare-ddns-ubuntu-${{ steps.get_version.outputs.VERSION }}.tar.xz + - name: Create release + uses: softprops/action-gh-release@v1 + with: + name: cloudflare-ddns v${{ steps.get_version.outputs.VERSION }} + files: | + LICENSE + cloudflare-ddns-macOS-${{ steps.get_version.outputs.VERSION }} + cloudflare-ddns-ubuntu-${{ steps.get_version.outputs.VERSION }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + publish_crate: + name: Publish cloudflare-ddns to crates.io runs-on: ubuntu-latest steps: - name: Checkout latest master diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 0195195..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,37 +0,0 @@ -on: - push: - tags: - - '*.*.*' - -name: Create a GitHub release - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@master - - name: Install nightly toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: nightly - override: true - - name: Cargo build - uses: actions-rs/cargo@v1 - with: - toolchain: nightly - command: build - args: --release - - name: Get the version - run: echo ::set-env name=VERSION::$(echo $GITHUB_REF | cut -d / -f 3) - - name: Archive - run: tar cfJ cloudflare-ddns-${VERSION}.tar.xz target/release/cloudflare-ddns - - name: Create release - uses: softprops/action-gh-release@v1 - with: - body: | - cloudflare-ddns release ${VERSION} - files: | - cloudflare-ddns-${VERSION} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file