Release #34
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
release: | |
permissions: | |
contents: write # for Git to git push | |
name: Release | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Initialize mandatory git config | |
run: | | |
git config user.name "github-actions[bot]" | |
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
- name: Get postgres version | |
run: | | |
sudo service postgresql start | |
PGVER=$(psql --version | grep -Po '(?<=psql \(PostgreSQL\) )[^;]+(?=\.\d+ \()') | |
PGROUTING_VERSION=$(grep -Po '(?<=project\(PGROUTING VERSION )[^;]+' CMakeLists.txt) | |
echo "PGVER=${PGVER}" >> $GITHUB_ENV | |
echo "PGPORT=5432" >> $GITHUB_ENV | |
echo "PGIS=3" >> $GITHUB_ENV | |
echo "PGROUTING_VERSION=${PGROUTING_VERSION}" >> $GITHUB_ENV | |
echo "TAG_NAME=v${PGROUTING_VERSION}" >> $GITHUB_ENV | |
- name: Create and Push Tag | |
run: | | |
git tag -a "${TAG_NAME}" -m "Release version ${TAG_NAME}" | |
git push origin "${TAG_NAME}" | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Extract branch name and commit hash | |
run: | | |
raw=$(git branch -r --contains ${{ github.ref }}) | |
branch=${raw##*/} | |
echo "BRANCH=$branch" >> $GITHUB_ENV | |
git_hash=$(git rev-parse --short "$GITHUB_SHA") | |
echo "GIT_HASH=$git_hash" >> $GITHUB_ENV | |
- name: Add PostgreSQL APT repository | |
run: | | |
sudo apt-get install curl ca-certificates gnupg | |
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - | |
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ \ | |
$(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' | |
- name: Install python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y \ | |
libboost-graph-dev \ | |
postgresql-${PGVER} \ | |
postgresql-${PGVER}-postgis-${PGIS} \ | |
postgresql-${PGVER}-postgis-${PGIS}-scripts \ | |
postgresql-server-dev-${PGVER} \ | |
graphviz \ | |
doxygen | |
python -m pip install --upgrade pip | |
pip install Sphinx | |
pip install sphinx-bootstrap-theme | |
pip list | |
- name: Configure | |
run: | | |
export PATH=/usr/lib/postgresql/${PGVER}/bin:$PATH | |
mkdir build | |
cd build | |
cmake -DPOSTGRESQL_VERSION=${PGVER} -DDOC_USE_BOOTSTRAP=ON -DWITH_DOC=ON -DBUILD_DOXY=ON -DCMAKE_BUILD_TYPE=Release \ | |
-DES=ON -DZH_HANS=ON .. | |
- name: Build | |
run: | | |
cd build | |
make doc | |
make -j 4 | |
sudo make install | |
make doxy | |
- name: Update Users Documentation | |
run: | | |
git checkout origin/gh-pages | |
git checkout -b gh-pages | |
PGROUTING_MAJOR_MINOR="${PGROUTING_VERSION%.*}" | |
rm -rf ${PGROUTING_MAJOR_MINOR} | |
cp -r build/doc/html ${PGROUTING_MAJOR_MINOR} | |
git add ${PGROUTING_MAJOR_MINOR} | |
git diff-index --quiet HEAD || git commit -m "Update users documentation for ${PGROUTING_VERSION}: commit ${{ env.GIT_HASH }}" | |
git fetch origin | |
git rebase origin/gh-pages | |
git push origin gh-pages | |
git checkout @{-2} | |
- name: Update Developers Documentation | |
if: ${{ env.BRANCH == 'master' }} | |
run: | | |
git checkout gh-pages | |
rm -rf doxygen | |
cp -r build/doxygen/html doxygen | |
git add doxygen | |
git diff-index --quiet HEAD || git commit -m "Update developers documentation for ${PGROUTING_VERSION}: commit ${{ env.GIT_HASH }}" | |
git fetch origin | |
git rebase origin/gh-pages | |
git push origin gh-pages | |
git checkout @{-1} | |
- name: Download Assets | |
run: | | |
wget -c https://github.com/${{ github.repository }}/archive/${TAG_NAME}.zip | |
wget -c https://github.com/${{ github.repository }}/archive/${TAG_NAME}.tar.gz | |
mv ${TAG_NAME}.zip ${{ github.event.repository.name }}-${PGROUTING_VERSION}.zip | |
mv ${TAG_NAME}.tar.gz ${{ github.event.repository.name }}-${PGROUTING_VERSION}.tar.gz | |
- name: Make Attachments | |
run: | | |
cd build/doc | |
cp -r html doc-v${PGROUTING_VERSION} | |
tar -zcvf doc-v${PGROUTING_VERSION}.tar.gz doc-v${PGROUTING_VERSION} | |
cd ../.. | |
grep -Pzo "(?s)pgRouting ${PGROUTING_VERSION//./\\.} Release Notes.*?(?=pgRouting .\..\.. Release Notes)" NEWS.md | tr '\0' '\n' > release_body.txt | |
echo "**Attachments**" >> release_body.txt | |
echo "File | Contents" >> release_body.txt | |
echo "| --- | --- |" >> release_body.txt | |
echo "| \`doc-v${PGROUTING_VERSION}tar.gz\` | English and Spanish documentation. Redirection to English" >> release_body.txt | |
echo "| \`pgrouting-${PGROUTING_VERSION}.tar.gz\` | tar.gz of the release" >> release_body.txt | |
echo "| \`pgrouting-${PGROUTING_VERSION}.zip\`| zip of the release" >> release_body.txt | |
cat release_body.txt | |
- name: Create Draft Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
body_path: release_body.txt | |
name: ${{ env.TAG_NAME }} | |
draft: true | |
prerelease: false | |
files: | | |
build/doc/doc-v${{ env.PGROUTING_VERSION }}.tar.gz | |
${{ github.event.repository.name }}-${{ env.PGROUTING_VERSION }}.zip | |
${{ github.event.repository.name }}-${{ env.PGROUTING_VERSION }}.tar.gz | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |