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.