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