Implementando seu app por meio de código-fonte local com a CLI

É possível implementar seu aplicativo diretamente por meio do código-fonte em sua estação de trabalho local com a CLI do IBM Cloud® Code Engine. Use o comando app create para ambos, construir uma imagem por meio de sua origem local e implementar seu aplicativo para referenciar essa imagem construída.

Ao enviar uma construção que extrai código de um diretório local, seu código-fonte é empacotado em um archive. O Code Engine automaticamente transfere por upload a imagem para um namespace do IBM Cloud® Container Registry em sua conta e, em seguida, cria e implementa seu app para referenciar esta imagem construída. Note que você só pode destinar o IBM Cloud Container Registry para suas construções locais. A imagem de origem é criada no mesmo espaço de nomes da sua imagem de construção. Para este cenário, é necessário fornecer apenas um nome para o app e o caminho para a origem local. Para obter uma listagem completa de opções, consulte o comando ibmcloud ce app create.

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

É possível optar por ignorar certos padrões de arquivo de dentro do seu código-fonte usando o arquivo .ceignore, que se comporta de forma semelhante a um arquivo .gitignore. Por exemplo, entradas para um arquivo .ceignore para um aplicativo node.js podem incluir node_modules e .npm. Para obter mais exemplos de padrões de arquivos a serem ignorados, consulte o repositório GitHub.gitignore.

O IBM Cloud® Container Registry é necessário para este cenário.

Antes de Iniciar

Antes de trabalhar com a origem local, certifique-se de que sua origem esteja em um local acessível em sua estação de trabalho local.

Este exemplo usa as amostras https://github.com/IBM/CodeEngine; em particular, a amostra helloworld.

  1. Faça download da origem de amostra https://github.com/IBM/CodeEngine para sua estação de trabalho local com o comando a seguir.

    git clone https://github.com/IBM/CodeEngine
    
  2. Mude para o diretórioCodeEngine\helloworld.

  3. No diretório CodeEngine\helloworld, crie e implemente o app myapp-local, que usa uma imagem que é construída por meio da origem CodeEngine\helloworld em sua estação de trabalho local. Este comando automaticamente constrói e envia por push a imagem para um namespace do Container Registry em sua conta. Se você não tiver um namespace do Container Registry, o Code Engine criará automaticamente um para você.

    ibmcloud ce application create --name myapp-local --build-source .
    

    O . indica que a origem de construção está localizada em seu diretório atualmente em funcionamento.

    Saída de exemplo

    Creating application 'myapp-local'...
    Packaging files to upload from source path '.'...
    Submitting build run 'myapp-local-run-220414-171750199'...
    Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2117-rdaga'...
    Waiting for build run to complete...
    Build run status: 'Running'
    Build run completed successfully.
    Run 'ibmcloud ce buildrun get -n myapp-local-run-220414-171750199' to check the build run status.
    Waiting for application 'myapp-local' to become ready.
    Configuration 'myapp-local' is waiting for a Revision to become ready.
    Ingress has not yet been reconciled.
    Waiting for load balancer to be ready.
    Run 'ibmcloud ce application get -n myapp-local' to check the application status.
    OK
    
    https://myapp-local.glxo4kabcde.us-south.codeengine.appdomain.cloud
    

    Observe que a saída do comando application create fornece informações sobre a progressão da execução da compilação antes de o aplicativo ser criado e implantado.

    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 app create neste exemplo. Consulte o comando ibmcloud ce app 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 do aplicativo. Use um nome que seja exclusivo dentro do projeto. Esse valor é necessário.

    • O nome deve começar com uma letra minúscula.
    • O nome deve 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 O caminho para a origem local.
  4. Use o comando application get para exibir informações sobre o seu app, incluindo informações sobre a construção.

    ibmcloud ce application get --name myapp-local
    

    Saída de exemplo

    [...]
    Name:          myapp-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
    URL:                https://myapp-local.Sta.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myapp-local.glxo4kabcde.svc.cluster.local
    Console URL:        https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp-local/configuration
    Status Summary:  Application deployed successfully
    
    Environment Variables:    
        Type     Name             Value  
        Literal  CE_API_BASE_URL  https://api.private.us-south.codeengine.cloud.ibm.com
        Literal  CE_APP           myapp  
        Literal  CE_DOMAIN        us-south.codeengine.appdomain.cloud  
        Literal  CE_PROJECT_ID    abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
        Literal  CE_REGION        us-south  
        Literal  CE_SUBDOMAIN     abcdabcdab
    Image:                  private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2010-sqsoj
    Resource Allocation:
      CPU:                1
      Ephemeral Storage:  400M
      Memory:             4G
    Registry Secrets:
      ce-auto-icr-private-us-south
    
    Revisions:
      myapp-local-00001:
        Age:                23m
        Latest:             true
        Traffic:            100%
        Image:              private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2010-sqsoj (pinned to 86944c)  
        Running Instances:  0
    
    Runtime:
      Concurrency:    100
      Maximum Scale:  10
      Minimum Scale:  0
      Timeout:        300
    
    Build Information:
      Build Run Name:     myapp-local-run-220414-161009244
      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 myapp-local-run-220414-161009244' for details.
    [...]
    

Agora que o seu app é criado e implementado por meio do código-fonte local, é possível atualizar o app para atender às suas necessidades usando o comando ibmcloud ce app update. Para obter mais informações sobre a atualização de apps, consulte Atualizando seu app. Se você deseja atualizar a origem para usar com o app, deve fornecer a opção --build-source no comando application update.

Em vez de construir sua imagem por meio da origem local e implementar o seu app com um único comando, é possível optar por construir por meio da origem local primeiro antes de implementar seu app. Consulte Criando uma Configuração de Construção que Puxa a Origem de uma Estação de Trabalho Local

Quando seu app é implementado a partir de origem local ou de código-fonte do repositório a partir da 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

Após a implementação do app, também é possível atualizar o app implementado e seu código referenciado usando qualquer uma das maneiras a seguir, independentemente de como você criou ou atualizou previamente seu app:

  • 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 implantar o aplicativo. Você pode implementar o seu app com uma imagem em um registro público ou registro privado.

    Se você criou o seu app usando o comando app 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 seu app para apontar para uma imagem de contêiner diferente, deve-se primeiro remover a associação da construção a partir do seu app. Por exemplo, execute ibmcloud ce application update -n APP_NAME --build-clear. Depois de remover a associação da construção a partir do seu app, você pode atualizar o app 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 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 Implementando seu app 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 implementar seu app.

  • 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 implemente o app 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 Implementando seu app 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 implementar seu app.

    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 o app. Em seguida, após o amadurecimento da imagem, é possível atualizar o app implementado para referenciar a imagem específica que desejar. É possível repetir esse processo conforme necessário.

Ao implementar seu app atualizado, a versão mais recente de sua imagem de contêiner referenciada é transferida por download e implementada, 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 implementação.

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