name: Release
on:
push:
tags:
- "v*"
jobs:
linux:
env:
TARGET_DIR: target/release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
- name: Install latest nightly
uses: actions-rs/toolchain@b2417cde72dcf67f306c0ae8e0828a81bf0b189f
with:
toolchain: nightly
override: true
components: rustfmt, clippy
- name: Install cargo deb
uses: actions-rs/cargo@ae10961054e4aa8b4aa7dffede299aaf087aa33b
with:
command: install
args: cargo-deb
- name: Build debian package
shell: bash
run: |
cargo deb -p diener -o "diener_linux_amd64.deb"
- name: Upload artifacts
uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8
with:
name: linux
path: |
diener_linux_amd64.deb
macos:
env:
TARGET_DIR: target/release
runs-on: macos-10.15
steps:
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
with:
fetch-depth: 0
- name: Get Release Version
run: |
echo GITHUB_REF=$GITHUB_REF
RELEASE_VERSION=${GITHUB_REF#refs/*/}
RAW_VERSION=${RELEASE_VERSION:1}
echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV
echo "RAW_VERSION=$RAW_VERSION" >> $GITHUB_ENV
echo "SHORT_SHA=${GITHUB_SHA::8}" >> $GITHUB_ENV
- name: Install rust toolchain
uses: actions-rs/toolchain@b2417cde72dcf67f306c0ae8e0828a81bf0b189f
with:
toolchain: stable
override: true
- name: Check tooling
shell: bash
run: |
tar --version
shasum --version
cargo --version
rustc --version
- name: Build MacOS binary
run: |
cargo build --locked --profile release
ls -al "${{ env.TARGET_DIR }}/diener"
- name: Check binary
env:
BINARY: "${{ env.TARGET_DIR }}/diener"
run: |
file $BINARY
$BINARY --version
$BINARY --help
- name: Compress & sha256
run: |
tar -czf ${{ env.TARGET_DIR }}/diener_macos.tar.gz -C ${{ env.TARGET_DIR }} diener
SHA256=$(shasum -a 256 ${{ env.TARGET_DIR }}/diener_macos.tar.gz | awk '{ print $1}' | tee ${{ env.TARGET_DIR }}/diener_macos.tar.gz.sha256)
echo SHA256: $SHA256
echo "SHA256=$SHA256" >> $GITHUB_ENV
- name: Upload MacOS artifacts
uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8
with:
name: macos
path: |
${{ env.TARGET_DIR }}/diener_macos.tar.gz
${{ env.TARGET_DIR }}/diener_macos.tar.gz.sha256
- name: Install tera MacOS binary v0.1.3
run: |
URL=https://github.com/chevdor/tera-cli/releases/download/v0.1.3/tera-macos-v0.1.3.tar.gz
wget $URL
tar xvf tera-macos-v0.1.3.tar.gz -C /usr/local/bin
tera --version
- name: Prepare new Formula
env:
NAME: Diener
DESCRIPTION: "dependency diener is a tool for easily changing Substrate or Polkadot dependency versions"
SITE: https://github.com
REPO: paritytech/diener
SHA256: ${{env.SHA256}}
VERSION: ${{env.RAW_VERSION}}
run: |
tera --version
tera --template templates/formula.rb --env-only > $HOME/diener.rb
cat $HOME/diener.rb
- name: Update Homebrew Formula
run: |
cp -f $HOME/diener.rb Formula/diener.rb
git config --global user.name 'CI'
git config --global user.email 'foo@example.invalid'
git commit Formula/diener.rb -m "build: new homebrew formula for ${{ env.RELEASE_VERSION }}"
git push origin HEAD:master
create_draft:
needs: ["linux", "macos"]
name: Create Draft
runs-on: ubuntu-latest
outputs:
release_url: ${{ steps.create-release.outputs.html_url }}
asset_upload_url: ${{ steps.create-release.outputs.upload_url }}
steps:
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
with:
fetch-depth: 0
- name: Get Release Version
run: |
echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
echo "SHORT_SHA=${GITHUB_SHA::8}" >> $GITHUB_ENV
- uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741
- name: Create Release
id: create-release
uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.RELEASE_VERSION }}
release_name: Diener ${{ env.RELEASE_VERSION }} (${{ env.SHORT_SHA }})
draft: true
publish-binaries:
runs-on: ubuntu-latest
needs: ["create_draft"]
steps:
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
- name: Get Release Version
run: |
echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
echo "SHORT_SHA=${GITHUB_SHA::8}" >> $GITHUB_ENV
- uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741
- name: Upload Debian package
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_draft.outputs.asset_upload_url }}
asset_path: "linux/diener_linux_amd64.deb"
asset_name: "diener_linux_amd64_${{ env.RELEASE_VERSION }}.deb"
asset_content_type: application/vnd.debian.binary-package
- name: Upload MacOS archive
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_draft.outputs.asset_upload_url }}
asset_path: "macos/diener_macos.tar.gz"
asset_name: "diener_macos_${{ env.RELEASE_VERSION }}.tar.gz"
asset_content_type: application/gzip