File: patch-release.yaml

package info (click to toggle)
spirv-llvm-translator-21 21.1.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 17,612 kB
  • sloc: cpp: 47,807; ansic: 6,283; lisp: 3,878; sh: 162; python: 58; makefile: 41
file content (88 lines) | stat: -rw-r--r-- 3,292 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
name: Automated release

on:
  workflow_dispatch:
  schedule:
    # First day of every month
    - cron: '0 0 1 * *'

jobs:
  setup:
    runs-on: ubuntu-latest
    outputs:
      latest_branch: ${{steps.latest_branch.outputs.latest_branch}}
      branches_json: ${{steps.release_branches.outputs.branches_json}}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
            fetch-depth: 0
      - name: Get latest llvm_release branch
        id: latest_branch
        run: |
          git branch -r \
          | grep 'llvm_release_' \
          | sed -E 's/.*\/llvm_release_([0-9]+)/\1/' \
          | sort -n -r \
          | head -1 \
          | xargs printf "latest_branch=llvm_release_%s" \
          >> $GITHUB_OUTPUT
      - name: Get branch list
        id: release_branches
        run: |
          git branch -r \
          | grep "origin/llvm_release_" \
          | sed -E 's/\ *origin\/([^\ ]*)/\"\1\"/' \
          | paste -sd',' \
          | xargs -0 -d"\n" printf 'branches_json={"branch":[%s]}' \
          >> $GITHUB_OUTPUT
  release:
    runs-on: ubuntu-latest
    needs: setup
    strategy:
      matrix: ${{fromJson(needs.setup.outputs.branches_json)}}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
            ref: ${{ matrix.branch }}
            fetch-depth: 0
      - name: Get commits info
        id: versions
        run: |
            export LATEST_VERSION=\
            "$(git describe --tags --abbrev=0 --match 'v*')"
            export LLVM_VERSION=$(echo $LATEST_VERSION \
            | sed -E 's/(v[0-9]+\.[0-9]+)\.([0-9]+).*/\1/')
            export PATCH=$(echo $LATEST_VERSION \
            | sed -E 's/(v[0-9]+\.[0-9]+)\.([0-9]+).*/\2/')

            echo "llvm_version=$LLVM_VERSION" >> $GITHUB_OUTPUT
            echo "patch=$PATCH" >> $GITHUB_OUTPUT
            echo "latest_version=${LATEST_VERSION}" >> $GITHUB_OUTPUT
            echo "release_version=${LLVM_VERSION}.$((${PATCH}+1))" \
            >> $GITHUB_OUTPUT

            git rev-list ${LATEST_VERSION}..HEAD --count \
            | xargs printf "commits_since_last_release=%d\n" >> $GITHUB_OUTPUT
            git rev-parse HEAD | xargs printf "last_commit=%s\n" >> $GITHUB_OUTPUT
      - name: Release
        uses: softprops/action-gh-release@v2
        if: ${{ steps.versions.outputs.commits_since_last_release != 0 }}
        with:
            # Setting tag to have format:
            # %latest llvm version%.%latest patch + 1%
            tag_name: ${{ steps.versions.outputs.release_version }}
            # We have to set this so tag is set on the branch we are releasing
            target_commitish: ${{ steps.versions.outputs.last_commit }}
            # We don't want to mark patch releases latest unless it is latest
            # major version
            make_latest: >-
              ${{ needs.setup.outputs.latest_branch == matrix.branch }}
            name: >
              SPIR-V LLVM translator based on LLVM
              ${{ steps.versions.outputs.llvm_version }}
            body: "Full Changelog: ${{ github.server_url }}/\
              ${{ github.repository }}/compare/\
              ${{ steps.versions.outputs.latest_version }}...\
              ${{ steps.versions.outputs.release_version }}"