Удаленная машина, на которой запущена JVM, должна опубликовать Git Commit Hash, развертывание выполнено с помощью Gradle. НЕ Android - PullRequest
0 голосов
/ 06 ноября 2018

Каждый ответ, который я нашел, относящийся к этой теме, был специально для Android.

То, что я смог сделать до сих пор, это после сборки - в файле build.gradle получите хэш Git Commit, а затем поместите его либо в файлы манифеста, либо в папку «Resources» внутри комплекта.

task create_gitCommit << {

    if (project.getName().equals("com.freewire.mobi.unitconfigurationimpl")) {

        String s = null;
        String temp = null;
        try {
            Runtime rt = Runtime.getRuntime();
            Process proc = rt.exec("git rev-parse --short HEAD");
            System.out.print("The following the output of the pwd command ")
            System.out.println(rt.exec("pwd"))
            System.out.println(System.getProperty("user.dir"))
            System.out.println(GroovySystem.version)

            BufferedReader stdInput = new BufferedReader(new
                    InputStreamReader(proc.getInputStream()));

            // read the output from the command
            System.out.println("Here is the standard output of the command:\n");
            if ((temp = stdInput.readLine()) != null) {
                s = temp;
                System.out.println(s);
                File file = new File("com.freewire.mobi.unitconfigurationimpl/src/main/resources/gitCommitHash.txt") {}
                file.createNewFile();
                file.write s
            }
        } catch (IOException e) {
            System.out.println("EXCEPTION CAUGHT, something is not going correct");
            System.out.println(e.toString());
        }
    }
}

Проблема в том, что после запуска кода на виртуальной машине я попытался получить доступ к пути к файлу, а затем опубликовать переменную. Но я не думаю, что файловая структура на удаленной машине такая же, как на моей локальной.

private String getGitTextFilePath() throws Exception {         
Resources.toString(Resources.getResource(fileContents), 
Charsets.UTF_8);
    ClassLoader classloader = 
Thread.currentThread().getContextClassLoader();
    InputStream is = 
classloader.getResourceAsStream("gitCommitHash.txt");
    InputStreamReader streamReader = new 
InputStreamReader(is, StandardCharsets.UTF_8);
    BufferedReader reader = new 
BufferedReader(streamReader);
    for (String line; (line = reader.readLine()) != null;) {
        System.out.println(line);
    }
    System.out.println(is.toString());
    LOG.info("GIT TEXT file path " + 
is.toString());
    return is.toString();
}



public String getGitCommitHash() throws Exception{

    String everything = "Fake";
    String path = getGitTextFilePath();
    LOG.info("Working Directory = " +
            System.getProperty("user.dir"));
    try{
        LOG.info("Inside Try 1");
        LOG.info(fileContents);
        BufferedReader br = new BufferedReader(new 
FileReader(path));
        LOG.info("Inside Try 2");
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();
        LOG.info("Inside Try 3");

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine();
        }
        everything = sb.toString();
        br.close();
        LOG.info("Inside the try: " + everything);
        return everything;

    }
    catch(IOException e){
        System.out.println("Something went wrong with trying 
to read the Git Commit Hash File :,)");
    }
    return everything;

Вариант 1 - выяснить, как узнать, что это за файловая структура, и собрать GitCommitHash, который я поместил в указанные папки.

Вариант 2 - есть ли способ получить Git Commit Hash удаленно? Это легко на моей машине, так как папка, в которой я работаю, когда сборка подключена к репо. Можно ли получить хеш коммита с удаленного компьютера внутри самого кода Java?.

tl; dr - в build.gradle я могу поместить Git Commit Hash в файл в нужном мне пакете. Либо в папке ресурсов, либо в файле манифеста. Это работает. Однако после развертывания кода на удаленном сервере https://www.eurotech.com/en/products/iot/multi-service-iot-edge-gateways/reliagate-20-25, я не знаю, как получить доступ к этому файлу. Как мне получить файловую структуру? Или я могу каким-то образом получить доступ к Git с удаленного сервера, используя Java для получения Git Commit Hash.

...