File: push.yaml

package info (click to toggle)
obs-draw-dock 0.3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 748 kB
  • sloc: cpp: 2,719; ansic: 906; sh: 259; makefile: 27
file content (119 lines) | stat: -rw-r--r-- 3,822 bytes parent folder | download | duplicates (10)
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
name: Push
run-name: ${{ github.ref_name }} push run 🚀
on:
  push:
    branches:
      - master
      - main
      - 'release/**'
    tags:
      - '*'
permissions:
  contents: write
jobs:
  check-format:
    name: Check Formatting 🔍
    if: github.ref_name == 'master' || github.ref_name == 'main'
    uses: ./.github/workflows/check-format.yaml
    permissions:
      contents: read

  build-project:
    name: Build Project 🧱
    uses: ./.github/workflows/build-project.yaml
    secrets: inherit
    permissions:
      contents: read

  create-release:
    name: Create Release 🛫
    if: github.ref_type == 'tag'
    runs-on: ubuntu-24.04
    needs: build-project
    defaults:
      run:
        shell: bash
    steps:
      - name: Check Release Tag ☑️
        id: check
        run: |
          : Check Release Tag ☑️
          if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi
          shopt -s extglob

          case "${GITHUB_REF_NAME}" in
            +([0-9]).+([0-9]).+([0-9]) )
              echo 'validTag=true' >> $GITHUB_OUTPUT
              echo 'prerelease=false' >> $GITHUB_OUTPUT
              echo "version=${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT
              ;;
            +([0-9]).+([0-9]).+([0-9])-@(beta|rc)*([0-9]) )
              echo 'validTag=true' >> $GITHUB_OUTPUT
              echo 'prerelease=true' >> $GITHUB_OUTPUT
              echo "version=${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT
              ;;
            *) echo 'validTag=false' >> $GITHUB_OUTPUT ;;
          esac

      - name: Download Build Artifacts 📥
        uses: actions/download-artifact@v4
        if: fromJSON(steps.check.outputs.validTag)
        id: download

      - name: Rename Files 🏷️
        if: fromJSON(steps.check.outputs.validTag)
        run: |
          : Rename Files 🏷️
          if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi
          shopt -s extglob
          shopt -s nullglob

          root_dir="$(pwd)"
          commit_hash="${GITHUB_SHA:0:9}"

          variants=(
            'windows-x64;zip|exe'
            'macos-universal;tar.xz|pkg'
            'ubuntu-24.04-x86_64;tar.xz|deb|ddeb'
            'sources;tar.xz'
          )

          for variant_data in "${variants[@]}"; do
            IFS=';' read -r variant suffix <<< "${variant_data}"

            candidates=(*-${variant}-${commit_hash}/@(*|*-dbgsym).@(${suffix}))

            for candidate in "${candidates[@]}"; do
              mv "${candidate}" "${root_dir}"
            done
          done

      - name: Generate Checksums 🪪
        if: fromJSON(steps.check.outputs.validTag)
        run: |
          : Generate Checksums 🪪
          if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi
          shopt -s extglob

          echo "### Checksums" > ${{ github.workspace }}/CHECKSUMS.txt
          for file in ${{ github.workspace }}/@(*.exe|*.deb|*.ddeb|*.pkg|*.tar.xz|*.zip); do
            echo "    ${file##*/}: $(sha256sum "${file}" | cut -d " " -f 1)" >> ${{ github.workspace }}/CHECKSUMS.txt
          done

      - name: Create Release 🛫
        if: fromJSON(steps.check.outputs.validTag)
        id: create_release
        uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564
        with:
          draft: true
          prerelease: ${{ fromJSON(steps.check.outputs.prerelease) }}
          tag_name: ${{ steps.check.outputs.version }}
          name: ${{ needs.build-project.outputs.pluginName }} ${{ steps.check.outputs.version }}
          body_path: ${{ github.workspace }}/CHECKSUMS.txt
          files: |
            ${{ github.workspace }}/*.exe
            ${{ github.workspace }}/*.zip
            ${{ github.workspace }}/*.pkg
            ${{ github.workspace }}/*.deb
            ${{ github.workspace }}/*.ddeb
            ${{ github.workspace }}/*.tar.xz