1name: Packager
2
3on:
4  push:
5    tags:
6      - '*.*'
7      - '*.*.*'
8
9jobs:
10
11  arch:
12    name: Arch Linux
13    runs-on: ubuntu-latest
14    container: archlinux:latest
15
16    steps:
17    - uses: actions/checkout@v2.3.2
18    - name: Prepare system
19      id: prepare
20      run: |
21        pacman -Syu --noconfirm make binutils fakeroot nodejs npm curl
22        echo "COMPRESSZST=(zstd -c -T0 --ultra -20 -) PKGEXT='.pkg.tar.zst'" >> /etc/makepkg.conf
23
24    - name: Prepare source package
25      id: package
26      run: |
27        curl -LOs https://github.com/filiparag/wikiman/archive/${GITHUB_REF#refs/*/}.tar.gz
28        echo "pkgver=${GITHUB_REF#refs/*/}" > PKGBUILD
29        echo "pkgrel=1" >> PKGBUILD
30        hashsum="$(sha256sum "${GITHUB_REF#refs/*/}.tar.gz" | cut -d' ' -f1)"
31        echo "sha256sums=('$hashsum')" >> PKGBUILD
32        echo "source=("${GITHUB_REF#refs/*/}.tar.gz")" >> PKGBUILD
33        curl 'https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=wikiman' -so PKGBUILD.original
34        sed '/^pkgver=/d; /^pkgrel=/d; /^source=/d; /^sha256sums=/d' -i PKGBUILD.original
35        cat PKGBUILD.original >> PKGBUILD
36
37    - name: Build package
38      id: build
39      run: |
40        useradd builder
41        chown -R builder:builder .
42        su builder -c 'makepkg --printsrcinfo > .SRCINFO'
43        su builder -c 'makepkg -d'
44        mv ./wikiman-*.pkg.* wikiman-latest-any.pkg.tar.zst
45
46    - name: Test installation
47      id: test
48      run: |
49        pacman -U --noconfirm wikiman-latest-any.pkg.tar.zst
50
51    - name: Upload package
52      id: upload_artifact
53      uses: actions/upload-artifact@v2
54      with:
55        name: package-arch
56        path: wikiman-latest-any.pkg.tar.zst
57
58  ubuntu:
59    name: Ubuntu
60    runs-on: ubuntu-latest
61    container: ubuntu:latest
62    steps:
63
64    - name: Prepare system
65      id: prepare
66      run: |
67        export DEBIAN_FRONTEND=noninteractive
68        ln -fs /usr/share/zoneinfo/Europe/Belgrade /etc/localtime
69        apt update
70        apt -y install make nodejs curl
71        dpkg-reconfigure --frontend noninteractive tzdata
72
73    - name: Prepare source package
74      id: package
75      run: |
76        curl -LOs https://github.com/filiparag/wikiman/archive/${GITHUB_REF#refs/*/}.tar.gz
77        tar zxf ${GITHUB_REF#refs/*/}.tar.gz
78
79    - name: Compile package
80      id: compile
81      run: |
82        make -f wikiman-${GITHUB_REF#refs/*/}/Makefile
83        mkdir -p wikiman-${GITHUB_REF#refs/*/}/pkgbuild/DEBIAN
84        cp wikiman-${GITHUB_REF#refs/*/}/pkg/deb/conffiles wikiman-${GITHUB_REF#refs/*/}/pkgbuild/DEBIAN
85        cp wikiman-${GITHUB_REF#refs/*/}/pkg/deb/control wikiman-${GITHUB_REF#refs/*/}/pkgbuild/DEBIAN
86        sed "s|BUILDER_PKGVER|${GITHUB_REF#refs/*/}|g" -i wikiman-${GITHUB_REF#refs/*/}/pkgbuild/DEBIAN/control
87
88    - name: Build package
89      id: build
90      run: |
91        dpkg -b wikiman-${GITHUB_REF#refs/*/}/pkgbuild wikiman-latest_any.deb
92
93    - name: Test installation
94      id: test
95      run: |
96        apt -y install man fzf ripgrep gawk w3m coreutils
97        dpkg -i wikiman-latest_any.deb
98
99    - name: Upload package
100      id: upload_artifact
101      uses: actions/upload-artifact@v2
102      with:
103        name: package-ubuntu
104        path: wikiman-latest_any.deb
105
106  fedora:
107    name: Fedora
108    runs-on: ubuntu-latest
109    container: fedora:latest
110    steps:
111
112    - name: Prepare system
113      id: prepare
114      run: |
115        dnf install -y rpm-build make nodejs curl
116        mkdir -p ~/rpmbuild/SOURCES
117        mkdir -p ~/rpmbuild/SPECS
118
119    - name: Prepare source package
120      id: package
121      run: |
122        curl -LOs https://github.com/filiparag/wikiman/archive/${GITHUB_REF#refs/*/}.tar.gz
123        tar zxf ${GITHUB_REF#refs/*/}.tar.gz
124        cp wikiman-${GITHUB_REF#refs/*/}/pkg/rpm/.spec ~/rpmbuild/SPECS/wikiman.spec
125        mv ${GITHUB_REF#refs/*/}.tar.gz ~/rpmbuild/SOURCES
126
127    - name: Build package
128      id: build
129      run: |
130        export PKGVER="${GITHUB_REF#refs/*/}"
131        export PKGREL="1"
132        rpmbuild -bb ~/rpmbuild/SPECS/wikiman.spec
133        mv ~/rpmbuild/RPMS/noarch/wikiman-*.rpm wikiman-latest.noarch.rpm
134
135    - name: Test installation
136      id: test
137      run: |
138        dnf install -y wikiman-latest.noarch.rpm
139
140    - name: Upload package
141      id: upload_artifact
142      uses: actions/upload-artifact@v2
143      with:
144        name: package-fedora
145        path: wikiman-latest.noarch.rpm
146
147  publish:
148    name: Upload Release Asset
149    runs-on: ubuntu-latest
150    needs: [ arch, ubuntu, fedora ]
151    steps:
152
153      - name: Create Release
154        id: create_release
155        uses: actions/create-release@v1
156        env:
157          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
158        with:
159          tag_name: ${{ github.ref }}
160          release_name: v${{ github.ref }}
161          draft: true
162          prerelease: false
163
164      - name: Download Arch package
165        id: download_artifact_arch
166        uses: actions/download-artifact@v2
167        with:
168          name: package-arch
169
170      - name: Upload Arch Package
171        id: upload_arch
172        uses: actions/upload-release-asset@v1
173        env:
174          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
175        with:
176          upload_url: ${{ steps.create_release.outputs.upload_url }}
177          asset_path: ./wikiman-latest-any.pkg.tar.zst
178          asset_name: wikiman-${{ github.ref }}-1-any.pkg.tar.zst
179          asset_content_type: application/zstd
180
181      - name: Download Ubuntu package
182        id: download_artifact_deb
183        uses: actions/download-artifact@v2
184        with:
185          name: package-ubuntu
186
187      - name: Upload Ubuntu Package
188        id: upload_deb
189        uses: actions/upload-release-asset@v1
190        env:
191          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
192        with:
193          upload_url: ${{ steps.create_release.outputs.upload_url }}
194          asset_path: ./wikiman-latest_any.deb
195          asset_name: wikiman-${{ github.ref }}-1_any.deb
196          asset_content_type: application/vnd.debian.binary-package
197
198      - name: Download Fedora package
199        id: download_artifact_rpm
200        uses: actions/download-artifact@v2
201        with:
202          name: package-fedora
203
204      - name: Upload Fedora Package
205        id: upload_rpm
206        uses: actions/upload-release-asset@v1
207        env:
208          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
209        with:
210          upload_url: ${{ steps.create_release.outputs.upload_url }}
211          asset_path: ./wikiman-latest.noarch.rpm
212          asset_name: wikiman-${{ github.ref }}-1.noarch.rpm
213          asset_content_type: application/x-rpm