aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
blob: 70765f617e2299df7bb074f7db09dc1fa5b54548 (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
---
name: PR checks

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

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

env:
  SBO_MAINTAINER_TOOLS_NAME: aclemons/sbo-maintainer-tools
  # renovate: datasource=docker depName=aclemons/sbo-maintainer-tools
  SBO_MAINTAINER_TOOLS_VERSION: 0.9.0-15.0@sha256:bad368eb4e28aac3076c6775b4a8ec96f564434657a4b853f9f961cdeed88404

jobs:
  changes:
    runs-on: ubuntu-22.04
    permissions:
      contents: read
    outputs:
      matrix: ${{ steps.set-matrix.outputs.matrix }}
    steps:
      - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
        with:
          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@c860b5c47fa71f461da850094ef2f6e3d6514e44 # v38.1.3
        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:
      - name: Set sbo maintainer tools docker image
        run: |
          printf 'DOCKER_IMAGE=%s:%s\n' "${{ env.SBO_MAINTAINER_TOOLS_NAME }}" "${{ env.SBO_MAINTAINER_TOOLS_VERSION }}" >> "$GITHUB_ENV"

      - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
        with:
          ref: ${{ github.head_ref }}
          repository: ${{ github.event.pull_request.head.repo.full_name }}

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

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

          docker run --rm -v "$(pwd):/work" -w /work ${{ env.DOCKER_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@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.2
        with:
          issue-number: ${{ github.event.number }}
          body-path: comment-output