Skip to content

Commit 6eab594

Browse files
committed
doc: prepare 0.24 release notes
1 parent 0eeed7c commit 6eab594

File tree

3 files changed

+185
-0
lines changed

3 files changed

+185
-0
lines changed

doc/manual/configuration.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2326,6 +2326,8 @@ postBuildHook
23262326

23272327
The return status of the hook is ignored.
23282328

2329+
.. _configuration-config-mirrors:
2330+
23292331
{pre,fallback}Mirror[{Prepend,Append}]
23302332
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23312333

@@ -2604,6 +2606,8 @@ Example::
26042606
# Keep ssh-agent working
26052607
whitelist: ["SSH_AGENT_PID", "SSH_AUTH_SOCK"]
26062608

2609+
.. _configuration-config-whitelistremove:
2610+
26072611
whitelistRemove
26082612
~~~~~~~~~~~~~~~
26092613

doc/releases/0.24.rst

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
Bob 0.24 Release Notes
2+
======================
3+
4+
Changes made since Bob 0.23.0 include the following.
5+
6+
Upcoming 1.0 release
7+
--------------------
8+
9+
In preparation for a 1.0 release, the following changes are planned:
10+
11+
* :ref:`configuration-bobMinimumVersion` will be raised to ``0.16``. Projects
12+
with a lower version will be rejected.
13+
* All policies up-to and including version ``0.16`` will be removed.
14+
* Plugins targeting API versions before ``0.15`` will refuse to load.
15+
* The :ref:`configuration-recipes-filter` keyword will be removed.
16+
17+
Bob will now issue a warning if a project or any of its plugin targets a too
18+
old version. Starting with the 0.25 development cycle, the above changes will
19+
be applied.
20+
21+
New features
22+
------------
23+
24+
* Added support for mirrors for URL SCMs.
25+
26+
In the user configuration, any number of mirrors can be added. There are two
27+
types of mirrors: *pre-mirrors* which are checked before the primary location
28+
of the recipe and *fallback-mirrors* that are used if the primary location
29+
failed. Such mirrors are only used for deterministic URL SCMs, though.
30+
31+
Optionally, Bob can also upload files to the mirror(s) during the build.
32+
This is especially useful when configuring a local directory in the per-user
33+
Bob configuration to cache external downloads locally across multiple
34+
projects.
35+
36+
See :ref:`configuration-config-mirrors` for more details. (:issue:`360`)
37+
* Bob gained support for nested SCMs.
38+
39+
This adds support to checkout an SCM into a subdirectory of another SCM in
40+
the same recipe. This requires that the SCM with the upper directory is first
41+
in the list before any other SCMs in subdirectories. Additionally, SCMs that
42+
are natively supported by Jenkins plugins (git, svn), cannot be nested into
43+
the other SCMs (cvs, import, url). The reason is that Jenkins SCM plugins
44+
always execute before anything else in a Jenkins job.
45+
46+
This relaxes the rules that did not allow any nesting before. There are some
47+
drawbacks of such setups. Namely, if an SCM is moved to the attic, all their
48+
nested SCMs are affected too.
49+
* Recipes and classes can use a new file inclusion syntax: ``$<@...@>``. For
50+
each matched file, the script will see a (possibly temporary) file with its
51+
content. The order of files is sorted by the original file name. See
52+
:ref:`configuration-recipes-scripts` for more details.
53+
* Bare file names in URL SCMs now undergo tilde expansion. This replaces the
54+
initial ``~`` or ``~user`` by the *user*’s home directory.
55+
* A number of user configuration entries can now be changed incrementally
56+
instead of replacing them completely:
57+
58+
* Added support to remove builtin :ref:`configuration-config-whitelist`
59+
entries. The new :ref:`configuration-config-whitelistremove` key in
60+
default.yaml removes entries from the whitelist. It has a higher precedence
61+
than adding whitelist entries. It is not an error to remove non-existent
62+
whitelist entries. (:issue:`534`)
63+
* The new :ref:`configuration-config-archive-prepend-append` keys update the
64+
archive list by either prepending to the current list or appending to it.
65+
The previously defined archives are retained.
66+
67+
* The file mode of downloaded file with the URL SCM can now be specified by the
68+
``fileMode`` attribute. Because the handling was inconsistent between local
69+
and network files, a new policy was introduced:
70+
:ref:`policies-defaultFileMode`. If set to the new behaviour, also locally
71+
copied files will get a predictable file mode (``0600``) instead of retaining
72+
the source file mode.
73+
* Bob gained an extended option to always checkout in Jenkins jobs.
74+
75+
The "scm.always-checkout" extended option has been added which defaults to
76+
"true". If enabled, checkout steps will always be executed. This knob is
77+
intended to increase the robustness and eagerly expose problems in recipes
78+
whose checkout is not fully stable. If the user wants to rely defer
79+
checkouts until necessary to speed up builds, the scm.always-checkout option
80+
can disabled manually. (:ref:`bob-jenkins-extended-options`)
81+
82+
83+
Improvements
84+
------------
85+
86+
* Better handling of git recipe changes when commit and branch are both
87+
specified. Unless the recipe is changed, Bob will not compare the
88+
current commit any more in existing checkouts. This makes sure that
89+
temporary changes during development do not fail the build.
90+
91+
If the recipe is changed, Bob now compares the configured commit just with
92+
with state of the workspace if the repository was already cloned. The check
93+
whether the commit is also on the branch is only done on the initial clone.
94+
This makes it easier for a developer to adapt the repository and the recipe
95+
without being forced to push the commit already upstream.
96+
97+
See :pull:`532`.
98+
* Made checkout behaviour more robust if ``checkoutSCM`` *and* a
99+
``checkoutScript``/``checkoutAssert`` is used. Specifically, if the workspace
100+
was changed since the last time, Bob now re-runs the checkout with the
101+
``checkoutScript``/``checkoutAssert``.
102+
103+
This fixes a problem on Jenkins builds when the checkoutScript modifies a git
104+
repository. This change will be squashed by the Jenkins git plugin every time
105+
the job runs. Now, if the script was marked deterministic, Bob still has to
106+
run it again to re-apply any modifications.
107+
108+
Another example are code generators that should probably be run again if the
109+
workspace has changed. In fact, if the script was enabled for checkout-only
110+
updates (:ref:`configuration-recipes-checkoutUpdateIf`), then such
111+
modifications would already trigger the re-run if the workspace was modified.
112+
* No empty build/dist workspaces are created any more in case of
113+
``--checkout-only`` builds.
114+
* The parallel build scheduling and audit step visibility has been improved.
115+
116+
If a checkout/build/package-script finishes, the whole step is not yet
117+
complete until the audit record has been created. Unfortunately, older
118+
versions ob Bob did schedule other steps before doing the final audit part.
119+
This had the unpleasant effect that, even though the script has finished,
120+
interrupting Bob at this stage leads to a full re-execution of the whole step
121+
later on. This has been rectified. See :issue:`539` for more details.
122+
* The URL SCM, if given a bare file name or ``file://`` url, now copies files
123+
atomically. Previously a partially copied file could have remained in the
124+
workspace if Bob was interrupted. The copy will now also retain the file
125+
modification time.
126+
* Some caching data structures in the binary artifact repository that defer
127+
checkouts until really necessary are now always updated. These caching data
128+
structures are prone to incorrect data e.g., if some checkout is not really
129+
deterministic (e.g. git influenced by global git config). The old behaviour
130+
was to never replace the files which sets the very first execution result
131+
into stone. If that was incorrect, there are no tools to purge the wrong
132+
cache except deleting the whole binary archive.
133+
134+
Now this checkout information is always updated. These files are small so
135+
there should be no performance impact.
136+
* The sandbox environment now provides a working pseudo tty environment. This
137+
is important when using tools like ``script``, ``screen`` or ``ssh`` inside
138+
a sandbox. (:issue:`554`)
139+
140+
Backwards incompatible changes
141+
------------------------------
142+
143+
* The default Jenkins build mode has been changed to "clean build". This should
144+
improve robustness at the expense of speed. If desired, incremental builds
145+
can be enabled explicitly. See the Jenkins :ref:`manpage-bob-jenkins-options`
146+
``--clean`` and ``--incremental``.
147+
148+
Bug fixes
149+
---------
150+
151+
* Fixed crash when invoking generators with the filter option (:pull:`525`)
152+
* Fixed crash on PowerShell fingerprint script (:issue:`527`)
153+
* Fixed PowerShell fingerprint script support. When the default language is
154+
set to PowerShell, any script without the language suffix should apply to
155+
PowerShell. Specifically, the ``fingerprintScript`` should be executed as
156+
PowerShell script if ``fingerprintScriptPwsh`` is not set. This was not
157+
working, though.
158+
* Fixed the ``bob-libc-version`` built-in fingerprint helper for current
159+
MSYS2 versions (:pull:`526`)
160+
* Made Bob more robust against package cache corruptions. A corrupt cache
161+
will be rebuilt instead of crashing. (:issue:`529`)
162+
* Fixed git SCM switch when going back to older revision. If gitCommitOnBranch
163+
is active and commit and branch are configured in the recipe changing the
164+
commit back to a older one did not update the sources back to the configured
165+
version. Instead they remained on the current version. (:pull:`531`)
166+
* Fixed inline git SCM switch if the ``references`` or ``dissociate`` property
167+
changes. (:pull:`537`)
168+
* Fixed crash in URL SCM if no extractor is installed e.g., if ``unzip`` is
169+
missing. (:pull:`538`)
170+
* Fixed ``$PATH`` handling in sandbox environments. When using a sandbox, the
171+
interpreter (bash or pwsh) must be found using the defined sandbox paths.
172+
Older versions of Bob relied on the host ``$PATH`` which is not correct and
173+
might not necessarily cover the installation path of bash/pwsh in the
174+
sandbox.
175+
* Removed hard coded path of ``rm`` in Bob generated wrapper scripts.
176+
* SCM switches are now more robust when moving between Bob versions. It
177+
could happen that SCMs are moved to the attic just because the initial
178+
checkout was done by an older version of Bob. This should not happen any more.
179+
* Some SCM attributes (e.g. ``retries``, ``recurseSubmodules``) previously
180+
would trigger moves to the attic. This has been rectified.

doc/releases/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ Bob Release Notes
1515
0.21
1616
0.22
1717
0.23
18+
0.24

0 commit comments

Comments
 (0)