
name: Build

on:
  push:
    tags: '**'
    branches:
      - '*'
      - 'feature/**'
      - 'release/**'
  pull_request:
    types: [opened, synchronize]
    branches:
      - '*'
      - 'feature/**'
      - 'release/**'
  workflow_dispatch:

jobs:
  pack:
    runs-on: ubuntu-18.04
    name: Pack
    timeout-minutes: 10 
    steps:
    - uses: actions/checkout@v2
    - name: Event Utilities
      uses: SchoofsKelvin/event-utilities@v1
      id: utils
      with:
        artifact_prefix: "ip-matching"
        artifact_extension: "tgz"
    - name: Use Node.js 10.x
      uses: actions/setup-node@v1
      with:
        node-version: 10.x
    - name: Install dependencies
      run: yarn --frozen-lockfile
    - name: Pack tarball
      run: yarn pack -f ${{ steps.utils.outputs.artifact_name }}
    - name: Add commit check status
      uses: Sibz/github-status-action@v1
      if: ${{ always() }}
      with: 
        authToken: ${{ secrets.GITHUB_TOKEN }}
        context: 'Yarn pack'
        state: 'success'
        sha: ${{ github.event.pull_request.head.sha || github.sha }}
    - name: Upload a Build Artifact
      uses: actions/upload-artifact@v2.2.1
      with:
        name: ${{ steps.utils.outputs.artifact_name }}
        path: ${{ steps.utils.outputs.artifact_name }}
        if-no-files-found: error
    - name: Create release
      id: create_release
      if: ${{ success() && steps.utils.outputs.tag_version }}
      uses: actions/create-release@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        tag_name: ${{ github.ref }}
        release_name: Release ${{ steps.utils.outputs.tag_version }}
        draft: true
    - name: Upload release asset
      id: upload_release_asset
      if: ${{ success() && steps.utils.outputs.tag_version }}
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ steps.create_release.outputs.upload_url }}
        asset_path: ${{ steps.utils.outputs.artifact_name }}
        asset_name: ${{ steps.utils.outputs.artifact_name }}
        asset_content_type: application/x-gzip
