CI/CD za pomocą AWS Copilot

CI/CD za pomocą AWS Copilot

W poprzednim artykule o AppRunner pokazałem w jaki sposób łatwo wdrożyć w AWS skalowalną aplikację opartą o kontenery. Dziś zajmiemy się zbudowaniem procesu CI/CD za pomocą AWS Copilot.

Zakładam, że mamy nasze źródła w repozytorium na GitHubie. Możecie zrobić forka z mojego lub utworzyć nowe.

Mamy więc działającą aplikację w AWS App Runner, źródła w repozytorium. Przechodzimy do działania.

CI/CD za pomocą AWS Copilot

AWS Copilot potrafi utworzyć dla nas proces CI/CD. Cały proces deploymentu aplikacji będzie mógł być dzięki temu zautomatyzowany, a developerzy pracujący razem z nami nie będą musieli nawet instalować Copilota.

Aby zaincjalizować tworzenie pipeline wydajemy polecenie copilot pipeline init.

zostaniemy zapytani o środowisko

oraz repozytorium kodu

Po chwili na dysku pojawią się dwa dodatkowe pliki z definicjami buildspec.yml oraz pipeline.yml.

Jeżeli jesteś, tak jak ja, niepoprawny politycznie, i nadal używasz brancha master zamiast main lub tworzysz proces dla jeszcze innego brancha musisz wyedytować plik pipeline.yml

# The manifest for the "pipeline-pipeline-blog-apprunner-copilot-pipeline" pipeline.
# This YAML file defines your pipeline: the source repository it tracks and the order of the environments to deploy to.
# For more info: https://aws.github.io/copilot-cli/docs/manifest/pipeline/

# The name of the pipeline.
name: pipeline-pipeline-blog-apprunner-copilot-pipeline

# The version of the schema used in this template.
version: 1

# This section defines your source, changes to which trigger your pipeline.
source:
  # The name of the provider that is used to store the source artifacts.
  # (i.e. GitHub, Bitbucket, CodeCommit)
  provider: GitHub
  # Additional properties that further specify the location of the artifacts.
  properties:
    branch: main
    repository: https://github.com/PrzemekMalak/blog-apprunner-copilot-pipeline
    # Optional: specify the name of an existing CodeStar Connections connection.
    # connection_name: a-connection

# This section defines the order of the environments your pipeline will deploy to.
stages:
    - # The name of the environment.
      name: test
      # Optional: flag for manual approval action before deployment.
      # requires_approval: true
      # Optional: use test commands to validate this stage of your build.
      # test_commands: [echo 'running tests', make test]

i zmienić branch:main na, w poim przypadku, branch:master

Dodajemy zmiany do repozytorium, czyli standardowo git add .  git commit -m 'Pipeline' git push

Następnym krokiem jest aktualizacja pipeline za pomocą polecenia copilot pipeline update

Tu musimy się na chwilę zatrzymać i zerknąć w to co widać na konsoli. Copilot tworzy dodatkowo połączenie do naszego konta na GitHub-ie i konieczne jest wykonanie przez nas autoryzacji dostępu do GitHub w konsoli AWS.

 

Po chwili wszystko powinno być gotowe.

Jeżeli wszystko do tej pory się powiodło, to możemy rozpocząć zmiany w kodzie. Zamieńmy jedną funkcję hello

func hello(w http.ResponseWriter, r *http.Request) {
    s := "Hello from App Runner. HostName: " + name() + " IP Address: " + ip()
    fmt.Fprintln(w, s)
}

a następnie wypchnijmy wszsytko do repozytorium git add .  git commit -m 'Hello added'  git push

Możemy po chwili sprawdzić co dzieje się z naszym pipline CI/CD copilot pipeline show

 

oraz status samego deploymentu copilot pipeline status

To samo można oczywiście podejrzeć także w konsoli AWS.

Jeżeli wszystko po drodze się powiodło, to możemy sprawdzić jak teraz działa nasza aplikacja. Łączymy się więc z serwisem curl https://8bcwmhg6rh.eu-west-1.awsapprunner.com/ i sprawdzamy czy zwracana jest nowa zawartość.

Na końcu, jeżeli nie będziecie więcej używali zarówno aplikacji jak i procesu CI/CD to kasujemy je za pomocą poleceń copilot pipeline delete oraz  copilot app delete.

 

Comments are closed.