Tristan Cacqueray 2f7ffba18d Update the set-zuul-log-path-fact scheme to prevent huge url
This change simplifies the path creation logic to avoid processing
user defined variables such as job name and pipeline name, which
might cause the log url to exceed the database storage presently
fixed at 255 char.

Add warning in the job's header when the url is over 255 characters,
explaining that Zuul won't report the job properly in its database;
but the job can still run.

Change-Id: I34fb5662a2f958c55f60458ce107bad2a73b9c96
2025-03-19 18:34:58 +00:00

68 lines
2.1 KiB
ReStructuredText

Upload logs to S3
Before using this role, create at least one bucket and set up
appropriate access controls or lifecycle events. This role will not
automatically create buckets.
This role requires the ``boto3`` Python package to be
installed in the Ansible environment on the Zuul executor.
**Role Variables**
.. zuul:rolevar:: zuul_site_upload_logs
:default: true
Controls when logs are uploaded. true, the default, means always
upload logs. false means never upload logs. 'failure' means to only
upload logs when the job has failed.
.. note:: Intended to be set by admins via site-variables.
.. zuul:rolevar:: zuul_log_partition
:default: false
If set to true, then the first component of the log path will be
removed from the object name and added to the bucket name, so that
logs for different changes are distributed across a large number of
buckets.
.. zuul:rolevar:: zuul_log_bucket
This role *will not* create buckets which do not already exist. If
partitioning is not enabled, this is the name of the bucket which
will be used. If partitioning is enabled, then this will be used
as the prefix for the bucket name which will be separated from the
partition name by an underscore. For example, "logs_42" would be
the bucket name for partition 42.
Note that you will want to set this to a value that uniquely
identifies your Zuul installation.
.. zuul:rolevar:: zuul_log_bucket_public
:default: true
Set to false to make logs private.
.. zuul:rolevar:: zuul_log_path
:default: Generated by the role `set-zuul-log-path-fact`
Prepend this path to the object names when uploading.
.. zuul:rolevar:: zuul_log_create_indexes
:default: true
Whether to create `index.html` files with directory indexes.
.. zuul:rolevar:: zuul_log_aws_access_key
AWS access key to use.
.. zuul:rolevar:: zuul_log_aws_secret_key
AWS secret key for the AWS access key.
.. zuul:rolevar:: upload_logs_s3_endpoint
The endpoint to use when uploading logs to an s3 compatible service.
By default this will be automatically constructed by boto but should be set when working with non-aws hosted s3 service.