Release #4
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: | |
jobs: | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Get postgres version | |
run: | | |
sudo service postgresql start | |
PGVER=$(psql --version | grep -Po '(?<=psql \(PostgreSQL\) )[^;]+(?=\.\d \()') | |
PROJECT_VERSION=$(grep -Po '(?<=project\(VRPROUTING VERSION )[^;]+' CMakeLists.txt) | |
echo "PGVER=${PGVER}" >> $GITHUB_ENV | |
echo "PGPORT=5432" >> $GITHUB_ENV | |
echo "PGIS=3" >> $GITHUB_ENV | |
echo "PROJECT_VERSION=${PROJECT_VERSION}" >> $GITHUB_ENV | |
echo "VROOMVER=1.12.0" >> $GITHUB_ENV | |
- name: Verify Tag Name | |
run: | | |
TAG_NAME=${GITHUB_REF#refs/*/} | |
echo "TAG_NAME=${TAG_NAME}" >> $GITHUB_ENV | |
echo ${TAG_NAME} | |
echo ${PROJECT_VERSION} | |
if [ "${TAG_NAME}" != "v${PROJECT_VERSION}" ]; then | |
echo "Tag name should be v${PROJECT_VERSION}" | |
exit 1 | |
fi | |
- name: Extract branch name | |
run: | | |
raw=$(git branch -r --contains ${{ github.ref }}) | |
branch=${raw##*/} | |
echo "BRANCH=$branch" >> $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@v2 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y \ | |
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 -r requirements.txt | |
pip list | |
- name: Install VROOM dependencies | |
run: | | |
sudo apt-get install libssl-dev libasio-dev libglpk-dev | |
- name: Cache VROOM | |
id: cache-vroom | |
uses: actions/cache@v2 | |
env: | |
cache-name: vroom | |
with: | |
path: | | |
~/vroom-${{ env.VROOMVER }} | |
key: ${{ runner.os }}-${{ env.cache-name }}-${{ env.VROOMVER }} | |
- name: Build VROOM | |
if: steps.cache-vroom.outputs.cache-hit != 'true' | |
run: | | |
git clone --depth 1 --branch v${{ env.VROOMVER }} https://github.com/VROOM-Project/vroom ~/vroom-${{ env.VROOMVER }} | |
# init the required submodules | |
cd ~/vroom-${{ env.VROOMVER }}/ | |
git submodule update --init | |
# Using "shared" target for creating Position Independent Code, disabling use of routing | |
cd ~/vroom-${{ env.VROOMVER }}/src | |
USE_ROUTING=false make shared | |
- 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 -DVROOM_INSTALL_PATH=$HOME/vroom-${{ env.VROOMVER }} .. | |
- name: Build | |
run: | | |
cd build | |
make doc | |
make -j 4 | |
sudo make install | |
make doxy | |
- 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: Update Users Documentation | |
run: | | |
git checkout origin/gh-pages | |
git checkout -b gh-pages | |
PROJECT_MAJOR="v${PROJECT_VERSION%%.*}" | |
rm -rf ${PROJECT_MAJOR} | |
cp -r build/doc/html ${PROJECT_MAJOR} | |
git add ${PROJECT_MAJOR} | |
git diff-index --quiet HEAD || git commit -m "Update users documentation for ${PROJECT_VERSION} (tag ${TAG_NAME})" | |
git fetch origin | |
git rebase origin/gh-pages | |
git push origin gh-pages | |
git checkout @{-2} | |
- 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 }}-${PROJECT_VERSION}.zip | |
mv ${TAG_NAME}.tar.gz ${{ github.event.repository.name }}-${PROJECT_VERSION}.tar.gz | |
- name: Make Attachments | |
run: | | |
cd build/doc | |
cp -r html doc-v${PROJECT_VERSION}-en | |
rm -rf doc-v${PROJECT_VERSION}-en/es | |
tar -zcvf doc-v${PROJECT_VERSION}-en.tar.gz doc-v${PROJECT_VERSION}-en | |
cd ../.. | |
grep -Pzo "(?s)v${PROJECT_VERSION//./\\.} Release Notes.*?(?=v.\..\.. Release Notes)" NEWS | tr '\0' '\n' > release_body.txt | |
# Only executed during the first release | |
grep -q '[^[:space:]]' < release_body.txt || cp NEWS release_body.txt | |
echo >> release_body.txt | |
echo "**Attachments**" >> release_body.txt | |
echo "File | Contents" >> release_body.txt | |
echo "| --- | --- |" >> release_body.txt | |
echo "| \`doc-v${PROJECT_VERSION}-en.tar.gz\` | English documentation. Redirection to English" >> release_body.txt | |
echo "| \`vrprouting-${PROJECT_VERSION}.tar.gz\` | tar.gz of the release" >> release_body.txt | |
echo "| \`vrprouting-${PROJECT_VERSION}.zip\` | zip of the release" >> release_body.txt | |
cat release_body.txt | |
- name: Create Draft Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
body_path: release_body.txt | |
name: ${{ env.TAG_NAME }} | |
draft: true | |
prerelease: false | |
files: | | |
build/doc/doc-v${{ env.PROJECT_VERSION }}-en.tar.gz | |
${{ github.event.repository.name }}-${{ env.PROJECT_VERSION }}.zip | |
${{ github.event.repository.name }}-${{ env.PROJECT_VERSION }}.tar.gz | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |