[gnome-ostree] smoketest: Tag repo with /smoketested/ after completion



commit 60feeee85c55b74da61e2ff92c256dc25aa9a0bc
Author: Colin Walters <walters verbum org>
Date:   Sat Apr 20 20:45:26 2013 -0400

    smoketest: Tag repo with /smoketested/ after completion
    
    This is the treeset that most people should follow, unless one wants
    to debug why a smoketest is failing.

 src/js/tasks/task-builddisks.js |  3 +++
 src/js/tasks/task-smoketest.js  | 22 ++++++++++++++++++++++
 2 files changed, 25 insertions(+)
---
diff --git a/src/js/tasks/task-builddisks.js b/src/js/tasks/task-builddisks.js
index db50bfd..a992b6c 100644
--- a/src/js/tasks/task-builddisks.js
+++ b/src/js/tasks/task-builddisks.js
@@ -73,6 +73,9 @@ const TaskBuildDisks = new Lang.Class({
         let workImageDir = subworkdir.get_child('images');
         GSystem.file_ensure_directory(workImageDir, true, cancellable);
 
+        let destPath = workImageDir.get_child('build-' + buildVersion + '.json');
+        GSystem.file_linkcopy(latestPath, destPath, Gio.FileCopyFlags.ALL_METADATA, cancellable);
+
         let targets = buildData['targets'];
 
         let osname = buildData['snapshot']['osname'];
diff --git a/src/js/tasks/task-smoketest.js b/src/js/tasks/task-smoketest.js
index 4e9e82a..b65c43d 100644
--- a/src/js/tasks/task-smoketest.js
+++ b/src/js/tasks/task-smoketest.js
@@ -29,6 +29,7 @@ const ProcUtil = imports.procutil;
 const Task = imports.task;
 const LibQA = imports.libqa;
 const JSUtil = imports.jsutil;
+const JSONUtil = imports.jsonutil;
 
 const TIMEOUT_SECONDS = 10 * 60;
 const COMPLETE_IDLE_WAIT_SECONDS = 10;
@@ -325,8 +326,13 @@ const TaskSmoketest = new Lang.Class({
         let e = currentImages.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,
                                                  cancellable);
         let info;
+        let buildJson;
         while ((info = e.next_file(cancellable)) != null) {
             let name = info.get_name();
+            if (name.indexOf('build-') == 0 && JSUtil.stringEndswith(name, '.json')) {
+                buildJson = e.get_child(info);
+                continue;
+            }
             if (!JSUtil.stringEndswith(name, '.qcow2'))
                 continue;
             let workdirName = 'work-' + name.replace(/\.qcow2$/, '');
@@ -335,5 +341,21 @@ const TaskSmoketest = new Lang.Class({
             let smokeTest = new SmoketestOne();
             smokeTest.execute(subworkdir, currentImages.get_child(name), cancellable);
         }
+        if (buildJson != null) {
+            let buildData = JSONUtil.loadJson(buildJson, cancellable);
+            let refData = '';
+            let snapshot = buildData['snapshot'];
+            for (let targetName in buildData['targets']) {
+                let targetRev = buildData['targets'][targetName];
+                let lastSlash = targetName.lastIndexOf('/');
+                let smoketestedRef = snapshot['osname'] + '/smoketested' + targetName.substr(lastSlash);
+                refData += smoketestedRef + ' ' + targetRev + '\n';
+            }
+            ProcUtil.runProcWithInputSyncGetLines(['ostree', '--repo=' + this.repo.get_path(),
+                                                   'write-refs'], cancellable, refData);
+            print("Wrote refs: " + refData);
+        } else {
+            print("No build json found, not tagging");
+        }
     }
 });


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]