I updated release workflow.

It is a new workflow that uploads assets when tag was pushed.
    
    
    name: release
    
    on:
      push:
        tags:
          - 'v*.*.*'
    
    env:
      APP_NAME: 'APPNAME'
      NIM_VERSION: 'stable'
      MAINTAINER: 'MAINTAINER'
    
    jobs:
      build-artifact:
        runs-on: ${{ matrix.os }}
        strategy:
          matrix:
            os:
              - ubuntu-latest
              - windows-latest
              - macOS-latest
        steps:
          - uses: actions/checkout@v1
          - uses: jiro4989/setup-nim-action@v1
            with:
              nim-version: ${{ env.NIM_VERSION }}
          - run: nimble build -Y -d:release
          - name: Create artifact
            run: |
              os="${{ runner.os }}"
              assets="${{ env.APP_NAME }}_$(echo "${{ runner.os }}" | tr 
'[:upper:]' '[:lower:]')"
              echo "$assets"
              mkdir -p "dist/$assets"
              cp -r bin LICENSE README.* "dist/$assets/"
              (
                cd dist
                if [[ "${{ runner.os }}" == Windows ]]; then
                  7z a "$assets.zip" "$assets"
                else
                  tar czf "$assets.tar.gz" "$assets"
                fi
                ls -lah *.*
              )
            shell: bash
          - uses: actions/upload-artifact@v2
            with:
              name: artifact-${{ matrix.os }}
              path: |
                dist/*.tar.gz
                dist/*.zip
      
      create-release:
        runs-on: ubuntu-latest
        needs:
          - build-artifact
        steps:
          - uses: actions/checkout@v1
          - name: Create Release
            id: create-release
            uses: actions/create-release@v1
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            with:
              tag_name: ${{ github.ref }}
              release_name: ${{ github.ref }}
              body: Release
              draft: false
              prerelease: false
          
          - name: Write upload_url to file
            run: echo '${{ steps.create-release.outputs.upload_url }}' > 
upload_url.txt
          
          - uses: actions/upload-artifact@v2
            with:
              name: create-release
              path: upload_url.txt
      
      upload-release:
        runs-on: ubuntu-latest
        needs: create-release
        strategy:
          matrix:
            include:
              - os: ubuntu-latest
                asset_name_suffix: linux.tar.gz
                asset_content_type: application/gzip
              - os: windows-latest
                asset_name_suffix: windows.zip
                asset_content_type: application/zip
              - os: macOS-latest
                asset_name_suffix: macos.tar.gz
                asset_content_type: application/gzip
        steps:
          - uses: actions/download-artifact@v2
            with:
              name: artifact-${{ matrix.os }}
          
          - uses: actions/download-artifact@v2
            with:
              name: create-release
          
          - id: vars
            run: |
              echo "::set-output name=upload_url::$(cat upload_url.txt)"
          
          - name: Upload Release Asset
            id: upload-release-asset
            uses: actions/upload-release-asset@v1
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            with:
              upload_url: ${{ steps.vars.outputs.upload_url }}
              asset_path: ${{ env.APP_NAME }}_${{ matrix.asset_name_suffix }}
              asset_name: ${{ env.APP_NAME }}_${{ matrix.asset_name_suffix }}
              asset_content_type: ${{ matrix.asset_content_type }}
    
    Run

CI runs when you create a new tags.
    
    
    $ git tag v0.1.0
    $ git push origin v0.1.0
    
    Run

This workflow uploads only archive files. See 
[release.yml](https://github.com/jiro4989/repo-template-nim/blob/master/.github/workflows/release.yml)
 if you want to upload deb packages or rpm packages. 

Reply via email to