diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 000000000..0f5aae4ad --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,28 @@ +name-template: '$RESOLVED_VERSION 🌈' +tag-template: 'v$RESOLVED_VERSION' +categories: + - title: '🚀 Features' + labels: + - 'type: enhancement' + - 'type: epic' + - 'type: feature request' + - title: '🐛 Bug Fixes' + labels: + - 'type: bug' + - title: '🧰 Maintenance' + labels: + - 'type: chore' + - 'type: ci' + - title: '📖 Documentaion' + labels: + - 'type: documentation' +change-template: '- $TITLE @$AUTHOR (#$NUMBER)' +change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. +template: | + ## Changes + + $CHANGES + + ## Contributor + + $CONTRIBUTORS \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ee9e9a2c8..2aac7d0cd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,15 +1,10 @@ name: CI on: - workflow_dispatch: # allows manual triggering - inputs: - create_release: - description: 'Create new release' - required: true - type: boolean push: branches: - - master + - main + tags: ['v*.*.*'] paths: ['.github/workflows/**', '**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu'] pull_request: types: [opened, synchronize, reopened] @@ -19,8 +14,35 @@ env: BRANCH_NAME: ${{ github.head_ref || github.ref_name }} jobs: + create-draft-release: + runs-on: ubuntu-latest + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + outputs: + upload_url: ${{ steps.create_release.outputs.upload_url }} + version: ${{ steps.get_version.outputs.version }} + permissions: + contents: write + steps: + - name: Extract tag name without v prefix + id: get_version + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV && echo "::set-output name=version::${VERSION}" + env: + GITHUB_REF: ${{ github.ref }} + - name: Create Draft Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref_name }} + release_name: ${{ env.VERSION }} + draft: true + prerelease: false + ubuntu-amd64-build: runs-on: ubuntu-20.04 + needs: create-draft-release + if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') permissions: contents: write steps: @@ -45,14 +67,6 @@ jobs: CC=gcc-8 make -j $(nproc) ls -la - - name: Extract branch name - shell: bash - id: extract_branch - run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" - - name: Extract commit short SHA - id: extract_commit_id - run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" - - name: Package shell: bash run: | @@ -61,17 +75,20 @@ jobs: cp build/nitro nitro/ zip -r nitro.zip nitro - - name: Upload binaries to release - if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} - uses: svenstaro/upload-release-action@v2 + - uses: actions/upload-release-asset@v1.0.1 + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: nitro.zip - asset_name: nitro-${{ steps.extract_commit_id.outputs.sha_short }}-linux-amd64.zip - tag: ${{ steps.extract_branch.outputs.branch }}-${{ steps.extract_commit_id.outputs.sha_short }} + upload_url: ${{ needs.create-draft-release.outputs.upload_url }} + asset_path: ./nitro.zip + asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-linux-amd64.zip + asset_content_type: application/zip ubuntu-amd64-cuda-build: runs-on: linux-gpu + needs: create-draft-release + if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') permissions: contents: write steps: @@ -94,16 +111,7 @@ jobs: mkdir build && cd build cmake -DLLAMA_CUBLAS=ON .. CC=gcc-8 make -j $(nproc) - ls -la - - - name: Extract branch name - shell: bash - id: extract_branch - run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" - - - name: Extract commit short SHA - id: extract_commit_id - run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" + ls -la - name: Package shell: bash @@ -113,17 +121,20 @@ jobs: cp build/nitro nitro/ zip -r nitro.zip nitro - - name: Upload binaries to release - if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} - uses: svenstaro/upload-release-action@v2 + - uses: actions/upload-release-asset@v1.0.1 + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: nitro.zip - asset_name: nitro-${{ steps.extract_commit_id.outputs.sha_short }}-linux-amd64-cuda.zip - tag: ${{ steps.extract_branch.outputs.branch }}-${{ steps.extract_commit_id.outputs.sha_short }} + upload_url: ${{ needs.create-draft-release.outputs.upload_url }} + asset_path: ./nitro.zip + asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-linux-amd64-cuda.zip + asset_content_type: application/zip macOS-M-build: runs-on: mac-silicon + needs: create-draft-release + if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') permissions: contents: write steps: @@ -147,16 +158,7 @@ jobs: mkdir build && cd build cmake .. CC=gcc-8 make -j $(nproc) - ls -la - - - name: Extract branch name - shell: bash - id: extract_branch - run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" - - - name: Extract commit short SHA - id: extract_commit_id - run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" + ls -la - name: Package shell: bash @@ -167,17 +169,20 @@ jobs: cp build/nitro nitro/ zip -r nitro.zip nitro - - name: Upload binaries to release - if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} - uses: svenstaro/upload-release-action@v2 + - uses: actions/upload-release-asset@v1.0.1 + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: nitro.zip - asset_name: nitro-${{ steps.extract_commit_id.outputs.sha_short }}-mac-arm64.zip - tag: ${{ steps.extract_branch.outputs.branch }}-${{ steps.extract_commit_id.outputs.sha_short }} + upload_url: ${{ needs.create-draft-release.outputs.upload_url }} + asset_path: ./nitro.zip + asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-mac-arm64.zip + asset_content_type: application/zip macOS-Intel-build: runs-on: macos-latest + needs: create-draft-release + if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') permissions: contents: write steps: @@ -200,16 +205,7 @@ jobs: mkdir build && cd build cmake -DLLAMA_METAL=OFF .. CC=gcc-8 make -j $(nproc) - ls -la - - - name: Extract branch name - shell: bash - id: extract_branch - run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" - - - name: Extract commit short SHA - id: extract_commit_id - run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" + ls -la - name: Package shell: bash @@ -219,11 +215,36 @@ jobs: cp build/nitro nitro/ zip -r nitro.zip nitro - - name: Upload binaries to release - if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} - uses: svenstaro/upload-release-action@v2 + - uses: actions/upload-release-asset@v1.0.1 + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: nitro.zip - asset_name: nitro-${{ steps.extract_commit_id.outputs.sha_short }}-mac-amd64.zip.zip - tag: ${{ steps.extract_branch.outputs.branch }}-${{ steps.extract_commit_id.outputs.sha_short }} \ No newline at end of file + upload_url: ${{ needs.create-draft-release.outputs.upload_url }} + asset_path: ./nitro.zip + asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-mac-amd64.zip + asset_content_type: application/zip + + update_release_draft: + needs: [ubuntu-amd64-build, ubuntu-amd64-cuda-build, macOS-M-build, macOS-Intel-build] + permissions: + # write permission is required to create a github release + contents: write + # write permission is required for autolabeler + # otherwise, read permission is required at least + pull-requests: write + runs-on: ubuntu-latest + steps: + # (Optional) GitHub Enterprise requires GHE_HOST variable set + #- name: Set GHE_HOST + # run: | + # echo "GHE_HOST=${GITHUB_SERVER_URL##https:\/\/}" >> $GITHUB_ENV + + # Drafts your next Release notes as Pull Requests are merged into "master" + - uses: release-drafter/release-drafter@v5 + # (Optional) specify config name to use, relative to .github/. Default: release-drafter.yml + # with: + # config-name: my-config.yml + # disable-autolabeler: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file