summaryrefslogtreecommitdiffstats
path: root/.github/workflows/ci.yml
blob: bfcc6a7f2b9e56ad21282242bd1b8530ca03d376 (plain) (blame)
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
---
name: PR checks

"on":
  pull_request_target:
    types:
      - opened
      - synchronize
      - reopened

concurrency:
  group: ci-${{ github.event.number }}
  cancel-in-progress: false

env:
  # renovate: datasource=docker depName=aclemons/sbo-maintainer-tools versioning=docker
  SBO_MAINTAINER_TOOLS_IMAGE: aclemons/sbo-maintainer-tools:0.9.0-15.0@sha256:a857eeb783622430a77ffdc0e9be0fa7d38b4d30696f362454eb990614a5ade8

jobs:
  changes:
    runs-on: ubuntu-22.04
    permissions:
      contents: read
    outputs:
      matrix: ${{ steps.set-matrix.outputs.matrix }}
    steps:
      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
        with:
          show-progress: false
          fetch-depth: 2
          ref: ${{ github.head_ref }}
          repository: ${{ github.event.pull_request.head.repo.full_name }}

      - name: Get slackbuild directories which have changes.
        id: changed-dirs
        uses: tj-actions/changed-files@90a06d6ba9543371ab4df8eeca0be07ca6054959 # v42.0.2
        with:
          base_sha: ${{ github.event.pull_request.base.sha }}
          dir_names: true
          dir_names_exclude_current_dir: true
          dir_names_max_depth: 2
          json: true
          quotepath: false
          files_ignore: .github/**

      - name: List all changed files
        run: echo '${{ steps.changed-dirs.outputs.all_changed_files }}'

      - name: Get matrix output
        id: set-matrix
        run: |
          {
            printf 'matrix<<SLACKBUILDS\n'
            jq -r -c 'map({dir: .})' <<< "${{ steps.changed-dirs.outputs.all_changed_files }}"
            printf 'SLACKBUILDS\n'
          } >> "$GITHUB_OUTPUT"

  sbolint:
    name: Checks with sbolint
    runs-on: ubuntu-22.04
    permissions:
      contents: read
      pull-requests: write
    needs: [changes]
    strategy:
      matrix:
        include: ${{ fromJSON(needs.changes.outputs.matrix) }}
    steps:
      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
        with:
          show-progress: false
          ref: ${{ github.head_ref }}
          repository: ${{ github.event.pull_request.head.repo.full_name }}

      - name: Run sbolint
        run: |
          docker pull ${{ env.SBO_MAINTAINER_TOOLS_IMAGE }}

          mkfifo pipe
          tee sbolint-output < pipe &
          set +e

          docker run --rm -v "$(pwd):/work" -w /work ${{ env.SBO_MAINTAINER_TOOLS_IMAGE }} sbolint "${{ matrix.dir }}" > pipe 2>&1

          sbolint_status="$?"
          set -e

          {
            if [[ "$sbolint_status" -eq 0 ]] ; then
              printf '#### ✅ sbolint - %s\n\n' "${{ matrix.dir }} ✅"
            else
              printf '#### ⛔️ sbolint - %s\n\n' "${{ matrix.dir }} ⛔️"
            fi

            printf '```\n'
            cat sbolint-output
            rm sbolint-output
            printf '```\n'
          } > comment-output
        shell:
          bash

      - name: Comment with sbolint results
        uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
        with:
          issue-number: ${{ github.event.number }}
          body-path: comment-output

  dependencies:
    name: Compute reverse dependencies
    runs-on: ubuntu-22.04
    permissions:
      contents: read
      pull-requests: write
    needs: [changes]
    strategy:
      matrix:
        include: ${{ fromJSON(needs.changes.outputs.matrix) }}
    steps:
      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
        with:
          show-progress: false
          ref: ${{ github.head_ref }}
          repository: ${{ github.event.pull_request.head.repo.full_name }}

      - name: Get short package name
        run: printf '%s\n' "${{ matrix.dir }}" | cut -d/ -f2 | sed 's/^/PACKAGE_NAME=/' >> "$GITHUB_ENV"

      - name: Look up dependencies
        id: get_deps
        uses: fjogeleit/http-request-action@8af28031091191b8e41afb287e0e56fce753c7b4 # v1.15.4
        with:
          url: 'https://slackbuilds.org/revdeps.php?q=${{ env.PACKAGE_NAME }}'
          method: 'GET'
          preventFailureOnNoResponse: "true"

      - name: Build comment
        run: |
          {
            printf '#### reverse dependencies - %s\n\n' "${{ matrix.dir }}"
            if [[ ${{ steps.get_deps.outputs.response }} == "" ]] ; then
              printf 'None\n'
            else
              printf '```\n'
              printf '%s' ${{ steps.get_deps.outputs.response }} | sed 's/\\n/\n/g' | sort
              printf '```\n'
            fi
          } > comment-output
        shell:
          bash

      - name: Comment with dependeny results
        uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
        with:
          issue-number: ${{ github.event.number }}
          body-path: comment-output