summaryrefslogtreecommitdiff
path: root/.github/workflows/release.yml
blob: a6cfbb4a94a172f3a1fa29990c74ac6b1d44b4dc (plain)
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
name: Release

on:
  push:
    tags:
      - 'v*'

jobs:
  release:
    runs-on: ubuntu-latest
    container:
      image: 'fedora:latest'

    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0

    - name: Install dependencies
      run: |
        dnf update -y
        dnf install -y \
          autoconf-archive \
          clang \
          clang-analyzer \
          bison \
          desktop-file-utils \
          flex \
          gcc \
          git \
          gmp-devel \
          gtk3 \
          libmpc-devel \
          libxml2-devel \
          make \
          mate-common \
          mate-desktop-devel \
          mpfr-devel \
          redhat-rpm-config \
          curl \
          which \
          sha256sum

    - name: Set up environment variables
      run: |
        export CPU_COUNT=$(nproc)
        echo "CPU_COUNT=$CPU_COUNT" >> $GITHUB_ENV
        echo "REPO_NAME=mate-calc" >> $GITHUB_ENV
        echo "OWNER_NAME=mate-desktop" >> $GITHUB_ENV

    - name: Generate build system
      run: |
        NOCONFIGURE=1 ./autogen.sh

    - name: Configure
      run: |
        ./configure --enable-compile-warnings=maximum

    - name: Build
      run: |
        make -j $CPU_COUNT

    - name: Create distribution archive
      run: |
        make distcheck

    - name: Generate checksums
      run: |
        for file in mate-calc-*.tar.xz; do
          if [ -f "$file" ]; then
            sha256sum "$file" > "$file.sha256"
          fi
        done

    - name: Notify release servers
      run: |
        # Notify MATE release servers (if configured)
        if [ -n "${{ secrets.RELEASE_NOTIFY_TOKEN }}" ]; then
          curl -X POST -H "Authorization: token ${{ secrets.RELEASE_NOTIFY_TOKEN }}" \
               -d '{"tag":"${{ github.ref_name }}","repo":"mate-calc"}' \
               https://release.mate-desktop.org/release || echo "Release notification failed"
        fi

    - name: Create GitHub Release
      uses: softprops/action-gh-release@v2
      with:
        draft: false
        prerelease: false
        generate_release_notes: true
        files: |
          mate-calc-*.tar.xz
          mate-calc-*.tar.xz.sha256
        body: |
          Release ${{ github.ref_name }} of MATE Calculator
          
          This release includes the source distribution archive and checksums.
          
          ## Installation
          
          Download the `mate-calc-*.tar.xz` file and verify it with the corresponding `.sha256` checksum file:
          
          ```bash
          sha256sum -c mate-calc-*.tar.xz.sha256
          ```
          
          Then extract and build:
          
          ```bash
          tar -xf mate-calc-*.tar.xz
          cd mate-calc-*
          ./configure
          make
          sudo make install
          ```
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}