Atualizando uma tarefa

É possível fazer alterações em uma tarefa definida e executar a tarefa atualizada a partir do console ou da CLI. Alterações feitas em sua tarefa podem incluir a atualização da imagem do contêiner de código, argumentos de código ou comandos, recursos de instância de tempo de execução ou variáveis de ambiente.

Sempre que sua tarefa é executada, a versão mais recente de sua imagem de contêiner referenciada é usada para a execução da tarefa, a menos que uma tag seja especificada para a imagem. Se uma tag for especificada para a imagem, a imagem marcada será usada para a execução da tarefa.

As tarefas em lote enviadas serão executadas em paralelo, se possível. Se o número ou o tamanho das tarefas submetidas excede os limites de cotas configuradas, como o número máximo de instâncias em execução, então, as Code Engine as tarefas entram na fila e sua execução será atrasada até que tarefas suficientes sejam concluídas. Para obter mais informações sobre cotas e limites de tarefas, incluindo memória e CPU, consulte Limites e cotas para Code Engine.

É possível atualizar sua tarefa e seu código referenciado de qualquer uma das maneiras a seguir, independentemente de como você criou ou atualizou previamente a sua tarefa.

  • Se você tiver uma imagem de contêiner, de acordo com o padrão da Open Container Initiative(OCI), basta fornecer apenas uma referência à imagem, que aponte para o local do seu registro de contêineres ao criar (ou atualizar) sua tarefa. Você pode criar (ou atualizar) seu trabalho a partir de imagens em um registro público ou privado e, em seguida, acessar a imagem referenciada durante a execução do seu trabalho.

    Se você criou o seu job usando o comando job create e especificou a opção --build-source para construir a imagem do container a partir de origem local ou repositório, e deseja alterar o seu job para apontar para uma imagem de container diferente, deve-se primeiro remover a associação da construção a partir do seu job. Por exemplo, execute ibmcloud ce job update -n JOB_NAME --build-clear. Depois de remover a associação da construção a partir do seu trabalho, você pode atualizar o trabalho para referencia uma imagem diferente.

  • Se você está começando com código-fonte que reside em um repositório Git, é possível optar por deixar que o Code Engine cuide da construção da imagem por meio de sua origem e implemente (ou atualize) o app com uma operação única. Neste cenário, o Code Engine faz upload da sua imagem para o IBM Cloud® Container Registry. Para saber mais, consulte Criando uma tarefa por meio do código-fonte do repositório. Se você quiser mais controle sobre a construção da sua imagem, poderá optar por construir a imagem com o Code Engine antes de criar (ou atualizar) sua tarefa e executá-la.

  • Se você está começando com código-fonte que reside em uma estação de trabalho local, é possível optar por deixar que o Code Engine cuide da construção da imagem por meio de sua origem e da criação da tarefa com um comando da CLI único. Neste cenário, o Code Engine faz upload da sua imagem para o IBM Cloud® Container Registry. Para saber mais, consulte Criando sua tarefa por meio do código-fonte local com a CLI. Se você quiser mais controle sobre a construção da sua imagem, poderá optar por construir a imagem com o Code Engine antes de criar (ou atualizar) sua tarefa e executá-la.

Por exemplo, você pode optar por deixar que o Code Engine cuide da construção de sua origem local enquanto você cuida do desenvolvimento de sua origem para a tarefa. Em seguida, após o amadurecimento da imagem, é possível atualizar a tarefa para referenciar a imagem específica que desejar. É possível repetir esse processo conforme necessário.

Ao executar sua tarefa atualizada, a versão mais recente de sua imagem de contêiner referenciada é usada para a execução da tarefa, a menos que uma tag seja especificada para a imagem. Se uma tag for especificada para a imagem, a imagem marcada será usada para a execução da tarefa.

Como atualizar uma tarefa a partir do console

Quando uma tarefa está em estado pronto, é possível atualizá-la. Vamos atualizar o trabalho myjob que você criou anteriormente para alterar a saudação e a saída das variáveis de ambiente, atualizando uma variável de ambiente. Quando uma solicitação é enviada a este trabalho de exemplo icr.io/codeengine/helloworld, o trabalho lê a variável de ambiente TARGET e exibe "Hello ${TARGET}!". Se essa variável de ambiente estiver vazia, é retornado o valor “ "Hello World!" ”. Para obter mais informações sobre o código usado neste exemplo, consulte helloworld.

  1. Navegue para a sua página de tarefa.

    1. Na página “Projetos” do Code Engine, clique no nome do seu projeto.
    2. Clique em “Trabalhos” e, em seguida, clique na guia “Trabalhos ”.
    3. Clique no nome da tarefa que você deseja atualizar.
  2. Na guia Configuração > Variáveis de ambiente, clique em Adicionar variável de ambiente. Inclua uma variável de ambiente literal com o nome de TARGET com o valor Sunshine. O icr.io/codeengine/helloworld emite como saída a mensagem, Hello <value_of_TARGET>!>.

  3. Clique em “Adicionar” para adicionar sua variável de ambiente.

  4. Clique em Implementar.

  5. Clique em Enviar tarefa.

  6. A partir da área de janela Enviar tarefa, desta vez altere o valor da CPU para uma das opções de CPU válidas para a memória especificada. Observe que você deve usar combinações válidas de memória e CPU. Clique em Enviar tarefa novamente para executar esta tarefa. O sistema exibe o status da sua tarefa na página Detalhes da tarefa. Observe o valor da CPU atualizado na seção Configuration dos detalhes da tarefa.

  7. Ao visualizar logs da tarefa por meio do console para essa tarefa, a saída da tarefa atualizada é Hello Sunshine!.

