# 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@v5 # 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@v5 # 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 }}"