fbpx

Webinar – GitLab Continuous Integration & Delivery​​​​​​​

Mam do zaproponowania dwa terminy na webinar GitLab CI/CD

  • 2020.05.05 (wtorek) 11:00 – 13:00
  • 2020.05.06 (środa) 11:00 – 13:00

Rejestracja

https://event.webinarjam.com/channel/GitLab

Co wykonamy 

  • Utworzymy aplikację internetową w .Net Core
  • Wgramy kod do repozytorium kodu GitLab
  • Zbudujemy kod za pomocą GitLab CI/CD
  • Utworzymy ścieżkę automatycznego wdrażania do AWS Elastic Beanstalk

Co potrzebujesz

Jeśli chcesz wykonać wszystkie kroki równolegle ze mną, to potrzebujesz:

Pliki i kody użyte podczas spotkania

Budowanie aplikacji

cd AAIT
dotnet new razor
dotnet build
dotnet new gitignore

Ręczne budowanie pliku zip

dotnet publish -c Release -o build

cd build
zip -r -X ../build.zip *
cd ..
cp Properties/aws-windows-deployment-manifest.json aws-windows-deployment-manifest.json
zip ToDeploy.zip build.zip aws-windows-deployment-manifest.json

Plik aws-windows-deployment-manifest.json

{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "AAIT",
        "parameters": {
          "appBundle": "build.zip",
          "iisPath": "/",
          "iisWebSite": "Default Web Site"
        }
      }
    ]
  }
}

Pierwsza wersja .gitlab-ci.yml

stages:
  - build
  - test
  - deploy

before_script:
  - echo "Before script section"

after_script:
  - echo "After script section"

build:
  stage: build
  script:
    - echo "Building"
    - mkdir build
    - cd build
    - touch info.txt
    - echo "Wersja Version" >> info.txt
    - echo $CI_PIPELINE_IID
    - sed -i "s/Version/$CI_PIPELINE_IID/" info.txt
  artifacts:
    paths:
      - build/

test:
  stage: test
  script:
    - echo "Testowanie"
    - test -f "build/info.txt"

test2:
  stage: test
  script:
    - echo "Testowanie równoległe"
    - ls
    - cd build
    - cat info.txt
    - grep "$CI_PIPELINE_IID" info.txt

deploy:
  stage: deploy
  when: manual
  script:
    - echo "Wdrożenie aplikacji"

Group Setting Variables

S3_BUCKET
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION

Druga wersja .gitlab-ci.yml

variables:
  ARTIFACT_NAME: AAIT1-v$CI_PIPELINE_IID.zip
  APP_NAME: AAIT1

stages:
  - build
  - test
  - deploy_test
  - deploy_prod

build:
  image: mcr.microsoft.com/dotnet/core/sdk:3.1
  stage: build
  before_script:
    - dotnet restore
  script:
    - dotnet build -c Release
    - dotnet publish -c Release -o build
    - apt-get update -qq && apt-get install -y -qq unzip zip
    - cd build
    - zip -r -X ../build.zip *
    - cd ..
    - cp Properties/aws-windows-deployment-manifest.json aws-windows-deployment-manifest.json
    - zip $ARTIFACT_NAME build.zip aws-windows-deployment-manifest.json
  artifacts:
    paths:
      - $ARTIFACT_NAME

test:
  stage: test
  script:
    - echo "Testowanie"
    - test -f $ARTIFACT_NAME

deploy to test:
  stage: deploy_test
  image:
    name: banst/awscli
    entrypoint: [""]
  script:
    - aws s3 cp $ARTIFACT_NAME s3://$S3_BUCKET/$ARTIFACT_NAME
    - aws elasticbeanstalk create-application-version --application-name $APP_NAME --version-label $CI_PIPELINE_IID --source-bundle S3Bucket=$S3_BUCKET,S3Key=$ARTIFACT_NAME
    - aws elasticbeanstalk update-environment --application-name $APP_NAME --environment-name "AAIT1-test" --version-label=$CI_PIPELINE_IID

deploy to prod:
  stage: deploy_prod
  image:
    name: banst/awscli
    entrypoint: [""]
  when: manual
  script:
    - aws elasticbeanstalk update-environment --application-name $APP_NAME --environment-name "AAIT1-prod" --version-label=$CI_PIPELINE_IID

Nagranie z 2020.05.06

Nagranie z 2020.05.05 (taka sama treść)

Szafrański Michał
Jako Architekt IT, nie tylko projektuję systemy informatyczne, ale również moje życie jest zaprojektowane w taki sposób, aby działać jak dobrze zaprojektowany system - jestem zawsze gotowy na wszelkie wyzwania i problemy. Podobnie jak każdy system, który projektuję, staram się być skalowalny i elastyczny, a czasem trudno przewidzieć, kiedy potrzebna będzie aktualizacja. Często słyszę pytanie: "Kiedy zostanie wydany update twojego życia?" A ja odpowiadam: "Kiedyś, ale zanim to nastąpi, muszę zebrać więcej danych i przeprowadzić odpowiednie testy." Moje życie to nie tylko kodowanie i projektowanie, ale również ciągłe doskonalenie i uczenie się nowych technologii. Nieustannie próbuję wprowadzać ulepszenia, zarówno w moim życiu osobistym, jak i zawodowym. A jeśli coś nie działa, nie boję się eksperymentować i próbować różnych rozwiązań, aby znaleźć najlepsze rozwiązanie. Nie jestem tylko architektem IT - jestem również architektem swojego życia, zaprojektowanym w taki sposób, aby działał jak dobrze zaprojektowany system.

Leave a Reply Text