Skip to content

Commit

Permalink
Interrupted upgrade to master
Browse files Browse the repository at this point in the history
  • Loading branch information
Continuous integration committed Oct 11, 2024
1 parent ad09065 commit 9cf0e5f
Show file tree
Hide file tree
Showing 12 changed files with 296 additions and 13 deletions.
6 changes: 6 additions & 0 deletions .UPGRADE_INSTRUCTIONS
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
The `create.diff` file is a recommendation of the changes that you should apply to your project.
You should apply the changes shown in the diff file on `CONST_create_template/<file>` on your project's `<file>`.
Some advice to be more efficient: if the changes on a file concern a file that you never customize, you can simply copy the new file from `CONST_create_template` (`cp CONST_create_template/<file> <file>`).You can furthermore add this file to the `unmanaged_files` section of the `project.yaml` file, to avoid its contents appearing in the diff file for the next upgrade.
Note that you can also apply them using: git apply --3way create.diff
To continue, type:
./upgrade 2.9 11
67 changes: 67 additions & 0 deletions .upgrade.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
# The list (by include, exclude) of default files that will not be overwritten by the upgrade.
# That that can be extended with managed_files or reduced with unmanaged_files from the
# project.yaml file in the project root directory.
default_project_file:
include:
- geoportal/setup\.py
- geoportal/vars\.yaml
- geoportal/Makefile
- geoportal/geomapfish_geoportal/__init__\.py
- geoportal/geomapfish_geoportal/templates/.*
- geoportal/geomapfish_geoportal/locale/.*
- geoportal/geomapfish_geoportal/static/.*
- geoportal/geomapfish_geoportal/static-ngeo/.*
- print/print-apps/.*
- mapserver/.*
- tilegeneration/config\.yaml\.tmpl
- project\.yaml
- docker-compose\.yaml
- env\.project
- README\.rst
- \.github/workflows/main\.yaml
- \.github/workflows/rebuild\.yaml
exclude:
- mapserver/demo\.map\.tmpl
- geoportal/geomapfish_geoportal/static-ngeo/js/apps/image/favicon\.ico

# Files ignored when creating the diff files => will just be left untouched.
no_diff:
- .*\.po
- CONST_.+
- .*/CONST_.+

# Files that will be present in the CONST_create_template but will not be considered in the upgrade.
# Used to provide the alt applications => does not disturb the user during upgrade.
extra:
- geoportal/geomapfish_geoportal/static-ngeo/js/apps/mobile_alt\.html\.ejs
- geoportal/geomapfish_geoportal/static-ngeo/js/apps/oeedit\.html\.ejs
- geoportal/geomapfish_geoportal/static-ngeo/js/apps/Controllermobile_alt\.js
- geoportal/geomapfish_geoportal/static-ngeo/js/apps/Controlleroeedit\.js
- geoportal/geomapfish_geoportal/static-ngeo/js/apps/sass/mobile_alt\.scss
- geoportal/geomapfish_geoportal/static-ngeo/js/apps/sass/vars_mobile_alt\.scss
- geoportal/geomapfish_geoportal/static-ngeo/js/apps/sass/oeedit\.scss
- geoportal/geomapfish_geoportal/static-ngeo/js/apps/sass/vars_oeedit\.scss
- geoportal/interfaces/desktop_alt\.html\.mako
- geoportal/geomapfish_geoportal/static/images/background-layer-button\.png
- tests/test_testapp.py

# Automated file system operations:
# Remove some files or directories:
# - action: remove
# paths:
# - <one file or directory>
# Move a file:
# - action: move
# from: <src file>
# to: <dst file>
upgrade_files:
- action: remove
paths:
- geoportal/tools/extract-messages.js
- action: move
from: geoportal/lingua-server.cfg
to: geoportal/lingva-server.cfg
- action: move
from: geoportal/lingua-client.cfg
to: geoportal/lingva-client.cfg
2 changes: 1 addition & 1 deletion CONST_create_template/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ ENV CONFIG_VARS sqlalchemy.url sqlalchemy.pool_recycle sqlalchemy.pool_size sqla
dbsessions urllogin host_forward_host headers_whitelist headers_blacklist \
smtp c2c.base_path welcome_email \
lingva_extractor interfaces_config interfaces devserver_url api authentication intranet metrics pdfreport \
vector_tiles i18next main_ogc_server
vector_tiles i18next main_ogc_server static_files

COPY . /tmp/config/

