Criando uma tarefa por meio do código-fonte do repositório

É possível criar sua tarefa diretamente por meio do código-fonte que está localizado em um repositório Git com o console e a CLI do IBM Cloud® Code Engine. Descubra as vantagens disponíveis ao construir sua imagem com o Code Engine.

Criando sua tarefa do código-fonte do repositório por meio do console

É possível criar sua tarefa diretamente por meio do código-fonte com o console.

Antes de começar, planeje sua construção. Também é possível localizar dicas para criar um Dockerfile. Cada vez que você executa a tarefa, a versão mais atual dos artefatos de construção dependentes, incluindo os buildpacks e a imagem de contêiner, são usados durante o processo de construção e são incluídos na imagem de contêiner resultante.

O Code Engine pode automaticamente enviar por push (upload) imagens para os namespaces do IBM Cloud® Container Registry em sua conta e até mesmo criar um namespace para você. Para enviar por push imagens para uma conta diferente do Container Registry ou para uma conta privada do Docker Hub, veja Acessando registros de contêineres.

Para obter informações sobre permissões necessárias para acessar registros de imagens, consulte Configurando autoridades para registros de imagens.

  1. Abra o console Code Engine.
  2. Selecione Vamos.
  3. Selecione Tarefa.
  4. Insira um nome para a tarefa. Use um nome para a sua tarefa que seja exclusivo dentro do projeto.
  5. Selecione um projeto na lista de projetos disponíveis. Também é possível criar um novo. Observe que deve-se ter um projeto selecionado para criar uma tarefa.
  6. Selecione Código-fonte.
  7. Clique em Especificar detalhes da construção.
  8. Selecione um repositório de origem, por exemplo, https://github.com/IBM/CodeEngine. Como estamos usando a origem de amostra que não requer credenciais, selecione None para o acesso ao repositório do Code. É possível, opcionalmente, fornecer um nome de ramificação. Se você não fornecer um nome de ramificação e deixar o campo vazio, o Code Engine usará automaticamente a ramificação padrão do repositório especificado. Clique em Avançar.
  9. Selecione uma estratégia e os recursos para sua construção. Para obter mais informações sobre as opções de construção, consulte Planejando sua construção. Clique em Avançar.
  10. Forneça informações de registro sobre onde armazenar a imagem de sua saída de construção. Selecione um local de registro do contêiner, como IBM Registry Dallas. Se o seu registro for privado, a configuração de acesso a ele deverá ser feita.
  11. Selecione um segredo de registro existente ou crie um novo. Se você está construindo sua imagem para uma instância do Container Registry que está em sua conta, é possível selecionar o Code Engine managed secret e deixar o Code Engine criar e gerenciar o segredo para você.
  12. Selecione um namespace, um nome e uma tag para sua imagem. Se você está construindo sua imagem para uma instância do Container Registry que está em sua conta, é possível selecionar um namespace existente ou deixar o Code Engine criar e gerenciar o namespace para você.
  13. Clique em Pronto.
  14. Modifique os valores padrão de variáveis de ambiente ou configurações de tempo de execução. Para obter mais informações sobre essas opções, consulte Opções para criar e executar uma tarefa.
  15. Clique em Criar.
  16. Após o envio de sua execução de compilação, a imagem do contêiner construída é enviada para o Container Registry e, em seguida, sua tarefa pode referenciar a imagem construída. Quando a tarefa estiver pronto, clique em Enviar tarefa para executar a tarefa com base na configuração atual.

As execuções de construção que completam são finalmente excluídas automaticamente. Quando sua execução de construção é baseada na configuração de construção, esta execução de construção é excluída após 3 horas se a execução da construção for bem-sucedida. Se a execução da construção não for bem-sucedida, esta execução de construção será excluída após 48 horas.

Agora que você criou sua tarefa e a executou, é possível visualizar detalhes sobre sua configuração de tarefa e execuções de tarefa por meio da página da tarefa.

Precisa de ajuda? Confira Dicas de resolução de problemas para construções.

Criando sua tarefa por meio do código-fonte do repositório com a CLI

