# GitLab CI configuration for ffsend builds, tests and releases # # To add a new release: # - configure a new 'build-*' job with the proper target # - export a build artifact from the new job # - manually upload artifact to GitHub in the 'github-release' job stages: - package # AUR packages release package-aur: image: archlinux/base stage: package # needs: # - release-github dependencies: [] only: - /^v(\d+\.)*\d+$/ before_script: [] script: - cd ./pkg/aur # Determine the version number we're releasing for - VERSION=$(echo $CI_COMMIT_REF_NAME | cut -c 2-) - echo "Determined binary version number 'v$VERSION'" # Determine remote URLs and SHA checksums - echo "Determining SHA checksums for remote files..." - URL_SOURCE=https://git.auteiy.me/dmitry/cursorsPosy/-/archive/v$VERSION/cursorsPosy-v$VERSION.tar.gz?path=themes - 'echo "Selected source URL: $URL_SOURCE"' - echo "Determining sha256sum for remote source..." - 'SHA_SOURCE=$(curl -sSL "$URL_SOURCE" | sha256sum | cut -d" " -f1)' - 'echo "Got sha256sum: $SHA_SOURCE"' # Update PKGBUILD parameters: version, source URL and SHA sum - echo "Updating PKGBUILDS with release information..." - sed "s/^pkgver=.*\$/pkgver=$VERSION/" -i posy-cursors/PKGBUILD - sed "s/^source=(\"\(.*\)::.*\").*\$/source=(\"\1::$(echo $URL_SOURCE | sed 's/\//\\\//g')\")/" -i posy-cursors/PKGBUILD - sed "s/^sha256sums=.*\$/sha256sums=('$SHA_SOURCE')/" -i posy-cursors/PKGBUILD # Get SHA hash for local and remote file w/o version, update if it has changed # - 'SHA_STRIP_LOCAL=$(cat ffsend-git/PKGBUILD | sed /^pkgver=.\*/d | sha256sum | cut -d" " -f1)' # - 'SHA_STRIP_REMOTE=$(curl -sSL "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=ffsend-git" | sed /^pkgver=.\*/d | sha256sum | cut -d" " -f1)' # Install dependencies - echo "Installing required build packages..." - pacman -Syu --noconfirm sudo base-devel openssh git openssl # Make AUR package - mkdir -p /.cargo - chmod -R 777 /.cargo - cd posy-cursors/ - echo "Making main source package..." - sudo -u nobody makepkg -c - sudo -u nobody makepkg --printsrcinfo > .SRCINFO # Make git package if different than the remote # - | # if [ ! "$SHA_STRIP_LOCAL" == "$SHA_STRIP_REMOTE" ]; then # cd ../ffsend-git # echo "Making git source package..." # sudo -u nobody makepkg -c # sudo -u nobody makepkg --printsrcinfo > .SRCINFO # else # echo "Not making git source package, it has not changed" # fi - cd .. # Set up SSH for publishing - mkdir -p /root/.ssh - cp ./aur.pub /root/.ssh/id_rsa.pub - echo "$AUR_SSH_PRIVATE" | base64 -d > /root/.ssh/id_rsa - echo "Host aur.archlinux.org" >> /root/.ssh/config - echo " IdentityFile /root/.ssh/aur" >> /root/.ssh/config - echo " User aur" >> /root/.ssh/config - chmod 600 /root/.ssh/{id_rsa*,config} - eval `ssh-agent -s` - ssh-add /root/.ssh/id_rsa - ssh-keyscan -H aur.archlinux.org >> /root/.ssh/known_hosts - git config --global user.name "Dmitry Porunov" - git config --global user.email "dmitry@auteiy.me" # Publish main package: clone AUR repo, commit update and push - git clone ssh://aur@aur.archlinux.org/posy-cursors.git aur-posy-cursors - cd aur-posy-cursors - cp ../posy-cursors/{PKGBUILD,.SRCINFO} ./ - git add PKGBUILD .SRCINFO - git commit -m "Release v$VERSION" - git push - cd .. # Publish binary package: clone AUR repo, commit update and push # - git clone ssh://aur@aur.archlinux.org/ffsend-bin.git aur-ffsend-bin # - cd aur-ffsend-bin # - cp ../ffsend-bin/{PKGBUILD,.SRCINFO} ./ # - git add PKGBUILD .SRCINFO # - git commit -m "Release v$VERSION" # - git push # - cd .. # Publish git package: clone AUR repo, commit update and push # Only publish it if it is different than the remote # - | # if [ ! "$SHA_STRIP_LOCAL" == "$SHA_STRIP_REMOTE" ]; then # git clone ssh://aur@aur.archlinux.org/ffsend-git.git aur-ffsend-git # cd aur-ffsend-git # cp ../ffsend-git/{PKGBUILD,.SRCINFO} ./ # git add PKGBUILD .SRCINFO # git commit -m "Update PKGBUILD for release v$VERSION" # git push # cd .. # else # echo "Not pushing git package, it has not changed" # fi # TODO: add job to test ffsend{-git} AUR packages