.. _developer_build_release: Create a new release ==================== Vocabulary ---------- On this page, we use the word ``version`` for a major version of GeoMapFish (2.0), and the word ``release`` for each step in this version (2.0.0rc1, 2.0.0, 2.0.1, ...). ``MapFish Geoportal`` is the pack that includes ngeo and c2cgeoportal; since 2014, both projects are synchronizing their major versions. For example, ```` can be ``2.0.0rc1`` for the first release candidate of the version ``2.0``, ``2.0.0`` for the final release, ``2.0.1`` for the first bug fix release, and ```` can be ``2.0``, ``2.1``, ... .. _developer_build_release_pre_release_task: Tasks to do ----------- On branch creation (start of the integration phase): * Create and initialise the branches * Protect the new branches * Configure the rebuild * Use the ``ngeo`` package linked to the branch * Verify that the changelog creation is working On release creation: * Reset the change log * Do the tags * Publish it * Create the new demo * Use the new demo .. note:: All changes should be committed. Create the branches ------------------- On the demo you should create the new version branch. On ``ngeo`` you should create the new version branch. On ``c2cgeoportal`` you should create the new version branch. On the demo GitHub repository you should set the default branch to the new branch. On the new branch of the demo you should copy the file ``.github/workflows/upgrade-.yaml`` to ``.github/workflows/upgrade-.yaml`` and update the versions in the new file: .. code:: name: Upgrade on: repository_dispatch: types: - geomapfish__updated name: Upgrade branch: - prod- - prod--simple On the new version branch: - in the files ``.github/workflows/main.yaml`` and ``.github/workflows/qgis.yaml`` set ``MAIN_BRANCH`` to ````. On the master branch: - add the new branch for the demo, ngeo and c2cgeoportal in the file ``scripts/status.yaml``. - in the file ``.github/workflows/main.yaml`` and ``.github/workflows/qgis.yaml`` set ``MAJOR_VERSION`` to ````. - in the files ``.github/workflows/audit.yaml`` and the new branch. Configure the rebuild --------------------- On ``c2cgeoportal`` copy the file ``.github/workflows/main.yaml`` from new version branch to master branch as ``.github/workflows/rebuild-.yaml`` and do the following changes: .. code:: diff - name: Continuous integration + name: Rebuild on: - push: + schedule: + - cron: "30 3 * * *" jobs: - not-failed-backport: - ... - name: Continuous integration + name: Rebuild - if: "!startsWith(github.event.head_commit.message, '[skip ci] ')" + strategy: + fail-fast: false + matrix: + branch: + - 'x.y' env: - MAIN_BRANCH: master + MAIN_BRANCH: - uses: actions/checkout@v1 with: + ref: ${{ env.MAIN_BRANCH }} - # Test Upgrade - ... - - run: ci/test-upgrade cleanup ${HOME}/workspace - name: Publish feature branch - run: | - c2cciutils-publish - c2cciutils-publish --group=full + c2cciutils-publish --type=rebuild - if: > - github.ref != format('refs/heads/{0}', env.MAIN_BRANCH) - && github.repository == 'camptocamp/c2cgeoportal' - - name: Publish version branch - ... - - name: Update the changelog - ... - - run: git diff CHANGELOG.md - - name: Push version and changelog - ... - - name: Publish to Transifex - ... - - - name: Publish documentation to GitHub.io - ... - - - name: Notify demo - ... On ``c2cgeoportal`` copy the files ``.github/workflows/qgis.yaml`` from new version branch to master branch as ``.github/workflows/rebuild-qgis-.yaml`` and do the following changes: .. code:: diff - name: QGIS + name: QGIS rebuild on: - push: + schedule: + - cron: "30 3 * * *" - name: QGIS + name: QGIS rebuild - if: "!startsWith(github.event.head_commit.message, '[skip ci] ')" strategy: fail-fast: false matrix: + branch: + - 'x.y' env: - MAIN_BRANCH: master - MAJOR_VERSION: x.y + MAIN_BRANCH: ${{ matrix.branch }} + MAJOR_VERSION: ${{ matrix.branch }} - uses: actions/checkout@v1 + with: + ref: ${{ env.MAIN_BRANCH }} - name: Publish feature branch run: | - c2cciutils-publish --group=qgis-${{ matrix.version }} + c2cciutils-publish --type=rebuild --group=qgis-${{ matrix.version }} - if: > - github.ref != format('refs/heads/{0}', env.MAIN_BRANCH) - && github.repository == 'camptocamp/c2cgeoportal' - - name: Publish version branch - ... On ``c2cgeoportal`` copy the file ``.github/workflows/main.yaml`` from new version branch to master branch as ``.github/workflows/ngeo-.yaml`` and do the following changes: .. code:: diff - name: Continuous integration + name: Update ngeo on: - push: + repository_dispatch: + types: + - ngeo__updated - name: Continuous integration + name: Update ngeo - if: "!startsWith(github.event.head_commit.message, '[skip ci] ')" env: - MAIN_BRANCH: master - MAJOR_VERSION: x.y + MAIN_BRANCH: x.y + MAJOR_VERSION: x.y - uses: actions/checkout@v1 + with: + ref: ${{ env.MAIN_BRANCH }} - - name: Publish feature branch - ... - - - name: Publish to Transifex - ... - - - name: Publish documentation to GitHub.io - ... And also remove all the `if` concerning the following tests: - `github.ref != format('refs/heads/{0}', env.MAIN_BRANCH)` - `github.repository == 'camptocamp/c2cgeoportal'` Configure the audit ------------------- Add the new version branch in the ``.github/workflows/audit.yaml`` file. Use the ``ngeo`` package linked to the branch --------------------------------------------- In ``c2cgeoportal`` new version branch, in the file ``geoportal/package.json``, set the ``ngeo`` version to ``version--latest``. Reset the change log -------------------- On the ``c2cgeoportal`` new version branch: * Empty the file ``CHANGELOG`` * Set the content of the file ``ci/changelog.yaml`` to: .. code:: yaml commits: c2cgeoportal: {} ngeo: {} pulls: c2cgeoportal: {} ngeo: {} releases: [] Security information -------------------- On the master branch, update the file ``SECURITY.md`` with the security information by adding: .. code:: | x.y+1 | To be defined | Version check ------------- On the branch disable version check by adding in the ``ci/config.yaml``: .. code:: diff checks: + versions: False Backport label -------------- Create the new back port label named ``backport_``. Protect branch -------------- In GitHub project settings, protect the new branch with the same settings as the master branch. Check ----- Run `c2cciutils-checks` on each branch before pushing to be sure that everything is OK. Publish it ---------- Send a release email to the ``geomapfish@googlegroups.com`` and ``geomapfish-dev@lists.camptocamp.com`` mailing lists. Create the new demo ------------------- Create the new demo on OpenShift Use the new demo ---------------- On ``ngeo`` master branch change all the URL from ``https://geomapfish-demo-.camptocamp.com`` to ``https://geomapfish-demo-.camptocamp.com``.