name: Release
# This workflow is triggered manually
on:
  workflow_dispatch:
    inputs:
      version_bump_type:
        description: 'Version Bump Type (major, minor, patch)'
        required: true
        default: 'patch'
      version_metadata_path:
        description: 'Path to file containing Version string'
        required: true
        default: 'webapp/backend/pkg/version/version.go'

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    container: golang:1.13
    env:
      PROJECT_PATH: /go/src/github.com/analogj/scrutiny
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Bump version
        id: bump_version
        uses: packagrio/action-bumpr-go@master
        with:
          version_bump_type: ${{ github.event.inputs.version_bump_type }}
          version_metadata_path: ${{ github.event.inputs.version_metadata_path }}
          github_token: ${{ secrets.SCRUTINY_GITHUB_TOKEN }}
      - name: Build
        env:
          GOOS: linux
          GOARCH: amd64
        run: |
          mkdir -p $PROJECT_PATH
          cp -a $GITHUB_WORKSPACE/. $PROJECT_PATH/
          cd $PROJECT_PATH

          go mod vendor

          go test -v -tags "static" $(go list ./... | grep -v /vendor/)

          go build -ldflags "-X main.goos=linux -X main.goarch=amd64" -o scrutiny-web-linux-amd64 -tags "static" webapp/backend/cmd/scrutiny/scrutiny.go
          go build -ldflags "-X main.goos=linux -X main.goarch=amd64" -o scrutiny-collector-metrics-linux-amd64 -tags "static" collector/cmd/collector-metrics/collector-metrics.go

          chmod +x scrutiny-web-linux-amd64
          chmod +x scrutiny-collector-metrics-linux-amd64
      - name: Commit
        uses: EndBug/add-and-commit@v4 # You can change this to use a specific version
        with:

          author_name: Jason Kulatunga
          author_email: jason@thesparktree.com
          cwd: ${{ env.PROJECT_PATH }}
          force: false
          signoff: true
          message: '(${{steps.bump_version.outputs.release_version}}) Automated packaging of release by Packagr'
          tag: ${{steps.bump_version.outputs.release_version}}
        env:
          GITHUB_TOKEN: ${{ secrets.SCRUTINY_GITHUB_TOKEN }} # Leave this line unchanged

      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.SCRUTINY_GITHUB_TOKEN }}
        with:
          tag_name: ${{ steps.bump_version.outputs.release_version }}
          release_name: Release ${{ steps.bump_version.outputs.release_version }}
          draft: false
          prerelease: false
      - name: Upload Web Backend Release Asset
        id: upload-release-asset1
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.SCRUTINY_GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
          asset_path: ${{ env.PROJECT_PATH }}/scrutiny-web-linux-amd64
          asset_name: scrutiny-web-linux-amd64
          asset_content_type: application/octet-stream
      - name: Upload Collector Release Asset
        id: upload-release-asset2
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.SCRUTINY_GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
          asset_path: ${{ env.PROJECT_PATH }}/scrutiny-collector-metrics-linux-amd64
          asset_name: scrutiny-collector-metrics-linux-amd64
          asset_content_type: application/octet-stream
