Skip to content

Commit

Permalink
Merge branch 'main' into feat/expressjs
Browse files Browse the repository at this point in the history
  • Loading branch information
yanksyoon authored Dec 20, 2024
2 parents b405e2d + 41b2368 commit dc367d1
Show file tree
Hide file tree
Showing 9 changed files with 214 additions and 4 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ test-shellcheck:

.PHONY: test-sphinx-lint
test-sphinx-lint:
sphinx-lint --ignore docs/sphinx-starter-pack/ --ignore docs/_build --ignore docs/env --max-line-length 80 -e all docs/*
sphinx-lint --ignore docs/sphinx-starter-pack/ --ignore docs/_build --ignore docs/env --max-line-length 80 -e all -d missing-underscore-after-hyperlink,missing-space-in-hyperlink docs/*

.PHONY: test-units
test-units: ## Run unit tests.
Expand Down
5 changes: 5 additions & 0 deletions docs/.wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ ACR
AMD
amd
ARGS
ARMv
ASGI
async
Autotools
Expand Down Expand Up @@ -31,6 +32,7 @@ DockerHub
dotnet
ECR
emacs
endian
entrypoint
entrypoints
executables
Expand All @@ -57,6 +59,7 @@ hardcoded
html
https
init
integrations
interoperable
io
js
Expand Down Expand Up @@ -140,6 +143,7 @@ subtree
supervisord
symlink
symlinks
systemd
tini
toml
toolchain
Expand All @@ -151,6 +155,7 @@ uncomment
usrmerge
Uvicorn
VENV
VMs
venv
WSGI
Wsgi
Expand Down
1 change: 1 addition & 0 deletions docs/reference/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ Rockcraft's components, commands and keywords.
Extensions <extensions/index>
plugins
parts_steps
remote-builds
changelog
50 changes: 50 additions & 0 deletions docs/reference/remote-builds.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
.. _ref-remote-builds:


*************
Remote builds
*************

Remote builds offload rock builds to the `build farm`_ hosted by `Launchpad`_.
With remote builds, you can assemble multiple rocks simultaneously and build
for all supported architectures.

Remote builds are launched by running ``rockcraft remote-build``. Rockcraft will
upload the Git repository on the current working directory to Launchpad on your
behalf, under your account. Next, it will trigger builds for the Rockcraft
project present on the root of the repository and continuously monitor the
status of the new builds.

Once all builds are done (either through a successful build or a failure), the
rock files will be downloaded to the current directory, together with the build
logs.


Prerequisites
-------------

In order to perform remote builds, the following conditions must be met:

- You must have a `Launchpad account`_, as the remote builds are performed on
Launchpad.
- The Rockcraft project must be version-controlled by Git. This is because
Rockcraft uses a Git-based workflow to upload the project to Launchpad.
- The repository hosting the Rockcraft project must not be a shallow clone,
because Git does not support pushing shallow clones.


Limitations
-----------

The following is a list of the current limitations of the remote build feature,
which are planned to be addressed in the future:

- The prospective rock must be open source and public, because the remote builds
triggered by Rockcraft are publicly available.
- All architectures defined in the project's ``platforms`` key are built --
there's currently no way to restrict the set of platforms to build remotely.


.. _`Launchpad`: https://launchpad.net/
.. _`build farm`: https://launchpad.net/builders
.. _`Launchpad account`: https://launchpad.net/+login
5 changes: 4 additions & 1 deletion docs/release-notes/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Current releases
----------------


- <upcoming>.
- :ref:`Rockcraft 1.7.0 <release-1.7.0>`

.. _release_policy_and_schedule:

Expand Down Expand Up @@ -59,6 +59,9 @@ development keeps pace with the OS's new releases and support lifecycle.

.. toctree::
:maxdepth: 1
:hidden:

Rockcraft 1.7.0 <rockcraft-1-7-0>


.. release note template:
Expand Down
148 changes: 148 additions & 0 deletions docs/release-notes/rockcraft-1-7-0.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
.. _release-1.7.0:

Rockcraft 1.7.0 release notes
=============================

20 December 2024

Learn about the new features, changes, and fixes introduced in Rockcraft 1.7.0.
For information about the Rockcraft release cycle, see the
:ref:`release_policy_and_schedule`.


Requirements and compatibility
------------------------------

To run Rockcraft, a system requires the following minimum hardware and
installed software. These requirements apply to local hosts as well as VMs and
container hosts.


Minimum hardware requirements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- AMD64, ARM64, ARMv7-M, RISC-V 64-bit, PowerPC 64-bit little-endian, or S390x
processor
- 2GB RAM
- 10GB available storage space
- Internet access for remote software sources and the Snap Store


Platform requirements
~~~~~~~~~~~~~~~~~~~~~

.. list-table::
:header-rows: 1
:widths: 1 3 3

* - Platform
- Version
- Software requirements
* - GNU/Linux
- Popular distributions that ship with systemd and are `compatible with
snapd <https://snapcraft.io/docs/installing-snapd>`_
- systemd


What's new
----------

Rockcraft 1.7.0 brings the following features, integrations, and improvements.


Support for remote builds
~~~~~~~~~~~~~~~~~~~~~~~~~

We added support for remote builds, which leverage off-site compute for
building rocks and can build for multiple architectures with a single command.
For a description of the feature, see :ref:`ref-remote-builds`, or run
``rockcraft remote-build --help``.

This feature is new and experimental -- we welcome feedback on the
`Ubuntu Discourse`_ forum.

Minor features
--------------

Rockcraft 1.7.0 brings the following minor changes.


``init`` command
~~~~~~~~~~~~~~~~

The default base of the project file generated by ``rockcraft init`` has been
updated from ``[email protected]`` to ``[email protected]``.


Rockcraft snap
~~~~~~~~~~~~~~

The base of the Rockcraft snap was updated from core22 to core24.


Go extension
~~~~~~~~~~~~

A new :ref:`tutorial <build-a-rock-for-a-go-application>` and :ref:`reference
<go-framework-reference>` are available for the go-framework extension.


OCI image configuration
~~~~~~~~~~~~~~~~~~~~~~~

When using ``run-user: _daemon_``, the value of the ``Config.User`` key in the
generated rock has been updated from the user name (``_daemon_``) to its
numeric ID.


12-factor app extensions
~~~~~~~~~~~~~~~~~~~~~~~~

We added support for Gunicorn async workers on the Django and Flask extensions.


12-factor app documentation
~~~~~~~~~~~~~~~~~~~~~~~~~~~

The documentation for the various 12-factor framework extensions has been
updated for clarity and to better conform with documentation best practices.


Maven and Ant plugins
~~~~~~~~~~~~~~~~~~~~~

We changed the location of the Java runtime executable on rocks built using the
the Maven and Ant plugins from ``/bin/java`` to ``/usr/bin/java``, as the
former conflicts with the user-merged Ubuntu base.

Fixed bugs and issues
---------------------

The following issues have been resolved in Rockcraft 1.7.0:

- `#659`_ Kubernetes ``runAsNonRoot`` incompatibility with
``run-user: _daemon_``.
- `#749`_ Trying to build the output of "expand-extensions" fails because of the
pebble part.


Contributors
------------

We would like to express a big thank you to all the people who contributed to
this release.

:literalref:`@alithethird<https://github.com/alithethird>`,
:literalref:`@dariuszd21<https://github.com/dariuszd21>`,
:literalref:`@erinecon<https://github.com/erinecon>`,
:literalref:`@javierdelapuente<https://github.com/javierdelapuente>`,
:literalref:`@lengau<https://github.com/lengau>`,
:literalref:`@linostar<https://github.com/linostar>`,
:literalref:`@tigarmo<https://github.com/tigarmo>`,
:literalref:`@vpa1977<https://github.com/vpa1977>`
and :literalref:`@yanksyoon<https://github.com/yanksyoon>`.

.. _Ubuntu Discourse: https://discourse.ubuntu.com/c/rocks/rockcraft/118

.. _#659: https://github.com/canonical/rockcraft/issues/659
.. _#749: https://github.com/canonical/rockcraft/issues/659
1 change: 1 addition & 0 deletions docs/spellingcheck.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,4 @@ matrix:
- div.visually-hidden
- img
- a.p-navigation__link
- a.reference.external
4 changes: 3 additions & 1 deletion rockcraft/extensions/extension.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,9 @@ def validate(self, extension_name: str) -> None:
):
raise errors.ExtensionError(
f"Extension is experimental: {extension_name!r}",
docs_url="https://rockcraft.io/docs/supported-extensions",
doc_slug="/reference/extensions/",
resolution="Run with ROCKCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS=True to enable "
"experimental extensions.",
)

if self.is_experimental(base):
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,5 @@ commands = sphinx-autobuild {posargs: -W -b html --open-browser --port 8080} --w
[testenv:lint-docs]
description = Lint the documentation with sphinx-lint
base = docs
commands = sphinx-lint --ignore docs/_build -e all {posargs} docs/
commands = sphinx-lint --ignore docs/_build -e all -d missing-underscore-after-hyperlink,missing-space-in-hyperlink {posargs} docs/
labels = lint

0 comments on commit dc367d1

Please sign in to comment.