Bug 1160385 - Generate beetmover checksums r=jlund a=release DONTBUILD
MozReview-Commit-ID: 6FmsshqCHJA
--- a/testing/mozharness/configs/beetmover/en_us.yml.tmpl
+++ b/testing/mozharness/configs/beetmover/en_us.yml.tmpl
@@ -5,149 +5,149 @@ metadata:
owner: "release@mozilla.com"
mapping:
{% for locale in locales %}
# common deliverables
{{ locale }}:
complete_mar:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.complete.mar
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/update/{{ platform }}/{{ locale }}/firefox-{{ version }}.complete.mar
+ s3_key: {{ s3_prefix }}update/{{ platform }}/{{ locale }}/firefox-{{ version }}.complete.mar
checksum:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.checksums
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.checksums
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.checksums
checksum_sig:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.checksums.asc
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.checksums.asc
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.checksums.asc
buildinfo:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.json
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.json
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.json
mozinfo:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.mozinfo.json
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.mozinfo.json
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.mozinfo.json
socorroinfo:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.txt
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.txt
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.txt
jsshell:
artifact: {{ artifact_base_url }}/jsshell-{{ platform }}.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/jsshell-{{ platform }}.zip
+ s3_key: {{ s3_prefix }}jsshell-{{ platform }}.zip
mozharness_package:
artifact: {{ artifact_base_url }}/mozharness.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/mozharness.zip
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/mozharness.zip
xpi:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.langpack.xpi
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/xpi/{{ locale }}.xpi
+ s3_key: {{ s3_prefix }}{{ platform }}/xpi/{{ locale }}.xpi
{% if platform == "win32" %}
full_installer:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.installer.exe
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/Firefox Setup {{ version }}.exe
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/Firefox Setup {{ version }}.exe
stub_installer:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.installer-stub.exe
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/Firefox Setup Stub {{ version }}.exe
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/Firefox Setup Stub {{ version }}.exe
package:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.zip
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.zip
symbols:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.crashreporter-symbols.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.crashreporter-symbols.zip
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.crashreporter-symbols.zip
buildid_info:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}_info.txt
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/win32_info.txt
+ s3_key: {{ s3_prefix }}win32_info.txt
sdk:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.sdk.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/firefox-{{ version }}.{{ platform }}.sdk.zip
+ s3_key: {{ s3_prefix }}firefox-{{ version }}.{{ platform }}.sdk.zip
mar_tools_mar:
artifact: {{ artifact_base_url }}/mar.exe
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/mar-tools/win32/mar.exe
+ s3_key: {{ s3_prefix }}mar-tools/win32/mar.exe
mar_tools_mbdiff:
artifact: {{ artifact_base_url }}/mbsdiff.exe
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/mar-tools/win32/mbsdiff.exe
+ s3_key: {{ s3_prefix }}mar-tools/win32/mbsdiff.exe
{% endif %}
{% if platform == "win64" %}
full_installer:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.installer.exe
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/Firefox Setup {{ version }}.exe
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/Firefox Setup {{ version }}.exe
package:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.zip
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.zip
symbols:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.crashreporter-symbols.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.crashreporter-symbols.zip
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.crashreporter-symbols.zip
buildid_info:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}_info.txt
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/win64_info.txt
+ s3_key: {{ s3_prefix }}win64_info.txt
sdk:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.sdk.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/firefox-{{ version }}.{{ platform }}.sdk.zip
+ s3_key: {{ s3_prefix }}firefox-{{ version }}.{{ platform }}.sdk.zip
mar_tools_mar:
artifact: {{ artifact_base_url }}/mar.exe
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/mar-tools/win64/mar.exe
+ s3_key: {{ s3_prefix }}mar-tools/win64/mar.exe
mar_tools_mbdiff:
artifact: {{ artifact_base_url }}/mbsdiff.exe
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/mar-tools/win64/mbsdiff.exe
+ s3_key: {{ s3_prefix }}mar-tools/win64/mbsdiff.exe
{% endif %}
{% if platform == "linux-i686" %}
package:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.tar.bz2
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.tar.bz2
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.tar.bz2
symbols:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.crashreporter-symbols.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.crashreporter-symbols.zip
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.crashreporter-symbols.zip
buildid_info:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}_info.txt
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/linux_info.txt
+ s3_key: {{ s3_prefix }}linux_info.txt
sdk:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.sdk.tar.bz2
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/firefox-{{ version }}.{{ platform }}.sdk.tar.bz2
+ s3_key: {{ s3_prefix }}firefox-{{ version }}.{{ platform }}.sdk.tar.bz2
mar_tools_mar:
artifact: {{ artifact_base_url }}/mar
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/mar-tools/linux/mar
+ s3_key: {{ s3_prefix }}mar-tools/linux/mar
mar_tools_mbdiff:
artifact: {{ artifact_base_url }}/mbsdiff
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/mar-tools/linux/mbsdiff
+ s3_key: {{ s3_prefix }}mar-tools/linux/mbsdiff
{% endif %}
{% if platform == "linux-x86_64" %}
package:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.tar.bz2
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.tar.bz2
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.tar.bz2
symbols:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.crashreporter-symbols.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.crashreporter-symbols.zip
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.crashreporter-symbols.zip
buildid_info:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}_info.txt
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/linux64_info.txt
+ s3_key: {{ s3_prefix }}linux64_info.txt
sdk:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.sdk.tar.bz2
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/firefox-{{ version }}.{{ platform }}.sdk.tar.bz2
+ s3_key: {{ s3_prefix }}firefox-{{ version }}.{{ platform }}.sdk.tar.bz2
mar_tools_mar:
artifact: {{ artifact_base_url }}/mar
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/mar-tools/linux64/mar
+ s3_key: {{ s3_prefix }}mar-tools/linux64/mar
mar_tools_mbdiff:
artifact: {{ artifact_base_url }}/mbsdiff
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/mar-tools/linux64/mbsdiff
+ s3_key: {{ s3_prefix }}mar-tools/linux64/mbsdiff
{% endif %}
{% if platform == "mac" %}
package:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.dmg
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/Firefox {{ version }}.dmg
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/Firefox {{ version }}.dmg
symbols:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.crashreporter-symbols.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/Firefox {{ version }}.crashreporter-symbols.zip
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/Firefox {{ version }}.crashreporter-symbols.zip
buildid_info:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}_info.txt
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/macosx64_info.txt
+ s3_key: {{ s3_prefix }}macosx64_info.txt
sdk:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}-x86_64.sdk.tar.bz2
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/firefox-{{ version }}.{{ platform }}-x86_64.sdk.tar.bz2
+ s3_key: {{ s3_prefix }}firefox-{{ version }}.{{ platform }}-x86_64.sdk.tar.bz2
mar_tools_mar:
artifact: {{ artifact_base_url }}/mar
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/mar-tools/macosx64/mar
+ s3_key: {{ s3_prefix }}mar-tools/macosx64/mar
mar_tools_mbdiff:
artifact: {{ artifact_base_url }}/mbsdiff
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/mar-tools/macosx64/mbsdiff
+ s3_key: {{ s3_prefix }}mar-tools/macosx64/mbsdiff
{% endif %}
{% endfor %}
--- a/testing/mozharness/configs/beetmover/l10n_changesets.tmpl
+++ b/testing/mozharness/configs/beetmover/l10n_changesets.tmpl
@@ -3,9 +3,9 @@ metadata:
name: "Beet Mover L10N Changesets"
description: "Maps artifact locations to s3 key names for L10N changesets"
owner: "release@mozilla.com"
mapping:
all:
l10n_changesets:
artifact: {{ artifact_base_url }}/l10n_changesets.txt
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/l10n_changesets.txt
+ s3_key: {{ s3_prefix }}l10n_changesets.txt
--- a/testing/mozharness/configs/beetmover/partials.yml.tmpl
+++ b/testing/mozharness/configs/beetmover/partials.yml.tmpl
@@ -4,13 +4,13 @@ metadata:
description: "Maps artifact locations to s3 key names for partials"
owner: "release@mozilla.com"
mapping:
{% for locale in locales %}
{{ locale }}:
partial_mar:
artifact: {{ artifact_base_url }}/firefox-{{ partial_version }}-{{ version }}.{{ locale }}.{{ platform }}.partial.mar
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/update/{{ platform }}/{{ locale }}/firefox-{{ partial_version }}-{{ version }}.partial.mar
+ s3_key: {{ s3_prefix }}update/{{ platform }}/{{ locale }}/firefox-{{ partial_version }}-{{ version }}.partial.mar
partial_mar_sig:
artifact: {{ artifact_base_url }}/firefox-{{ partial_version }}-{{ version }}.{{ locale }}.{{ platform }}.partial.mar.asc
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/update/{{ platform }}/{{ locale }}/firefox-{{ partial_version }}-{{ version }}.partial.mar.asc
+ s3_key: {{ s3_prefix }}update/{{ platform }}/{{ locale }}/firefox-{{ partial_version }}-{{ version }}.partial.mar.asc
{% endfor %}
--- a/testing/mozharness/configs/beetmover/repacks.yml.tmpl
+++ b/testing/mozharness/configs/beetmover/repacks.yml.tmpl
@@ -5,59 +5,59 @@ metadata:
owner: "release@mozilla.com"
mapping:
{% for locale in locales %}
# common deliverables
{{ locale }}:
complete_mar:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.complete.mar
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/update/{{ platform }}/{{ locale }}/firefox-{{ version }}.complete.mar
+ s3_key: {{ s3_prefix }}update/{{ platform }}/{{ locale }}/firefox-{{ version }}.complete.mar
checksum:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.checksums
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.checksums
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.checksums
checksum_sig:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.checksums.asc
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.checksums.asc
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.checksums.asc
xpi:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.langpack.xpi
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/xpi/{{ locale }}.xpi
+ s3_key: {{ s3_prefix }}{{ platform }}/xpi/{{ locale }}.xpi
{% if platform == "win32" %}
full_installer:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.installer.exe
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/Firefox Setup {{ version }}.exe
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/Firefox Setup {{ version }}.exe
stub_installer:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.installer-stub.exe
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/Firefox Setup Stub {{ version }}.exe
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/Firefox Setup Stub {{ version }}.exe
package:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.zip
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.zip
{% endif %}
{% if platform == "win64" %}
full_installer:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.installer.exe
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/Firefox Setup {{ version }}.exe
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/Firefox Setup {{ version }}.exe
package:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.zip
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.zip
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.zip
{% endif %}
{% if platform == "linux-i686" %}
package:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.tar.bz2
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.tar.bz2
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.tar.bz2
{% endif %}
{% if platform == "linux-x86_64" %}
package:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.tar.bz2
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/firefox-{{ version }}.tar.bz2
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/firefox-{{ version }}.tar.bz2
{% endif %}
{% if platform == "mac" %}
package:
artifact: {{ artifact_base_url }}/firefox-{{ app_version }}.{{ locale }}.{{ platform }}.dmg
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/{{ platform }}/{{ locale }}/Firefox {{ version }}.dmg
+ s3_key: {{ s3_prefix }}{{ platform }}/{{ locale }}/Firefox {{ version }}.dmg
{% endif %}
{% endfor %}
--- a/testing/mozharness/configs/beetmover/source.yml.tmpl
+++ b/testing/mozharness/configs/beetmover/source.yml.tmpl
@@ -3,12 +3,12 @@ metadata:
name: "Beet Mover Manifest"
description: "Maps artifact locations to s3 key names for source bundles"
owner: "release@mozilla.com"
mapping:
all:
source_bundle:
artifact: {{ artifact_base_url }}/firefox-{{ version }}.bundle
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/source/firefox-{{ version }}.bundle
+ s3_key: {{ s3_prefix }}source/firefox-{{ version }}.bundle
source_tar:
artifact: {{ artifact_base_url }}/firefox-{{ version }}.source.tar.xz
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/source/firefox-{{ version }}.source.tar.xz
+ s3_key: {{ s3_prefix }}source/firefox-{{ version }}.source.tar.xz
--- a/testing/mozharness/configs/beetmover/source_checksums.yml.tmpl
+++ b/testing/mozharness/configs/beetmover/source_checksums.yml.tmpl
@@ -3,12 +3,12 @@ metadata:
name: "Beet Mover Manifest"
description: "Maps artifact locations to s3 key names for source bundle checksums"
owner: "release@mozilla.com"
mapping:
all:
source_checksum:
artifact: {{ artifact_base_url }}/firefox-{{ version }}.source.checksums
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/source/firefox-{{ version }}.source.checksums
+ s3_key: {{ s3_prefix }}source/firefox-{{ version }}.source.checksums
source_checksum_asc:
artifact: {{ artifact_base_url }}/firefox-{{ version }}.source.checksums.asc
- s3_key: {{ s3_prefix }}/{{ version }}-candidates/{{ build_num }}/source/firefox-{{ version }}.source.checksums.asc
+ s3_key: {{ s3_prefix }}source/firefox-{{ version }}.source.checksums.asc
--- a/testing/mozharness/scripts/release/beet_mover.py
+++ b/testing/mozharness/scripts/release/beet_mover.py
@@ -170,118 +170,132 @@ class BeetMover(BaseScript, VirtualenvMi
import jinja2
self.virtualenv_imports = {
'boto': boto,
'yaml': yaml,
'jinja2': jinja2,
}
self.log("activated virtualenv with the modules: {}".format(str(self.virtualenv_imports)))
+ def _get_template_vars(self):
+ return {
+ "platform": self.config['platform'],
+ "locales": self.config.get('locales'),
+ "version": self.config['version'],
+ "app_version": self.config.get('app_version', ''),
+ "partial_version": self.config.get('partial_version', ''),
+ "build_num": self.config['build_num'],
+ # keep the trailing slash
+ "s3_prefix": 'pub/{prod}/candidates/{ver}-candidates/{n}/'.format(
+ prod=self.config['product'], ver=self.config['version'],
+ n=self.config['build_num']
+ ),
+ "artifact_base_url": self.config['artifact_base_url'].format(
+ taskid=self.config['taskid'], subdir=self.config['artifact_subdir']
+ )
+ }
+
def generate_candidates_manifest(self):
"""
generates and outputs a manifest that maps expected Taskcluster artifact names
to release deliverable names
"""
self.log('generating manifest from {}...'.format(self.config['template']))
template_dir, template_file = os.path.split(os.path.abspath(self.config['template']))
jinja2 = self.virtualenv_imports['jinja2']
yaml = self.virtualenv_imports['yaml']
jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir),
undefined=jinja2.StrictUndefined)
template = jinja_env.get_template(template_file)
- template_vars = {
- "platform": self.config['platform'],
- "locales": self.config.get('locales'),
- "version": self.config['version'],
- "app_version": self.config.get('app_version', ''),
- "partial_version": self.config.get('partial_version', ''),
- "build_num": self.config['build_num'],
- # mirror current release folder structure
- "s3_prefix": 'pub/{}/candidates'.format(self.config['product']),
- "artifact_base_url": self.config['artifact_base_url'].format(
- taskid=self.config['taskid'], subdir=self.config['artifact_subdir']
- )
- }
- self.manifest = yaml.safe_load(template.render(**template_vars))
+ self.manifest = yaml.safe_load(template.render(**self._get_template_vars()))
self.log("manifest generated:")
self.log(pprint.pformat(self.manifest['mapping']))
def verify_bits(self):
"""
inspects each artifact and verifies that they were created by trustworthy tasks
"""
# TODO
self.log('skipping verification. unimplemented...')
def refresh_antivirus(self):
- self.info("Refreshing clamav db...")
- try:
- redo.retry(lambda:
- sh.freshclam("--stdout", "--verbose", _timeout=300, _err_to_out=True))
- self.info("Done.")
- except sh.ErrorReturnCode:
- self.warning("Freshclam failed, skipping DB update")
+ self.info("Refreshing clamav db...")
+ try:
+ redo.retry(lambda:
+ sh.freshclam("--stdout", "--verbose", _timeout=300,
+ _err_to_out=True))
+ self.info("Done.")
+ except sh.ErrorReturnCode:
+ self.warning("Freshclam failed, skipping DB update")
def download_bits(self):
"""
downloads list of artifacts to self.dest_dir dir based on a given manifest
"""
self.log('downloading and uploading artifacts to self_dest_dir...')
-
- # TODO - do we want to mirror/upload to more than one region?
dirs = self.query_abs_dirs()
for locale in self.manifest['mapping']:
for deliverable in self.manifest['mapping'][locale]:
self.log("downloading '{}' deliverable for '{}' locale".format(deliverable, locale))
- # download locally to working dir
- source=self.manifest['mapping'][locale][deliverable]['artifact']
- file_name = self.retry(self.download_file,
+ source = self.manifest['mapping'][locale][deliverable]['artifact']
+ self.retry(
+ self.download_file,
args=[source],
kwargs={'parent_dir': dirs['abs_work_dir']},
error_level=FATAL)
self.log('Success!')
+ def _strip_prefix(self, s3_key):
+ """Return file name relative to prefix"""
+ # "abc/def/hfg".split("abc/de")[-1] == "f/hfg"
+ return s3_key.split(self._get_template_vars()["s3_prefix"])[-1]
+
def upload_bits(self):
"""
uploads list of artifacts to s3 candidates dir based on a given manifest
"""
self.log('uploading artifacts to s3...')
dirs = self.query_abs_dirs()
# connect to s3
boto = self.virtualenv_imports['boto']
conn = boto.connect_s3(self.aws_key_id, self.aws_secret_key)
bucket = conn.get_bucket(self.bucket)
- #todo change so this is not every entry in manifest - should exclude those that don't pass virus sign
- #not sure how to determine this
for locale in self.manifest['mapping']:
for deliverable in self.manifest['mapping'][locale]:
self.log("uploading '{}' deliverable for '{}' locale".format(deliverable, locale))
- #we have already downloaded the files locally so we can use that version
+ # we have already downloaded the files locally so we can use that version
source = self.manifest['mapping'][locale][deliverable]['artifact']
+ s3_key = self.manifest['mapping'][locale][deliverable]['s3_key']
downloaded_file = os.path.join(dirs['abs_work_dir'], self.get_filename_from_url(source))
- self.upload_bit(
- source=downloaded_file,
- s3_key=self.manifest['mapping'][locale][deliverable]['s3_key'],
- bucket=bucket,
+ # generate checksums for every uploaded file
+ beet_file_name = '{}.beet'.format(downloaded_file)
+ # upload checksums to a separate subdirectory
+ beet_dest = '{prefix}beetmover-checksums/{f}.beet'.format(
+ prefix=self._get_template_vars()["s3_prefix"],
+ f=self._strip_prefix(s3_key)
)
+ beet_contents = '{hash} sha512 {size} {name}\n'.format(
+ hash=self.file_sha512sum(downloaded_file),
+ size=os.path.getsize(downloaded_file),
+ name=self._strip_prefix(s3_key))
+ self.write_to_file(beet_file_name, beet_contents)
+ self.upload_bit(source=downloaded_file, s3_key=s3_key,
+ bucket=bucket)
+ self.upload_bit(source=beet_file_name, s3_key=beet_dest,
+ bucket=bucket)
self.log('Success!')
def upload_bit(self, source, s3_key, bucket):
- # TODO - do we want to mirror/upload to more than one region?
- dirs = self.query_abs_dirs()
boto = self.virtualenv_imports['boto']
-
- #todo need to copy from dir to s3
-
self.info('uploading to s3 with key: {}'.format(s3_key))
key = boto.s3.key.Key(bucket) # create new key
key.key = s3_key # set key name
self.info("Checking if `{}` already exists".format(s3_key))
key = bucket.get_key(s3_key)
if not key:
self.info("Uploading to `{}`".format(s3_key))
--- a/testing/mozharness/scripts/release/generate-checksums.py
+++ b/testing/mozharness/scripts/release/generate-checksums.py
@@ -118,38 +118,38 @@ class ChecksumsGenerator(BaseScript, Vir
# These defaults are set here rather in the config because default
# lists cannot be completely overidden, only appended to.
if not self.config.get("formats"):
self.config["formats"] = ["sha512"]
if not self.config.get("includes"):
self.config["includes"] = [
- "^.*\.tar\.bz2$",
- "^.*\.tar\.xz$",
- "^.*\.dmg$",
- "^.*\.bundle$",
- "^.*\.mar$",
- "^.*Setup.*\.exe$",
- "^.*\.xpi$",
+ r"^.*\.tar\.bz2$",
+ r"^.*\.tar\.xz$",
+ r"^.*\.dmg$",
+ r"^.*\.bundle$",
+ r"^.*\.mar$",
+ r"^.*Setup.*\.exe$",
+ r"^.*\.xpi$",
]
def _get_bucket_name(self):
if self.config.get('bucket_name_full'):
return self.config['bucket_name_full']
suffix = "archive"
# Firefox has a special bucket, per https://github.com/mozilla-services/product-delivery-tools/blob/master/bucketmap.go
if self.config["stage_product"] == "firefox":
suffix = "firefox"
return "{}-{}".format(self.config["bucket_name_prefix"], suffix)
def _get_file_prefix(self):
- return "pub/{}/candidates/{}-candidates/build{}".format(
+ return "pub/{}/candidates/{}-candidates/build{}/".format(
self.config["stage_product"], self.config["version"], self.config["build_number"]
)
def _get_sums_filename(self, format_):
return "{}SUMS".format(format_.upper())
def _get_bucket(self):
if not self.bucket:
@@ -176,22 +176,32 @@ class ChecksumsGenerator(BaseScript, Vir
self.debug("Downloading {}".format(item))
# TODO: It would be nice to download the associated .asc file
# and verify against it.
sums = bucket.get_key(item).get_contents_as_string()
raw_checksums.append(sums)
def find_checksums_files():
self.info("Getting key names from bucket")
+ checksum_files = {"beets": [], "checksums": []}
for key in bucket.list(prefix=self.file_prefix):
if key.key.endswith(".checksums"):
self.debug("Found checksums file: {}".format(key.key))
- yield key.key
+ checksum_files["checksums"].append(key.key)
+ elif key.key.endswith(".beet"):
+ self.debug("Found beet file: {}".format(key.key))
+ checksum_files["beets"].append(key.key)
else:
self.debug("Ignoring non-checksums file: {}".format(key.key))
+ if checksum_files["beets"]:
+ self.log("Using beet format")
+ return checksum_files["beets"]
+ else:
+ self.log("Using checksums format")
+ return checksum_files["checksums"]
pool = ThreadPool(self.config["parallelization"])
pool.map(worker, find_checksums_files())
for c in raw_checksums:
for f, info in parse_checksums_file(c).iteritems():
for pattern in self.config["includes"]:
if re.search(pattern, f):
--- a/testing/mozharness/scripts/release/push-candidate-to-releases.py
+++ b/testing/mozharness/scripts/release/push-candidate-to-releases.py
@@ -100,17 +100,18 @@ class ReleasePusher(BaseScript, Virtuale
r"^.*/partner-repacks.*$",
r"^.*.checksums(\.asc)?$",
r"^.*/logs/.*$",
r"^.*/jsshell.*$",
r"^.*json$",
r"^.*/host.*$",
r"^.*/mar-tools/.*$",
r"^.*robocop.apk$",
- r"^.*contrib.*"
+ r"^.*contrib.*",
+ r"^.*/beetmover-checksums/.*$",
]
def _get_candidates_prefix(self):
return "pub/{}/candidates/{}-candidates/build{}/".format(
self.config['product'],
self.config["version"],
self.config["build_number"]
)