Expand Down
2 changes: 1 addition & 1 deletion CONST_create_template/docker-compose.override.sample.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ services:
# - ./../c2cgeoportal/geoportal/c2cgeoportal_geoportal:/opt/c2cgeoportal/geoportal/c2cgeoportal_geoportal
# - ./../c2cgeoportal/admin/c2cgeoportal_admin:/opt/c2cgeoportal/admin/c2cgeoportal_admin
command:
- /usr/local/bin/pserve
- /venv/bin/pserve
- --reload
- c2c:///app/development.ini
environment:
Expand Down
9 changes: 8 additions & 1 deletion CONST_create_template/tests/test_app.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import time

import pytest
import requests

Expand Down Expand Up @@ -25,7 +27,12 @@
)
def test_url(url: str, params: dict[str, str], timeout: int) -> None:
"""Tests that some URL didn't return an error."""
response = requests.get(url, params=params, verify=False, timeout=timeout) # nosec
for _ in range(6):
response = requests.get(url, params=params, verify=False, timeout=timeout) # nosec
if response.status_code == 503:
time.sleep(1)
continue
break
assert response.status_code == 200, response.text


Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ ENV CONFIG_VARS sqlalchemy.url sqlalchemy.pool_recycle sqlalchemy.pool_size sqla
dbsessions urllogin host_forward_host headers_whitelist headers_blacklist \
smtp c2c.base_path welcome_email \
lingva_extractor interfaces_config interfaces devserver_url api authentication intranet metrics pdfreport \
vector_tiles i18next main_ogc_server
vector_tiles i18next main_ogc_server static_files

COPY . /tmp/config/

Expand Down
50 changes: 50 additions & 0 deletions create.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
diff --git a/Dockerfile b/Dockerfile
index 53ec97d..e2538a0 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -14,7 +14,7 @@ ENV CONFIG_VARS sqlalchemy.url sqlalchemy.pool_recycle sqlalchemy.pool_size sqla
dbsessions urllogin host_forward_host headers_whitelist headers_blacklist \
smtp c2c.base_path welcome_email \
lingva_extractor interfaces_config interfaces devserver_url api authentication intranet metrics pdfreport \
- vector_tiles i18next main_ogc_server
+ vector_tiles i18next main_ogc_server static_files

COPY . /tmp/config/

diff --git a/docker-compose.override.sample.yaml b/docker-compose.override.sample.yaml
index c70e4d5..52ac887 100644
--- a/docker-compose.override.sample.yaml
+++ b/docker-compose.override.sample.yaml
@@ -12,7 +12,7 @@ services:
# - ./../c2cgeoportal/geoportal/c2cgeoportal_geoportal:/opt/c2cgeoportal/geoportal/c2cgeoportal_geoportal
# - ./../c2cgeoportal/admin/c2cgeoportal_admin:/opt/c2cgeoportal/admin/c2cgeoportal_admin
command:
- - /usr/local/bin/pserve
+ - /venv/bin/pserve
- --reload
- c2c:///app/development.ini
environment:
diff --git a/tests/test_app.py b/tests/test_app.py
index f4f246b..c60a3ed 100644
--- a/tests/test_app.py
+++ b/tests/test_app.py
@@ -1,3 +1,5 @@
+import time
+
import pytest
import requests

@@ -25,7 +27,12 @@ import requests
)
def test_url(url: str, params: dict[str, str], timeout: int) -> None:
"""Tests that some URL didn't return an error."""
- response = requests.get(url, params=params, verify=False, timeout=timeout) # nosec
+ for _ in range(6):
+ response = requests.get(url, params=params, verify=False, timeout=timeout) # nosec
+ if response.status_code == 503:
+ time.sleep(1)
+ continue
+ break
assert response.status_code == 200, response.text


2 changes: 2 additions & 0 deletions geoportal/CONST_config-schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,8 @@ mapping:
layout:
type: str
default: ngeo
html_filename:
type: str
interfaces_config:
required: True
type: map
Expand Down
8 changes: 8 additions & 0 deletions geoportal/CONST_vars.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,14 @@ vars:
escapeValue: false
backend: {}

static_files:
favicon.ico: /etc/geomapfish/static/images/favicon.ico
robot.txt: /etc/geomapfish/static/robot.txt
api.js: /etc/static-ngeo/api.js
api.js.map: /etc/static-ngeo/api.js.map
api.css: /etc/static-ngeo/api.css
apihelp.html: /etc/geomapfish/static/apihelp/index.html

interfaces_config:
default:
constants:
Expand Down
9 changes: 0 additions & 9 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,3 @@ target-version = ['py39']
[tool.isort]
profile = "black"
line_length = 110

[package]
name = "custom"

[project.entry-points."paste.app_factory"]
main = "custom:main"

