Download .github/workflows/make-release.yml from Parakon/parakon-runtime: direct link, hf CLI and curl.
- Browser
- Download file 5.51 kB
-
https://huggingface.co/Parakon/parakon-runtime/resolve/main/.github/workflows/make-release.yml
- Command line
-
hf download hf://Parakon/parakon-runtime/.github/workflows/make-release.yml
-
curl -L -o make-release.yml https://huggingface.co/Parakon/parakon-runtime/resolve/main/.github/workflows/make-release.yml
5.51 kB
| name: Make Release | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| commit: | |
| description: 'Commit SHA to release (empty = branch HEAD)' | |
| required: false | |
| default: '' | |
| type: string | |
| dry_run: | |
| description: 'Dry run - validate without creating the tag' | |
| required: true | |
| type: boolean | |
| default: true | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| permissions: | |
| contents: write | |
| packages: write | |
| jobs: | |
| make-release: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| ssh-key: ${{ secrets.DEPLOY_KEY_RELEASE }} | |
| ref: ${{ inputs.commit != '' && inputs.commit || github.ref_name }} | |
| fetch-depth: 0 | |
| - name: Run release checks | |
| id: checks | |
| run: bash scripts/make-release-checks.sh ${{ github.event.inputs.dry_run == 'true' && '--dry-run' || '' }} | |
| env: | |
| GITHUB_REPOSITORY: ${{ github.repository }} | |
| RELEASE_BRANCH: ${{ github.ref_name }} | |
| - name: Create release tag | |
| if: ${{ github.event.inputs.dry_run == 'false' }} | |
| run: | | |
| VERSION="${{ steps.checks.outputs.version }}" | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git tag -a "${VERSION}" -m "Release ${VERSION}" | |
| git push origin "${VERSION}" | |
| echo "Created and pushed tag ${VERSION}" | |
| - name: Generate release description | |
| id: desc | |
| run: bash scripts/make-release-desc.sh "${{ steps.checks.outputs.version }}" | |
| env: | |
| GITHUB_REPOSITORY: ${{ github.repository }} | |
| - name: Create nightly-tag.txt | |
| id: nightly_tag_file | |
| run: | | |
| NIGHTLY_TAG="${{ steps.desc.outputs.nightly_tag }}" | |
| if [[ -z "${NIGHTLY_TAG}" ]]; then | |
| echo "Warning: no nightly tag found for the release commit - nightly-tag.txt will not be created" | |
| echo "create=false" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| echo "${NIGHTLY_TAG}" > nightly-tag.txt | |
| echo "create=true" >> "$GITHUB_OUTPUT" | |
| echo "nightly-tag.txt:" | |
| cat nightly-tag.txt | |
| - name: Create release | |
| id: create_release | |
| if: ${{ github.event.inputs.dry_run == 'false' }} | |
| uses: ggml-org/action-create-release@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| with: | |
| tag_name: ${{ steps.checks.outputs.version }} | |
| prerelease: false | |
| # TODO: enrich the body of the release with more information | |
| body: | | |
| ## Overview | |
| New version has been released. | |
| ## Assets | |
| ${{ steps.desc.outputs.nightly }} | |
| ## More info | |
| - [Releases and versioning of `ggml-org` projects](https://github.com/ggml-org/ggml/discussions/1579) | |
| ## ${{ steps.desc.outputs.changelog_title }} | |
| ${{ steps.desc.outputs.changelog }} | |
| - name: Upload nightly-tag.txt | |
| if: ${{ github.event.inputs.dry_run == 'false' && steps.nightly_tag_file.outputs.create == 'true' }} | |
| uses: actions/github-script@v8 | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| script: | | |
| const fs = require('fs'); | |
| const release_id = '${{ steps.create_release.outputs.id }}'; | |
| console.log('uploadReleaseAsset', 'nightly-tag.txt'); | |
| await github.rest.repos.uploadReleaseAsset({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| release_id: release_id, | |
| name: 'nightly-tag.txt', | |
| data: await fs.readFileSync('./nightly-tag.txt') | |
| }); | |
| - name: Re-tag container images with release version | |
| if: ${{ github.event.inputs.dry_run == 'false' && steps.desc.outputs.nightly_tag != '' }} | |
| env: | |
| GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }} | |
| run: | | |
| VERSION="${{ steps.checks.outputs.version }}" | |
| NIGHTLY_TAG="${{ steps.desc.outputs.nightly_tag }}" | |
| REPO_OWNER="${GITHUB_REPOSITORY_OWNER,,}" | |
| IMAGE_REPO="ghcr.io/${REPO_OWNER}/${{ github.event.repository.name }}" | |
| echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin | |
| VARIANTS=("" "-cuda" "-cuda13" "-vulkan" "-rocm" "-intel" "-musa" "-openvino") | |
| TYPES=("full" "light" "server") | |
| for type in "${TYPES[@]}"; do | |
| for variant in "${VARIANTS[@]}"; do | |
| src="${IMAGE_REPO}:${type}${variant}-${NIGHTLY_TAG}" | |
| dst="${IMAGE_REPO}:${type}${variant}-${VERSION}" | |
| echo "Tagging ${src} -> ${dst}" | |
| docker buildx imagetools create --tag "${dst}" "${src}" | |
| done | |
| done | |
| - name: Dry run summary | |
| if: ${{ github.event.inputs.dry_run == 'true' }} | |
| run: | | |
| if [[ "${{ steps.checks.outputs.checks_passed }}" == "true" ]]; then | |
| echo "Dry run complete - all checks passed." | |
| echo "Would have created tag: ${{ steps.checks.outputs.version }}" | |
| if [[ -n "${{ steps.desc.outputs.nightly_tag }}" ]]; then | |
| echo "Would have uploaded nightly-tag.txt: ${{ steps.desc.outputs.nightly_tag }}" | |
| fi | |
| else | |
| echo "::error::Dry run found release check failures. A release tag would not be created." | |
| exit 1 | |
| fi | |