1+ name : build-release
12on :
2- schedule :
3- - cron : " 30 * * * *"
3+ workflow_dispatch :
4+ inputs :
5+ new_commit_n :
6+ description : " Commit for last release"
7+ required : true
8+ old_commit_n :
9+ description : " Commit # for upstream"
10+ required : true
11+
12+ env :
13+ SELF_GH : https://api.github.com/repos/mpsq/emacs-gcc-wayland-devel-builder
14+ UPSTREAM_GH : https://api.github.com/repos/flatwhatson/emacs
415
516jobs :
617 image :
718 runs-on : ubuntu-latest
19+ env :
20+ OLD_COMMIT_N : ${{ github.event.inputs.old_commit_n }}
21+ NEW_COMMIT_N : ${{ github.event.inputs.new_commit_n }}
822 steps :
923 - name : Detect new commit
1024 run : |
11- upstream=$(curl -I -k "$GITHUB_API_URL"/repos/flatwhatson/emacs/commits?per_page=1 | sed -n '/^[Ll]ink:/ s/.*"next".*page=\([0-9]*\).*"last".*/\1/p')
12- release=$(curl "$GITHUB_API_URL"/repos/"$GITHUB_REPOSITORY"/releases/latest | jq -r .tag_name | sed -r 's/.*([0-9]{6})/\1/')
13- echo $upstream
14- echo $release
1525 # Check if a new release is needed
16- if [ "$upstream " == "$release " ]; then exit 1; else exit 0; fi
26+ if ["$OLD_COMMIT_N " == "$NEW_COMMIT_N " ]; then exit 1; else exit 0; fi
1727 - uses : actions/checkout@v2
1828 - name : Set up Docker Buildx
1929 id : buildx
@@ -38,17 +48,29 @@ jobs:
3848 container :
3949 image : mpsq/emacs-native-comp-wayland-builder:latest
4050 options : --user root
51+ env :
52+ OLD_COMMIT_N : ${{ github.event.inputs.old_commit_n }}
53+ NEW_COMMIT_N : ${{ github.event.inputs.new_commit_n }}
4154 steps :
4255 - name : Prepare artifacts
4356 run : |
44- pacman --noconfirm -S jq
57+ pacman --noconfirm -S jq openssh bc
4558 cd /home/pcr
59+ # Get version number
4660 version=$(ls emacs* | sed -r 's/.*([0-9]{2}\.[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{6}).*/\1/gi')
4761 echo "pkg_version=$version" >> $GITHUB_ENV
62+ # Clean artifact
4863 mkdir pkg
4964 tar xf "$(ls emacs*)" -C pkg
5065 rm pkg/.BUILDINFO pkg/.MTREE pkg/.PKGINFO
5166 tar czf "$version".tar.gz -C pkg .
67+ sum=$(sha512sum "$version".tar.gz | sed -r 's/(.*)\s\s.*/\1/')
68+ echo "pkg_sum=$sum" >> $GITHUB_ENV
69+ # Get release body
70+ delta=$(echo "$NEW_COMMIT_N - $OLD_COMMIT_N" | bc)
71+ echo -en "# Short summary\n\n" > body.md
72+ echo -en "Check [upstream](https://github.com//flatwhatson/emacs/commits) for more details.\n\n" >> body.md
73+ curl -s "$UPSTREAM_GH"/commits?per_page="$delta" | jq -r '.[].commit.message | capture("(?<id>.+)\n").id' | sed '/^Merge/,+1 d' | sed -r s'/(.*)/- \1/' >> body.md
5274 - name : Create Release
5375 id : create_release
5476 uses : actions/create-release@v1
5779 with :
5880 tag_name : ${{ env.pkg_version }}
5981 release_name : Release ${{ env.pkg_version }}
60- body : Check emacs git repository.
82+ body_path : /home/pcr/body.md
6183 draft : false
6284 prerelease : false
6385 - name : Upload Release Asset
@@ -72,38 +94,34 @@ jobs:
7294 asset_content_type : application/gzip
7395 - name : Prepare and push new version to AUR
7496 env :
97+ PKG_SUM : ${{ env.pkg_sum }}
7598 PKG_VERSION : ${{ env.pkg_version }}
7699 PRIV_KEY : ${{ secrets.PRIV_KEY }}
77100 PUB_KEY : ${{ secrets.PUB_KEY }}
78- RELEASE_UPLOAD_URL : ${{ steps.create_release.outputs.upload_url }}
79101 run : |
80- cd /home/pcr
81- pacman -S git
82- sudo -u pcr bash
102+ cd /root
83103 mkdir .ssh
84- chmod 700 .ssh
85- echo "$PUB_KEY" >> .ssh/id_aur.pub
86- echo "$PRIV_KEY" >> .ssh/id_aur
87- chmod 644 .ssh/id_aur.pub
104+ # Setup SSH
105+ echo "$PUB_KEY" | tr -d '\r' > .ssh/id_aur.pub
106+ echo "$PRIV_KEY" | base64 --decode > .ssh/id_aur
88107 chmod 600 .ssh/id_aur
89- cat <<EOT >> .ssh/config
90- Host aur.archlinux.org
91- IdentityFile ~/.ssh/id_aur
92- User aur
93- EOT
94- chmod 644 .ssh/config
95- cat <<EOT >> .gitconfig
96- [user]
97- name = Méril Pilon
98- 99- line 2
100- EOT
101- sum=$(sha512sum /home/pcr/"$PKG_VERSION".tar.gz | sed -r 's/(.*)\s.*/\1/')
102- git clone ssh://[email protected] /emacs-gcc-wayland-devel-bin.git 108+ echo -en 'Host aur.archlinux.org\n IdentityFile /root/.ssh/id_aur\n User aur\n' > .ssh/config
109+ ssh-keyscan aur.archlinux.org > .ssh/known_hosts
110+ ssh-keyscan 95.216.144.15 >> .ssh/known_hosts
111+ # Setup git
112+ cd /home/pcr
113+ git config --global user.name "Méril Pilon"
114+ git config --global user.email "[email protected] " 115+ git clone ssh://aur.archlinux.org/emacs-gcc-wayland-devel-bin.git
116+ chown -R pcr:pcr emacs-gcc-wayland-devel-bin
103117 cd emacs-gcc-wayland-devel-bin
104- cat PKGBUILD | sed -r 's~pkgver=.*~pkgver='$PKG_VERSION'~'
105- cat PKGBUILD | sed -r 's~sha512sums=.*~sha512sums=\("'"$sum"'"\)~'
106- makepkg --printsrcinfo > .SRCINFO
118+ # Amend PKG
119+ sed -i -r -e 's~pkgver=.*~pkgver='$PKG_VERSION'~' PKGBUILD
120+ sed -i -r -e 's~sha512sums=.*~sha512sums=\("'"$PKG_SUM"'"\)~' PKGBUILD
121+ chown pcr:pcr PKGBUILD
122+ rm .SRCINFO
123+ su pcr -c "makepkg --printsrcinfo > .SRCINFO"
124+ # Push changes
107125 git add .SRCINFO PKGBUILD
108126 git commit -m "Bump to $PKG_VERSION"
109127 git push origin master
0 commit comments