CD #68
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CD | |
on: | |
workflow_run: | |
workflows: ["CI"] | |
types: | |
- completed | |
jobs: | |
cross-build: | |
strategy: | |
matrix: | |
include: | |
- target: aarch64-apple-darwin | |
os: macos-latest | |
- target: aarch64-unknown-linux-musl | |
os: ubuntu-latest | |
- target: x86_64-unknown-linux-musl | |
os: ubuntu-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
target: ${{ matrix.target }} | |
toolchain: stable | |
override: true | |
- name: Cache Cross | |
id: cache-cross | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/bin/cross | |
key: ${{ runner.os }}-cross | |
- name: Check if Cross is installed | |
if: steps.cache-cross.outputs.cache-hit == 'true' | |
id: cross-check | |
run: | | |
if command -v cross &> /dev/null | |
then | |
echo "::set-output name=installed::true" | |
else | |
echo "::set-output name=installed::false" | |
fi | |
- name: Install Cross | |
if: steps.cross-check.outputs.installed != 'true' | |
uses: actions-rs/cargo@v1 | |
with: | |
command: install | |
args: cross | |
- name: Cache Cargo registry | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ runner.os }}-${{ matrix.target }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
- name: Cache Cargo index | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/git | |
key: ${{ runner.os }}-${{ matrix.target }}-cargo-git-${{ hashFiles('**/Cargo.lock') }} | |
- name: Cache Cargo build | |
uses: actions/cache@v2 | |
with: | |
path: target | |
key: ${{ runner.os }}-${{ matrix.target }}-cargo-build-${{ hashFiles('**/Cargo.lock', '**/Cargo.toml') }} | |
- name: Cross Build | |
run: | | |
cross build --target ${{ matrix.target }} --release | |
- name: Archive | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ matrix.target }} | |
path: target/${{ matrix.target }}/release/semrel | |
native-build: | |
strategy: | |
matrix: | |
include: | |
- target: x86_64-apple-darwin | |
os: macos-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
target: ${{ matrix.target }} | |
toolchain: stable | |
override: true | |
- name: Cache Cargo registry | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ runner.os }}-${{ matrix.target }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
- name: Cache Cargo index | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/git | |
key: ${{ runner.os }}-${{ matrix.target }}-cargo-git-${{ hashFiles('**/Cargo.lock') }} | |
- name: Cache Cargo build | |
uses: actions/cache@v2 | |
with: | |
path: target | |
key: ${{ runner.os }}-${{ matrix.target }}-cargo-build-${{ hashFiles('**/Cargo.lock', '**/Cargo.toml') }} | |
- name: Build | |
run: | | |
cargo build --release --target=${{ matrix.target }} | |
- name: Archive | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ matrix.target }} | |
path: target/${{ matrix.target }}/release/semrel | |
release: | |
needs: [cross-build, native-build] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Download Artifacts | |
uses: actions/download-artifact@v2 | |
- name: Install tar | |
run: sudo apt-get install tar | |
- name: Set permissions on artifacts | |
run: | | |
chmod +x aarch64-apple-darwin/semrel | |
chmod +x x86_64-apple-darwin/semrel | |
chmod +x aarch64-unknown-linux-musl/semrel | |
chmod +x x86_64-unknown-linux-musl/semrel | |
- name: Package Artifacts | |
run: | | |
tar czvf arm64-apple-darwin.tgz -C aarch64-apple-darwin . | |
tar czvf x86_64-apple-darwin.tgz -C x86_64-apple-darwin . | |
tar czvf aarch64-unknown-linux-musl.tgz -C aarch64-unknown-linux-musl . | |
tar czvf x86_64-unknown-linux-musl.tgz -C x86_64-unknown-linux-musl . | |
- name: Get current version with semrel | |
id: version | |
run: | | |
version=$(./x86_64-unknown-linux-musl/semrel show current) | |
echo "::set-output name=version::$version" | |
- name: Generate Release notes with semrel | |
run: | | |
./x86_64-unknown-linux-musl/semrel show notes > release-notes-${{ steps.version.outputs.version }}.md | |
- name: Create Release | |
id: create_release | |
uses: softprops/action-gh-release@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} | |
with: | |
files: | | |
arm64-apple-darwin.tgz | |
x86_64-apple-darwin.tgz | |
aarch64-unknown-linux-musl.tgz | |
x86_64-unknown-linux-musl.tgz | |
name: semrel-${{ steps.version.outputs.version }} | |
body_path: release-notes-${{ steps.version.outputs.version }}.md | |
generate_release_notes: false | |
make_latest: true | |
draft: false | |
prerelease: false | |
tag_name: ${{ steps.version.outputs.version }} | |
token: ${{ secrets.RELEASE_TOKEN }} |