8000 Gihub actions by chevdor · Pull Request #6 · chevdor/subwasm · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Gihub actions #6

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Jun 18, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions .github/workflows/build-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# This workflow runs on every push and checks whether everything looks good

name: Build MacOS Binaries

on:
push:
tags:
- "v*"

jobs:
macos:
env:
TARGET_DIR: target/release

runs-on: macos-latest
steps:
- name: Check tooling
shell: bash
run: |
tar --version
shasum --version

- name: Extract tag name
run: |
TAG=${GITHUB_REF/refs\/tags\//}
echo "TAG=$TAG" >> $GITHUB_ENV

- uses: actions/checkout@v2

- name: Build release
uses: actions-rs/cargo@v1
with:
command: build
args: --release --locked

# - name: Compress
# shell: bash
# run: |
# tar -czf ${{ env.TARGET_DIR }}/subwasm-macos-${{ env.TAG }}.tar.gz -C ${{ env.TARGET_DIR }} subwasm

# - name: Compute checksum
# shell: bash
# run: |
# shasum -a 256 ${{ env.TARGET_DIR }}/subwasm-macos-${{ env.TAG }}.tar.gz > ${{ env.TARGET_DIR }}/subwasm-macos-${{ env.TAG }}.tar.gz.sha256
# ls -al
# cat ${{ env.TARGET_DIR }}/*${{ env.TAG }}*.sha256

- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: subwasm-macos-package-${{ github.sha }}
path: |
${{ env.TARGET_DIR }}/subwasm

# - name: Download Artifact
# uses: actions/download-artifact@v2
# with:
# name: subwasm-macos-package-${{ github.sha }}
# path: artifacts

# - name: Compute sha256
# run: |
# ls -al artifacts
# ZIP=`ls artifacts/*.zip | head -n 1`
# echo $ZIP
# shasum -a 256 artifacts/$ZIP > artifacts/$ZIP.sha256
# cat artifacts/$ZIP.sha256
48 changes: 48 additions & 0 deletions .github/workflows/daily-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# This workflow runs on every push and checks whether everything looks good

name: Daily Check

on:
schedule:
- cron: "0 3 * * *"

jobs:
daily_check:
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
rust: ["stable", "nightly"]
runs-on: ${{ matrix.os }}
steps:
- name: Install Rust stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
components: clippy, rustfmt

- uses: actions/checkout@v2

- name: Cargo fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check

- name: Cargo clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings

- name: Cargo test
uses: actions-rs/cargo@v1
with:
command: test

- name: Cargo check
uses: actions-rs/cargo@v1
with:
command: check
51 changes: 51 additions & 0 deletions .github/workflows/quick-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# This workflow runs on every push and checks whether everything looks good

name: Quick check

on:
push

jobs:
quick_check:
runs-on: ubuntu-latest
steps:
- name: Install Rust stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
components: clippy, rustfmt

# - name: Cache Dependencies & Build Outputs
# uses: actions/cache@v2
# with:
# path: |
# ~/.cargo/registry
# ~/.cargo/git
# target
# key: ${{ runner.os }}-${{ matrix.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}

- uses: actions/checkout@v2

- name: Cargo fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check

- name: Cargo clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings

- name: Cargo test
uses: actions-rs/cargo@v1
with:
command: test

- name: Cargo check
uses: actions-rs/cargo@v1
with:
command: check
210 changes: 210 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
# This workflow runs on every push and checks whether everything looks good

name: Release

on:
push:
tags:
- "v*"

jobs:
linux:
env:
TARGET_DIR: target/release

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
components: rustfmt, clippy

- name: Install cargo deb
uses: actions-rs/cargo@v1
with:
command: install
args: cargo-deb

- name: Build debian package
shell: bash
run: |
cargo deb -p subwasm -o "subwasm_linux_amd64.deb"

- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: linux
path: |
subwasm_linux_amd64.deb

macos:
env:
TARGET_DIR: target/release

runs-on: macos-latest
steps:
- uses: actions/checkout@v2
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 latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
components: rustfmt, clippy

- name: Check tooling
shell: bash
run: |
tar --version
shasum --version

- name: Build MacOS binary
shell: bash
run: |
cargo build --release
ls -al "${{ env.TARGET_DIR }}/subwasm"

- name: Compress & sha256
run: |
tar -czf ${{ env.TARGET_DIR }}/subwasm_macos.tar.gz -C ${{ env.TARGET_DIR }} subwasm
SHA256=$(shasum -a 256 ${{ env.TARGET_DIR }}/subwasm_macos.tar.gz | awk '{ print $1}' | tee ${{ env.TARGET_DIR }}/subwasm_macos.tar.gz.sha256)
echo SHA256: $SHA256
echo "SHA256=$SHA256" >> $GITHUB_ENV

- name: Upload MacOS artifacts
uses: actions/upload-artifact@v2
with:
name: macos
path: |
${{ env.TARGET_DIR }}/subwasm
${{ env.TARGET_DIR }}/subwasm_macos.tar.gz
${{ env.TARGET_DIR }}/subwasm_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

# We do that before checking out master (in case we were not in master already)
- name: Prepare new Formula
env:
NAME: Tera
DESCRIPTION: "A command line utility written in Rust download, inspect and compare Substrate based chains WASM Runtimes"
SITE: https://github.com
REPO: chevdor/subwasm
SHA256: ${{env.SHA256}}
VERSION: ${{env.RAW_VERSION}}
run: |
tera --version
tera --template templates/formula.rb --env-only > $HOME/subwasm.rb
cat $HOME/subwasm.rb

- name: Update Homebrew Formula
run: |
cp -f $HOME/subwasm.rb Formula/subwasm.rb
git config --global user.name 'TeraBot'
git config --global user.email 'chevdor@users.noreply.github.com'
git commit Formula/subwasm.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@v2
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@v2

- name: Install tera v0.1.3
run: |
URL=https://github.com/chevdor/tera-cli/releases/download/v0.1.3/tera-cli_linux_amd64.deb
wget $URL
sudo dpkg -i tera-cli_linux_amd64.deb
tera --version

- name: Generate changelog
id: change_log
run: |
LAST_TAG=$(git describe --tags --abbrev=0 ${{ env.RELEASE_VERSION }}^ )
JSON=$(git log $LAST_TAG..HEAD \
--pretty=format:'{ "commit": "%H", "short_sha": "%h", "author": "%an", "date": "%ad", "message": "%s"},' \
$@ | \
perl -pe 'BEGIN{print "{ \"since\": \"'${LAST_TAG}'\", \"commits\": ["}; END{print "]}"}' | \
perl -pe 's/},]/}]/')
echo $JSON | tera --template templates/changelog.md --stdin > changelog.md

- name: Render release notes
run: |
export DEBIAN_URL="https://github.com/chevdor/subwasm/releases/download/${{ env.RELEASE_VERSION }}/subwasm_linux_amd64.deb"
export MACOS_TGZ_URL="https://github.com/chevdor/subwasm/releases/download/${{ env.RELEASE_VERSION }}/subwasm_macos.tar.gz"
export CHANGELOG=$(cat changelog.md)
tera --env --env-only --template templates/release.md > RELEASE_NOTES.md

- name: Create Release
id: create-release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.RELEASE_VERSION }}
release_name: Subwasm ${{ env.RELEASE_VERSION }} (${{ env.SHORT_SHA }})
body_path: ./RELEASE_NOTES.md
draft: true

publish-binaries:
runs-on: ubuntu-latest
needs: ["create_draft"]
steps:
- uses: actions/checkout@v2
- 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@v2

- name: Upload Debian package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_draft.outputs.asset_upload_url }}
asset_path: "linux/subwasm_linux_amd64.deb"
asset_name: "subwasm_linux_amd64_${{ env.RELEASE_VERSION }}.deb"
asset_content_type: application/vnd.debian.binary-package

- name: Upload MacOS archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_draft.outputs.asset_upload_url }}
asset_path: "macos/subwasm_macos.tar.gz"
asset_name: "subwasm_macos_${{ env.RELEASE_VERSION }}.tar.gz"
asset_content_type: application/gzip
Loading
0