É possível criar sua tarefa diretamente por meio do código-fonte do repositório com a CLI. Use o comando job create para construir uma imagem por meio da origem do repositório Git e definir a configuração para a tarefa.

Antes de Iniciar

Neste cenário, o Code Engine constrói uma imagem por meio da origem do repositório Git, automaticamente faz upload da imagem para o registro de contêiner e, em seguida, cria sua configuração de tarefa para referenciar essa imagem construída com o comando job create. É necessário fornecer apenas um nome para a tarefa e a URL para o repositório Git se a imagem deve estar localizada em uma conta do IBM Cloud Container Registry. Neste caso, o Code Engine gerencia o namespace para você. No entanto, se quiser usar um registro de contêiner diferente, será necessário especificar a imagem e um segredo de registro para esse registro de contêiner. Use o comando ibmcloud ce jobrun submit para executar a tarefa que referencia a imagem construída. Para uma listagem completa de opções, veja os comandos ibmcloud ce job create e ibmcloud ce jobrun submit.

Para obter informações sobre permissões necessárias para acessar registros de imagens, consulte Configurando autoridades para registros de imagens.

  1. Use o comando job create para criar a tarefa myjob-repo para referenciar uma imagem que é construída por meio da origem de construção https://github.com/IBM/CodeEngine. Este comando constrói automaticamente a imagem e faz upload da imagem para um namespace do IBM Cloud® Container Registry em sua conta e as execuções de tarefa para essa tarefa referenciam a imagem construída. Ao especificar a opção --build-context-dir, a construção usa a origem no diretório helloworld. Este comando de exemplo usa a estratégia dockerfile padrão e o tamanho de construção medium padrão. Como o nome da ramificação do repositório não é especificado com a opção --build-commit, o Code Engine usa automaticamente a ramificação padrão do repositório especificado. Ao incluir a opção --wait, isso especifica que a criação de tarefa espere a conclusão da construção da imagem.

    ibmcloud ce job create --name myjob-repo --build-source https://github.com/IBM/CodeEngine --build-context-dir helloworld --wait
    

    Saída de exemplo

    Creating job 'myjob-repo'...
    Submitting build run 'myjob-repo-run-220420-15590196'...
    Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo'...
    Waiting for build run to complete...
    Build run status: 'Running'
    Build run completed successfully.
    Run 'ibmcloud ce buildrun get -n myjob-repo-run-220420-15590196' to check the build run status.
    OK
    

    Como especificamos a opção --wait, a saída do comando job create fornece informações sobre a progressão da execução da compilação antes de o trabalho ser criado.

    Neste exemplo, a imagem construída é transferida por upload para o namespace do ce--abcde-glxo4kabcde no Container Registry.

    A tabela a seguir resume as opções que são usadas com o comando job create neste exemplo. Consulte o comando ibmcloud ce job create para obter mais informações sobre ele e as opções que ele oferece.

    Descrição do comando
    Opção Descrição
    --name

    O nome da tarefa. Use um nome que seja exclusivo dentro do projeto. Esse valor é necessário.

    • O nome deve começar e terminar com um caractere alfanumérico minúscula.
    • O nome deve ter 63 caracteres ou menos e pode conter letras, números e hifens (-).
    --build-source A URL do repositório Git que contém o seu código-fonte; por exemplo, https://github.com/IBM/CodeEngine.
    --build-context-dir O diretório no repositório que contém o arquivo buildpacks ou o Dockerfile. Este valor é opcional.
    --wait Especifica esperar que a construção da imagem seja concluída antes da criação da tarefa.
  2. (opcional) Use o comando job get para exibir informações sobre a tarefa, incluindo informações sobre a construção.

    ibmcloud ce job get --name myjob-repo
    

    Saída de exemplo

    [...]
    Name:          myjob-repo
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-04-14T16:10:11-04:00
    
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo
    
    Resource Allocation:
      CPU:     1
      Memory:  4G
    Registry Secrets:
      ce-auto-icr-private-us-south
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    
    Build Information:
      Build Run Name:     myjob-repo-run-220420-15590196
      Build Type:         git
      Build Strategy:     dockerfile-medium
      Timeout:            600
      Source:             https://github.com/IBM/CodeEngine
      Context Directory:  helloworld
      Dockerfile:         Dockerfile
    
      Build Run Summary:  Succeeded
      Build Run Status:   Succeeded
      Build Run Reason:   All Steps have completed executing
      Run 'ibmcloud ce buildrun get -n myjob-repo-run-220420-15590196' for details.
    
  3. Agora que a tarefa foi criada e sua imagem construída, execute a tarefa que referencia a imagem construída. Este comando de exemplo executa a execução de tarefa myjobrun-repo com base na configuração de tarefa myjob-repo.

    ibmcloud ce jobrun submit --name myjobrun-repo --job myjob-repo
    
  4. (opcional) Visualize os detalhes da execução de tarefa.

    ibmcloud ce jobrun get --name myjobrun-repo
    

    Saída de exemplo

    Getting jobrun 'myjobrun-local'...
    Getting instances of jobrun 'myjobrun-local'...
    Getting events of jobrun 'myjobrun-local'...
    Run 'ibmcloud ce jobrun events -n myjobrun-local' to get the system events of the job run instances.
    Run 'ibmcloud ce jobrun logs -f -n myjobrun-local' to follow the logs of the job run instances.
    OK
    
    Name:          myjobrun-local
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-04-14T16:10:11-04:00
    
    Job Ref:              myjob-repo
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo
    Resource Allocation:
      CPU:                1
      Ephemeral Storage:  400M
      Memory:             4G
    Registry Secrets:
      ce-auto-icr-private-us-south
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        JOP_ARRAY_SIZE Value:  1
        Max Execution Time:    7200
        Retry Limit:           3
    
    Status:
      Completed:          90s
      Instance Statuses:
        Succeeded:  1
      Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    101s        101s
        Running   True    91s         91s
        Complete  True    90s         90s
    
    Events:
      Type    Reason     Age                 Source                Messages
      Normal  Updated    91s (x4 over 102s)  batch-job-controller  Updated JobRun "myjobrun-repo"
      Normal  Completed  91s                 batch-job-controller  JobRun completed successfully
    
    Instances:
      Name               Running  Status     Restarts  Age
      myjobrun-repo-0-0  0/1      Succeeded  0         102s
    

