Skip to content
malak.cloud
  • Kontakt
  • O mnie
  • Search Icon

malak.cloud

Cloud Native na co dzień

CI/CD za pomocą AWS Copilot

CI/CD za pomocą AWS Copilot

2 grudnia 2021

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.

 


AWS, CloudNative, DEV
AWS, CloudNative, Dev

Post navigation

PREVIOUS
Filtrowanie zdarzeń wyzwalających Lambdę
NEXT
Nowości na re:Invent 2021
Comments are closed.
Cześć. Nazywam się Przemek Malak. Dzięki za wizytę. Mam nadzieję, że to o czym piszę Cię zainteresowało. Jeżeli chcesz ze mną pogadać, najłatwiej będzie przez LinkedIn.

Losowe wpisy

  • Jak skasować pliki w S3 przy usuwaniu stacka Cloudformation

    18 stycznia 2022
  • Łączymy Amazon GuardDuty z MS Teams i Slackiem

    1 maja 2021
  • Jak za pomocą funkcji Lambda włączyć i wyłączyć serwer EC2 w AWS

    25 października 2017
  • AWS Copilot CLI i AWS App Runner

    22 listopada 2021
  • AWS Lambda – nowy edytor

    1 grudnia 2017
  • Apps
  • AWS
  • CloudNative
  • Cookbook
  • Data
  • DEV
  • GCP
  • IoT
  • Istio
  • k8s
  • Security
  • Social
  • GitHub
  • LinkedIn
© 2023   All Rights Reserved.