Atualizar uma tarefa na CLI

Com a CLI, é possível atualizar uma configuração de tarefas existente ou especificar as alterações feitas em uma nova execução de tarefa.

Atualizando uma configuração de tarefas na CLI

É possível atualizar uma configuração de tarefa existente com o comando ibmcloud ce job update.

  1. Use o comando job update para atualizar a tarefa myjob para fazer referência a uma imagem diferente.

    ibmcloud ce job update --name myjob --image icr.io/codeengine/testjob
    

    Execute o comando ibmcloud ce job get -n myjob para exibir detalhes da tarefa atualizada.

    Saída de exemplo

    Name:          myjob
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-04T11:56:22-04:00
    Last Job Run:
        Name:     myjob-jobrun-abcde
        Age:      32d
        Created:  2021-08-06T13:50:02-04:00
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:     1
        Memory:  4G
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    [...]
    
  2. Execute o comando ibmcloud ce jobrun submit para executar uma tarefa que faz referência a esta configuração de tarefa atualizada. Para o comando jobrun submit, use a opção --job para fazer referência a uma configuração de tarefa definida. Enquanto a opção --name não é obrigatória se a opção --job for especificada, o comando exemplo a seguir especifica a opção --name para fornecer um nome para esta execução de tarefa.

    ibmcloud ce jobrun submit --name myjobrun1 --job myjob
    
  3. Execute ibmcloud ce jobrun get -n myjobrun1 para visualizar os detalhes desta execução de tarefa. Observe que a imagem referenciada é icr.io/codeengine/testjob, que é baseada na configuração de tarefas atualizada.

    Saída de exemplo

    Getting jobrun 'myjobrun1'...
    Getting instances of jobrun 'myjobrun1'...
    Getting events of jobrun 'myjobrun1'...
    [...]
    Name:          myjobrun1
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-15T11:56:22-04:00
    Job Ref:              myjob
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        JOP_ARRAY_SIZE Value:  1
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          11s
        Instance Statuses:
            Succeeded:  1
        Conditions:
            Type      Status  Last Probe  Last Transition
        Pending   True    15s         15s
        Running   True    11s         11s
        Complete  True    11s         11s
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    16s (x3 over 20s)  batch-job-controller  Updated JobRun "myjobrun1"
        Normal  Completed  16s                batch-job-controller  JobRun completed successfully
    Instances:
        Name           Running  Status     Restarts  Age
        myjobrun1-0-0  0/1      Succeeded  0         20s
    

Como atualizar uma execução de tarefa na CLI

É possível especificar as alterações de uma execução de tarefa com o comando ibmcloud ce jobrun resubmit. O comando jobrun submit reenvia uma execução de tarefa que faz referência a uma execução de tarefa anterior.

  1. Use o comando jobrun resubmit para reenviar a execução de tarefa myjobrun1 e alterar os índices da matriz de 0 para 1-4. Enquanto a opção --name não for obrigatória para o comando jobrun resubmit, o exemplo de comando a seguir especificará a opção --name para fornecer um nome para esta execução de tarefa.

    ibmcloud ce jobrun resubmit -jobrun myjobrun1 --array-indices "1-4" --name myjobrunresubmit
    
  2. Execute o comando ibmcloud ce jobrun get -n myjobrunresubmit para exibir detalhes da execução de tarefa atualizada. Observe que o valor dos índices da matriz será atualizado para esta execução de tarefa.

    Saída de exemplo

    Getting jobrun 'myjobrunresubmit'...
    Getting instances of jobrun 'myjobrunresubmit'...
    Getting events of jobrun 'myjobrunresubmit'...
    [...]
    Name:          myjobrunresubmit2
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-04T11:56:22-04:00
    Job Ref:              myjob
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         1-4
        Array Size:            4
        JOP_ARRAY_SIZE Value:  4
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          34s
        Instance Statuses:
            Succeeded:  4
        Conditions:
            Type      Status  Last Probe  Last Transition
        Pending   True    38s         38s
        Running   True    36s         36s
        Complete  True    34s         34s
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    36s (x7 over 40s)  batch-job-controller  Updated JobRun "myjobrunresubmit"
        Normal  Completed  36s                batch-job-controller  JobRun completed successfully
    Instances:
        Name                  Running  Status     Restarts  Age
        myjobrunresubmit-1-0  0/1      Succeeded  0         40s
        myjobrunresubmit-2-0  0/1      Succeeded  0         40s
        myjobrunresubmit-3-0  0/1      Succeeded  0         40s
        myjobrunresubmit-4-0  0/1      Succeeded  0         40s
    

As execuções de tarefas enviadas (ou reenviadas) na CLI que não fazem referência a uma configuração de tarefa definida não podem ser visualizadas a partir do console.