e2ec6bbcdc
Have a matrix to build both macOS and Linux binaries. Fix the version fetching and putting it in the release archive's name
88 lines
2.9 KiB
YAML
88 lines
2.9 KiB
YAML
on:
|
|
push:
|
|
tags:
|
|
- '*.*.*'
|
|
|
|
name: Publish
|
|
|
|
jobs:
|
|
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
|
|
uses: actions/checkout@master
|
|
- name: Install nightly toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: nightly
|
|
override: true
|
|
- name: Login to crates.io
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
toolchain: nightly
|
|
command: login
|
|
args: ${{ secrets.CRATES_TOKEN }}
|
|
- name: Publish to crates.io
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
toolchain: nightly
|
|
command: publish |