Registre los puntos de conocimiento y las notas de problemas utilizados por Jenkins.

Notificación del complemento DingTalk

La versión anterior de Jenkins era 2.264, y después de instalar el complemento dingdingtalk, no se puede mostrar normalmente en la configuración global. Esto debería deberse a la visualización incompleta de la interfaz GUI de Android. Se pueden usar la versión 2.263 y anteriores. Así que sólo puedo volver a esta versión y usarla normalmente.

Construcción programada automática

H 8 * * *: Compilación automática a las 8 en punto todos los días
Compilación una vez cada 2 horas: HH/2 * * *
inserte la descripción de la imagen aquí
Compilación periódica: la tarea compila periódicamente el proyecto, esto es para activar la tarea de compilación en el momento especificado (independientemente de los datos en SVN Ya sea que haya un cambio o no, se ejecuta una compilación cronometrada)

Encuesta SCM:
1. Encuesta SCM: verifique periódicamente los cambios en el código fuente (según el número de versión del software SCM), si hay una actualización, verifique el código más reciente y luego ejecute la acción de compilación (encueste SVN periódicamente para verificar si hay cualquier cambio de datos en SVN, si hay cambios, entonces ejecute la tarea de compilación)
2. Si quiero verificar los cambios del código fuente cada 5 minutos, ejecútelos si hay un cambio

Limpiar versiones históricas

inserte la descripción de la imagen aquí
Solo se conservan las últimas 10 compilaciones históricas para cada compilación, y las compilaciones históricas se guardan en el directorio de instalación de Jenkins en la unidad C de forma predeterminada.

Registre el proceso de empaquetado a través de Jenkins.

Anteriormente, el proceso de actualización de la versión de la empresa consistía en transferir la tabla primero, luego compilar y empaquetar ab, luego nombrar ab manualmente y luego cargarla manualmente en la CDN. Luego permita que el usuario acepte el incremento modificando la configuración de parámetros en línea. Por eso quiero automatizar los pasos para cargar Ab. El siguiente es el proceso de grabación:

  • La primera es la descripción del proceso de construcción,
    inserte la descripción de la imagen aquí
    Diagrama de parámetros de construcción específicos
nombre del parámetro Acción concreta
Ruta del proyecto Directorio de Ingeniería de Proyectos
excelCanal La lógica específica es ejecutar la herramienta de conversión de tablas. La lógica específica es utilizar de forma predeterminada el directorio de tablas en el directorio de nivel superior del directorio del proyecto. A continuación se encuentran todos los nombres de archivos que contienen los dos caracteres **<tabla de transferencia>* * y los devuelve en una matriz. El propósito Es decir, si la herramienta de transferencia de tabla multicanal es diferente, solo necesita desplegar y seleccionar la herramienta de transferencia de tabla correspondiente.
versión ab El número de versión del recurso ab, que controla la versión del nombre ab empaquetado.
Registro detallado Si se debe imprimir la salida del registro por unidad
esSubirAB Controle si es necesario cargar ab automáticamente en CDN, de modo que solo sea necesario imprimir ab fuera del paquete y no sea necesario cargarlo en CDN.
CDN_PATH [Cuenta]:[Contraseña]@[dirección IP]:[Puerto] /[directorio de almacenamiento AB] Ejemplo: cdnftp:cdnftp#[email protected]:6666/android/update Este parámetro depende de qué herramienta de carga se utiliza. La empresa usa FileZilla. Si usa la línea de comando para cargar, debe traer el formato como este.
esCopyCltSvrData Ya sea para copiar las habilidades del cliente, los niveles y los archivos DLL de batalla al servidor de batalla para su envío.

La lógica específica del parámetro ProjectPath es la siguiente:

def List = [];
List = ['D:/agame/trunk/android', 'D:/agame/jenkins_test/android'];
return List

La lógica específica del parámetro excelChannel es la siguiente:

File pathFile = new File(ProjectPath  + "/GameUnity/Build/path.bat");
def reg = ~/PRODUCT_DATA_PATH=(.*)"/
def path = ""

pathFile.text.eachLine({
    
    line->
    def matcher = reg.matcher(line);
    def result = matcher.find()

    if(result)
    {
    
    
        path = matcher.group(1)
    }
})

if(path == "")
{
    
    
     tmpPath = ProjectPath  + "/../data"
     File tmpDataDir = new File(tmpPath);
     if(tmpDataDir.exists())
          path = tmpPath;
      else
          return ["path.bat未配置PRODUCT_DATA_PATH"]
}

def dataPath = path
File dir = new File(dataPath);

def names = [];
def regExcel = ~/.*转表.*bat/

dir.eachFile({
    
    file-> 
    def matcher = regExcel.matcher(file.name);
    def result = matcher.find()
    if(result)
        //names << file.name;
        names << file.getName().split("\\.")[0]
});

return names

La línea de comando ejecutada por el proceso de compilación:

@echo OFF
@echo %ProjectPath%
%ProjectPath:~0,2%

set ext="/GameUnity/Build"
set build_path=%ProjectPath%%ext%

@echo %build_path%
cd %build_path%

call path.bat

python -u BuildJenkins.py
if %ERRORLEVEL% neq 0 exit

set buildType=0
REM echo packageType is:%packageType%
if "%packageType%"=="update" (
   set buildType=1
)

REM python -u BuildCore.py build %abVersion% %buildType%

if "%isCopyCltSvrData%"=="true" (
   python -u BuildCore.py copy_clt_svr_data
)

if "%isUploadAB%"=="true" (
   @echo 开始执行上传AB 
   cd uploadAB
   python -u UploadAb.py %abVersion%
)
  • La lógica específica ejecuta la lógica central de BuildCore.py en el directorio de compilación del proyecto.
  • Después de configurar Jenkin, solo necesita ingresar parámetros de acuerdo con las necesidades específicas para comenzar a construir. Desde empaquetar recursos ab hasta cargar ab, se puede automatizar.

Supongo que te gusta

Origin blog.csdn.net/a525324105/article/details/111032648
Recomendado
Clasificación