[project.entry-points."console_scripts"]
custom-initialize-db = "custom.scripts.initialize_db:main"
9 changes: 9 additions & 0 deletions tests/test_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,21 @@
)
def test_url(url: str, params: dict[str, str], timeout: int) -> None:
"""Tests that some URL didn't return an error."""
<<<<<<< ours
response = None
for _ in range(5):
response = requests.get(url, params=params, verify=False, timeout=timeout) # nosec
if response.status_code != 503:
break
time.sleep(1)
=======
for _ in range(6):
response = requests.get(url, params=params, verify=False, timeout=timeout) # nosec
if response.status_code == 503:
time.sleep(1)
continue
break
>>>>>>> theirs
assert response.status_code == 200, response.text


Expand Down
143 changes: 143 additions & 0 deletions upgrade
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
#!/usr/bin/env python3

# Copyright (c) 2019-2023, Camptocamp SA
# All rights reserved.

# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:

# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.

# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# The views and conclusions contained in the software and documentation are those
# of the authors and should not be interpreted as representing official policies,
# either expressed or implied, of the FreeBSD Project.


import argparse
import os
import platform
import re
import subprocess
import sys

parser = argparse.ArgumentParser(description="Upgrade the project")
parser.add_argument(
"--debug", help="Path to c2cgeoportal source folder to be able to debug the upgrade procedure"
)
parser.add_argument("version", help="the version to upgrade to (master or x.y.z)")
parser.add_argument("step", nargs="?", help="the step to run")
parser_finalize = argparse.ArgumentParser(description="Upgrade the project", add_help=False)
parser_finalize.add_argument("--finalize", action="store_true", help="finalize the upgrade")
parser_finalize.add_argument("--help", action="help", help="show this help message and exit")
parser_finalize.add_argument("build_arg", nargs="*", help="build arguments")

if len(sys.argv) >= 2 and sys.argv[1] == "--finalize":
args = parser_finalize.parse_args()

if platform.system() == "Windows":
code = subprocess.call(["python", "build"] + args.build_arg)
else:
code = subprocess.call(["./build"] + args.build_arg)
if code != 0:
sys.exit(code)

subprocess.call(["docker", "compose", "down", "--remove-orphans"])
subprocess.call(
["docker", "compose", "pull", "--ignore-pull-failures"],
env={**os.environ, "DOCKER_TAG": "unexisting"},
)
subprocess.check_call(["docker", "compose", "up", "-d"])
subprocess.check_call(
[
"docker",
"compose",
"exec",
"geoportal",
"alembic",
"--name=main",
"--config=alembic.ini",
"upgrade",
"head",
]
)

else:
args = parser.parse_args()

c2cupgrade_args = ["--step", args.step] if args.step is not None else []

if os.environ.get("CI") != "true" and args.step is None:
major_version = args.version
match = re.match(r"^([0-9]+\.[0-9]+)\.[0-9]+$", args.version)
if match is not None:
major_version = match.group(1)
match = re.match(r"^([0-9]+\.[0-9]+)\.[0-9a-z]+\.[0-9]+$", args.version)
if match is not None:
major_version = match.group(1)
if not args.debug:
subprocess.check_call(
[
"docker",
"pull",
f"camptocamp/geomapfish:{major_version}",
]
)
subprocess.check_call(["docker", "pull", f"camptocamp/geomapfish-tools:{args.version}"])
subprocess.check_call(
[
"docker",
"pull",
f"camptocamp/geomapfish-config:{major_version}",
]
)

debug_volumes = (
[
"--volume={debug}/geoportal/c2cgeoportal_geoportal/scripts/c2cupgrade.py:".format(
debug=args.debug
),
"/opt/c2cgeoportal/geoportal/c2cgeoportal_geoportal/scripts/c2cupgrade.py",
]
if args.debug
else []
)

win = platform.system() == "Windows"
sys.exit(
subprocess.call(
[
"docker",
"run",
"--rm",
"--env=CI",
f"--volume={os.getcwd()}:/src",
]
+ debug_volumes
+ [
f"camptocamp/geomapfish-tools:{args.version}",
"run-git",
subprocess.check_output(["git", "config", "--get", "user.name"]).decode().strip(),
subprocess.check_output(["git", "config", "--get", "user.email"]).decode().strip(),
"" if win else subprocess.check_output(["id", "-u"]).decode().strip(),
"" if win else subprocess.check_output(["id", "-g"]).decode().strip(),
"/src",
"c2cupgrade",
]
+ c2cupgrade_args
)
)

0 comments on commit 9cf0e5f

Please sign in to comment.