Release #15
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: | |
env: | |
postgis: 3 | |
vroom: 1.12.0 | |
jobs: | |
release: | |
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+ \()') | |
PROJECT_VERSION=$(grep -Po '(?<=project\(VRPROUTING VERSION )[^;]+' CMakeLists.txt) | |
echo "PGVER=${PGVER}" >> $GITHUB_ENV | |
echo "PGPORT=5432" >> $GITHUB_ENV | |
echo "PROJECT_VERSION=${PROJECT_VERSION}" >> $GITHUB_ENV | |
echo "TAG_NAME=v${PROJECT_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: 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 \ | |
postgresql-${PGVER} \ | |
postgresql-${PGVER}-postgis-${{ env.postgis }} \ | |
postgresql-${PGVER}-postgis-${{ env.postgis }}-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: Install Google OR-Tools dependencies | |
run: | | |
sudo pip install --root=/ ortools | |
- name: Cache VROOM | |
id: cache-vroom | |
uses: actions/cache@v4 | |
env: | |
cache-name: vroom | |
with: | |
path: vroom-${{ env.vroom }} | |
key: ${{ matrix.os }}-${{ env.cache-name }}-${{ env.vroom }} | |
- name: Checkout VROOM | |
if: steps.cache-vroom.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
path: vroom-${{ env.vroom }} | |
repository: VROOM-Project/vroom | |
ref: "v${{ env.vroom }}" | |
submodules: true | |
- name: Build VROOM | |
if: steps.cache-vroom.outputs.cache-hit != 'true' | |
run: | | |
cd vroom-${{ env.vroom }}/src | |
USE_ROUTING=false make shared | |
- name: Configure | |
run: | | |
export PATH=/usr/lib/postgresql/${PGVER}/bin:$PATH | |
VROOM=$(pwd)/vroom-${{ env.vroom }} | |
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=${VROOM} .. | |
- 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 | |
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)### vrpRouting ${PROJECT_VERSION//./\\.} Release Notes.*?(?=## vrpRouting)" NEWS.md | tr '\0' '\n' > release_body.txt | |
# Only executed during the first release | |
grep -q '[^[:space:]]' < release_body.txt || cp NEWS.md 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 }} |