summaryrefslogtreecommitdiff
path: root/.github/workflows/fedora-copr.yml
blob: 64f5ab96e814c843f29ca8eb04c9c6b715941b55 (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
name: Package for Fedora Copr repo

on:
  release:
    types: [published]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:
  fedora-copr:
    container: fedora:latest
    runs-on: ubuntu-latest

    steps:
      - name: Install API token for copr-cli
        env:
          # To generate a new token: https://copr.fedorainfracloud.org/api/.
          API_LOGIN: ${{ secrets.COPR_API_LOGIN }}
          API_USERNAME: ${{ secrets.COPR_API_USERNAME }}
          API_TOKEN_CONTENT: ${{ secrets.COPR_API_TOKEN }}
        run: |
          mkdir -p "$HOME/.config"
          # To generate a new token: https://copr.fedorainfracloud.org/api/.
          echo "[copr-cli]" >> "$HOME/.config/copr"
          echo "login = $API_LOGIN" >> "$HOME/.config/copr"
          echo "username = $API_USERNAME" >> "$HOME/.config/copr"
          echo "token = $API_TOKEN_CONTENT" >> "$HOME/.config/copr"
          echo "copr_url = https://copr.fedorainfracloud.org" >> "$HOME/.config/copr"

      - name: Install tooling for source RPM build
        run: |
          dnf -y install @development-tools @rpm-development-tools copr-cli rpkg git 'dnf-command(builddep)'

      # It is necessary to checkout into sub-directory, because of some weird ownership problems cause by using containers
      - name: Check out sources
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
          path: swayfx

      - name: Check out the latest tag
        run: |
          cp ./swayfx/build-scripts/swayfx.rpkg.spec ./
          cd swayfx
          git stash save "Action stashing changes"
          latestTag=$(git describe --abbrev=0 --tags)
          git checkout $latestTag

      - name: Copy master spec into root dir
        run: |
          cd swayfx
          cp ../swayfx.rpkg.spec ./

      - name: Generate spec
        run: |
          cd swayfx
          mkdir specs
          rpkg spec --source --outdir specs

      - name: Install build dependencies
        run: |
          cd swayfx
          dnf -y builddep ./specs/swayfx.rpkg.spec

      - name: Local build
        run: |
          cd swayfx
          mkdir -p out
          rpkg local --out `pwd`/out

      - name: Test if installation of package is successful
        run: |
          cd swayfx/out

          packages=(`rpmspec -q --nodebuginfo --qf \
              "./%{ARCH}/%{Name}-%{Version}-%{Release}.%{ARCH}.rpm\n" \
              ../specs/swayfx.rpkg.spec`)
          for i in "${packages[@]}"; do
            dnf -y install "$i"
          done

      - name: Submit the build to copr
        run: |
          cd swayfx
          rpkg -v copr-build -w ${{ secrets.COPR_REPO_NAME }}