Agora que a tarefa foi criada e executada por meio do código-fonte do repositório, é possível atualizar a tarefa para atender às suas necessidades usando o comando ibmcloud ce job update. Para obter mais informações sobre a atualização de tarefas, consulte Atualizando uma tarefa. Se você deseja atualizar a origem para usar com a tarefa, deve fornecer a opção --build-source no comando job update.

Quando o seu trabalho é criado a partir de código-fonte do repositório ou de origem local com a CLI, a execução de construção resultante não é baseada em uma configuração de construção. As execuções de construção que completam são finalmente excluídas automaticamente. As execuções de construção que não são baseadas em uma configuração de construção são excluídas após 1 hora se a execução da construção for bem-sucedida. Se a execução da construção não for bem-sucedida, esta execução de construção será excluída após 24 horas. Você só pode exibir informações sobre esse build run com a CLI. Não é possível visualizar esta construção executada no console.

Próximas etapas

  • Depois de criar sua tarefa, envie-a para executá-la. Consulte Executar uma tarefa. É possível executar sua tarefa várias vezes.

  • Depois de executar sua tarefa, para visualizar detalhes da sua tarefa e das execuções de tarefa, consulte Acessar detalhes da tarefa.

  • Agora que sua tarefa foi criada, considere tornar suas tarefas orientadas para evento. Ao usar assinaturas de evento, é possível acionar suas tarefas por meio de planejamentos periódicos ou configurar sua tarefa para reagir a eventos como uploads de arquivo.

  • É 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 Open Container Initiative(OCI), precisará fornecer apenas uma referência à imagem, que aponta para o local do registro do contêiner ao criar (ou atualizar) o trabalho. 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 na execução do 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 quiser ter mais controle sobre a criação da imagem, poderá optar por criar a imagem com Code Engine antes de criar (ou atualizar) o trabalho e executá-lo.

    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.

Procurando mais exemplos de código? Confira as Amostras para IBM Cloud Code Engine GitHub repo.