Browse Source

Se agregaron las keys de bitbucket y gogs

Se modifico el .drone para pasar a gogs los branchs y tag cuando se versiona

Se agrego el comando encargado de versionar y tagear los vendors
gabriel 7 years ago
parent
commit
e7f1f795ef

+ 23 - 2
.drone.yml

@@ -6,8 +6,6 @@ services:
     privileged: true
     command: [ "--storage-driver=vfs", "--tls=false" ]
 
-
-
 pipeline:
   docker_installer:
    environment:
@@ -25,6 +23,29 @@ pipeline:
    when:
     event: [push]
 
+  installer_branch:
+    image: docker.infra.flowdat.com/fd3/sf-php:latest
+    commands:
+      - chmod 0600 keys/*
+      - eval $(ssh-agent); ssh-add keys/gogs.drone.id_rsa
+      - cd tools
+      - composer install --no-interaction --no-progress
+      - php cmd.php make:tag:vendors repositories.ini ${DRONE_BRANCH} --branch=true
+    when:
+       event: [ push ]
+       branch: v*
+
+  installer_tag:
+    image: docker.infra.flowdat.com/fd3/sf-php:latest
+    commands:
+      - chmod 0600 keys/*
+      - eval $(ssh-agent); ssh-add keys/gogs.drone.id_rsa
+      - cd tools
+      - composer install --no-interaction --no-progress
+      - php cmd.php make:tag:vendors repositories.ini ${DRONE_TAG}
+    when:
+       event: [ tag ]
+
   #build:
   #  image: debian:9.0
   #  commands:

+ 27 - 0
keys/bitbucket.id_rsa

@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAsCo4Xa/fLaryiZt6igRK1IPNJsKeDLWBN6CWrv3TQ2iMcwE1
+zhTTX115N+KngVN8p1v5VrSMHKpvyXQDZPG/FJnWm5ry75qSYTmEtY8nfRsGAbwT
+i4swY+4jqrH1RRjbuVMsXPGjFX34SZTTJEl8ouVAFy/7HR+ODUe2+enWVnaouhVs
+Xj+bW2u7/dV1kZctFa5g5iV3hqGH32dBME5ztg4Fh7fAxkRTiJl+NBI7/LIdv9dl
+qmtDAdNdRqaI1dBpy8sHyZhRfjPeVbhdKsjE5IBhDLlYzyxK5FC41us08VCdq+M1
+1qVzIVM61PBosW5NfwlrRgLDPEXkazUdhJO6YwIDAQABAoIBAFEf4D0klH4PTwmX
+k+Ki/2LGH19OGEJ6Azt+tGV5diSArMz5LbHtXTl5bi0SL1ka/TiE3lnTYwKAamI3
+DqkZuojeHzohLOayI96qAjcp6WFvZGDAH7APNQWP0NT2hqB/RhAeATv7+sIW9JPN
++T2oqcDKGa2T5uwOb/glolmMGaxOzNfAFAgnD7p7cnR0yijW5t3bc4q0sOFu/H3N
+jYsAqvMu6Nkpt9hjlu42x5Muwj9YeKwpZoE1sno62JeQFZo7nO7DrOrE7DOENoWV
+PMDxs8Hz0SRQlZcJn2I/W9wX8A8gCAWGhbAtUGQkS8gCaMp0dOcxoV3EttriQgtU
+X1oUwIECgYEA2Vge4E8E53BzLGTk8sozn1qteYn3cLGgJgC78MEzZN/G57DxVbC9
+ntlSlYaYLlaPlSlNzZyG0s3UhpPY7YgP9srpohfPyXvb0ycfsGYMOcRNjVwdi2ap
+dPiG+p9vLSG3raNoeTxDEtjFZz1EM1rQECx2N40JwIuzeM2g+kE0JjMCgYEAz38r
+NTs1wASG7Bc7geIDxb34PWM8Nnw/DN57ceJP+Miwq/hYAJg6eK57ar9n44Y3xf7a
+mHkkgBU1vzuIyYfC5jVut6XkbialLsJUHfCNi3fPDBR7sEy6soiN34GoGp2vnCVD
+pDf2aCSMeFGfgwe4imFHbqE0R87cnet+q+CjCxECgYA8EbfO5OgFEzYxwdzpIWtt
+EoG5gqEpu134wuEupCcRLSvrIyNAPK3btlK10tJClFfwsM65EhbNMmgXncspsx4+
+Zkx2KUCbfij+TeTbOwkL+i448ImV2pThKEMeB2yRu6zpR617PGWJUvIUG4G689Fn
+dvJhXhCg77t1mtdv8w93swKBgQCIxor0y9LigBlwBuBy/Uj/T/oSfRdz0vK8yOsW
+ZtfQZnoO4eUgfzgL1PgFpaYVlKOvIA938mLdCx4isFu6fIM8vHv/EptBALhh2jcY
+hTjIdnFExTvDOtDWXq0mZ5En+kmH5Ahyd3E1tOHjbep3tN8wWG99vUV5ECLc9h7J
+rYnMAQKBgQDQ/JiBT7ygfzAblxPnq5Dnr52C3CFTE57GNA8FIEx+On6FdtVDRM0g
+cNjoc2e+2MfbaJXFAuMvXDvzb2qxrHgf2TosxeuPTg79iYOfWMU8G62i/v0wPr1M
+0Cj2hszJg4H0dMQPS0kDmO6mZmt6FB4E2gItmeBlTGfMwdJpaQC4rw==
+-----END RSA PRIVATE KEY-----

+ 1 - 0
keys/bitbucket.id_rsa.pub

@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwKjhdr98tqvKJm3qKBErUg80mwp4MtYE3oJau/dNDaIxzATXOFNNfXXk34qeBU3ynW/lWtIwcqm/JdANk8b8UmdabmvLvmpJhOYS1jyd9GwYBvBOLizBj7iOqsfVFGNu5Uyxc8aMVffhJlNMkSXyi5UAXL/sdH44NR7b56dZWdqi6FWxeP5tba7v91XWRly0VrmDmJXeGoYffZ0EwTnO2DgWHt8DGRFOImX40Ejv8sh2/12Wqa0MB011GpojV0GnLywfJmFF+M95VuF0qyMTkgGEMuVjPLErkULjW6zTxUJ2r4zXWpXMhUzrU8Gixbk1/CWtGAsM8ReRrNR2Ek7pj flowdat@bitbucket

+ 51 - 0
keys/gogs.drone.id_rsa

@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+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
+-----END RSA PRIVATE KEY-----

File diff suppressed because it is too large
+ 1 - 0
keys/gogs.drone.id_rsa.pub


+ 1 - 0
tools/cmd.php

@@ -19,5 +19,6 @@ $app->add(new FD3\Command\MakeVersionCommand());
 $app->add(new FD3\Command\MakeSubversionCommand());
 $app->add(new FD3\ImportClient());
 $app->add(new FD3\Command\ImportONUCommand());
+$app->add(new FD3\Command\TagVendorsCommand());
 
 $app->run();

+ 71 - 0
tools/repositories.ini

@@ -0,0 +1,71 @@
+[pruebatag]
+repo = "ssh://git@bitbucket.org/ikflowdat/pruebatag.git"
+
+;[auditbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/auditbundle.git"
+;
+;[authbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/authbundle.git"
+;
+;[baseadmin]
+;repo = "ssh://git@bitbucket.org/ikflowdat/baseadmin.git"
+;
+;[baseoauthclientbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/baseoauthclientbundle.git"
+;
+;[baseoauthserverbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/baseoauthserverbundle.git"
+;
+;[basestatsbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/basestatsbundle.git"
+;
+;[devicebundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/devicebundle.git"
+;
+;[extradatabundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/extradatabundle.git"
+;
+;[fiberhomebundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/fiberhomebundle.git"
+;
+;[fiberlinkbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/fiberlinkbundle.git"
+;
+;[geoserverbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/geoserverbundle.git"
+;
+;[huaweibundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/huaweibundle.git"
+;
+;[leafletbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/leafletbundle.git"
+;
+;[mapbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/mapbundle.git"
+;
+;[migrations]
+;repo = "ssh://git@bitbucket.org/ikflowdat/migrations.git"
+;
+;[nasbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/nasbundle.git"
+;
+;[ownervoter]
+;repo = "ssh://git@bitbucket.org/ikflowdat/ownervoter.git"
+;
+;[redisbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/redisbundle.git"
+;
+;[statsdbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/statsdbundle.git"
+;
+;[templatebundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/templatebundle.git"
+;
+;[webservice]
+;repo = "ssh://git@bitbucket.org/ikflowdat/webservice.git"
+;
+;[workflowbundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/workflowbundle.git"
+;
+;[ztebundle]
+;repo = "ssh://git@bitbucket.org/ikflowdat/ztebundle.git"

+ 110 - 0
tools/src/Command/TagVendorsCommand.php

@@ -0,0 +1,110 @@
+<?php
+
+namespace FD3\Command;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+
+use PHPGit\Git;
+use PHPGit\Exception\GitException;
+
+use WriteiniFile\WriteiniFile;
+
+class TagVendorsCommand extends Command
+{
+    protected function configure()
+    {
+        $this
+            ->setName('make:tag:vendors')
+            ->setDescription('Tags all vendor from bitbucket')
+            ->setHelp('Tag all vendors from bitbucket')
+            ->addArgument('ini_file', InputArgument::REQUIRED,
+                'The ini file from where to get the source code config.')
+            ->addArgument('tag', InputArgument::REQUIRED, 'Create tag e.g. vX.Y.Z and branch X.Y')
+            ->addOption('branch', null, InputOption::VALUE_OPTIONAL,
+                'Indicates if push branch or tag. If true, then push branch, else push tag', false);
+    }
+
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        $file = $input->getArgument("ini_file");
+        $tag = $input->getArgument("tag");
+        $optionBranch = $input->getOption('branch');
+        if (strtolower(substr($tag, 0, 1)) == 'v') {
+            $version = explode(".", $tag);
+            if (count($version) == 3) {
+                unset($version[count($version) - 1]);
+            }
+            $version = implode(".", $version);
+
+            $realpath = realpath($file);
+            $dirname = dirname($realpath);
+            if (!chdir($dirname)) {
+                throw new \Exception("Can't change working directory to " . $dirname);
+            }
+
+            $content = parse_ini_file($realpath, true);
+            foreach ($content as $sec => $conf) {
+                $output->writeln($sec . " - " . $content[$sec]["branch"] . " - " . $version . " - " . $tag . " - " . $content[$sec]["repo"]);
+                $content[$sec]["branch"] = $version;
+                try {
+                    $git = new Git();
+                    $git_path = $dirname . '/' . $sec;
+                    // agrego datos del usuario
+                    $git->config->add('user.email', 'drone@flowdat.com', ["global" => true]);
+                    $git->config->add('user.name', 'drone', ["global" => true]);
+                    // clono el repositorio
+                    $git->clone($content[$sec]["repo"], $git_path);
+                    // agrego el path del repositorio
+                    $git->setRepository($git_path);
+                    $git->fetch('origin');
+                    // comando a ejecutar
+                    $cmd = "cd " . $git_path . "; git push origin ";
+                    // necesito traer todos los branch's para ver si ya existe
+                    $branchs = $git->branch(['all' => true]);
+                    $findBranch = false;
+                    $branchRemote = null;
+                    // verifico si el branch a crear ya existe
+                    foreach ($branchs as $branch) {
+                        if (strpos($branch['name'], $version) !== false) {
+                            $findBranch = true;
+                            $branchRemote = $branch['name'];
+                            break;
+                        }
+                    }
+                    if (!$findBranch && $optionBranch) {
+                        // si no existe el branch y estoy creando un branch nuevo
+                        $git->branch->create($version);
+                        $cmd .= "$version ";
+                    }
+                    $git->checkout($version);
+                    if (!$optionBranch) {
+                        // estoy creando un tag
+                        $tags = $git->tag();
+                        if (!in_array($tag, $tags)) {
+                            // el tag no existe
+                            if ($branchRemote == null) {
+                                // el branch remote no existe
+                                $git->tag->create($tag, $version);
+                            } else {
+                                // utilizo el branch remoto
+                                $git->tag->create($tag, $branchRemote);
+                            }
+                        }
+                        $cmd .= " --tags";
+                    }
+                    // ejecuto el comando git
+                    shell_exec($cmd);
+                } catch (GitException $e) {
+                    $output->writeln($e->getTraceAsString());
+                    $output->writeln($sec . ": " . $e->getMessage());
+                    return $e->getCode();
+                }
+            }
+        }
+        return 0;
+    }
+}