kelpdot 2.1.9

Simple dotfiles manager
Documentation
---
name: Build, test and deploy new versions
on:  # yamllint disable-line rule:truthy
  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