---
name: Build, test and deploy new versions
on: push:
tags:
- '*'
jobs:
getversion:
runs-on: ubuntu-20.04
outputs:
version: ${{ steps.packagever.outputs.version }}
steps:
- uses: actions/checkout@v2
- name: rust-toolchain
uses: actions-rs/toolchain@v1.0.6
with:
toolchain: stable
- name: Get package version
id: packagever
run: echo "::set-output name=version::$(cargo pkgid | awk -F ":" '{print $3}')"
shell: bash
check_quality:
needs: getversion
runs-on: ubuntu-20.04
name: Build and check quality
steps:
- uses: actions/checkout@v2
- name: rust-toolchain
uses: actions-rs/toolchain@v1.0.6
with:
toolchain: stable
- name: Test code
run: cargo test
- name: Build code
run: cargo build
rpmbuild:
needs: [check_quality]
runs-on: ubuntu-latest
name: Build RPM package
steps:
- uses: actions/checkout@v2
- name: buildrpm
id: buildrpm
uses: ebbflow-io/cargo-rpm-amd64-fedora@1.1
- name: Up RPM
uses: actions/upload-artifact@v2
with:
name: fedorarpm
path: ./target/release/rpmbuild/RPMS/x86_64/*
builddeb:
needs: [check_quality]
runs-on: ubuntu-latest
name: Build amd64 deb
steps:
- uses: actions/checkout@v2
- name: builddeb
id: builddeb
uses: ebbflow-io/cargo-deb-amd64-ubuntu@1.0
- name: Upload Deb Artifact
uses: actions/upload-artifact@v2
with:
name: kelpdotdeb
path: ./target/x86_64-unknown-linux-musl/debian/*
buildaur:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install rust toolchain
uses: actions-rs/toolchain@v1.0.6
with:
toolchain:
stable
- name: Install cargo-aur
run: cargo install cargo-aur
- name: Run custom packaging script
run: bash scripts/aur.sh
- name: Upload AUR Artifact
uses: actions/upload-artifact@v2
with:
name: kelpdotaur
path: ./kelpdot-aur.tar.gz
- name: Publish AUR package
uses: KSXGitHub/github-actions-deploy-aur@v2.2.4
with:
pkgname: kelpdot-bin
pkgbuild: ./PKGBUILD
commit_username: ${{ secrets.AUR_USERNAME }}
commit_email: ${{ secrets.AUR_EMAIL }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: Update AUR package
ssh_keyscan_types: rsa,dsa,ecdsa,ed25519
create_release:
needs: [getversion, check_quality, rpmbuild, builddeb, buildaur]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Generate Changelog
run: bash scripts/generate_log.sh
- name: Show changelog
run: cat changelog.txt
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ needs.getversion.outputs.version }}
release_name: Release ${{ needs.getversion.outputs.version }}
body_path: 'changelog.txt'
draft: false
- uses: actions/download-artifact@v2
- run: ls -lahR
- name: Upload fedora RPM
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: 'fedorarpm/kelpdot-${{ needs.getversion.outputs.version }}-1.fc32.x86_64.rpm'
asset_name: 'kelpdot.rpm'
asset_content_type: application/octet-stream
- name: Upload amd64 deb Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./kelpdotdeb/kelpdot_${{ needs.getversion.outputs.version }}_amd64.deb
asset_name: 'kelpdot.deb'
asset_content_type: application/vnd.debian.binary-package
- name: Upload amd64 AUR Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./kelpdotaur/kelpdot-aur.tar.gz
asset_name: 'kelpdot-aur.tar.gz'
asset_content_type: application/gzip