#10 Spotkanie Koduj w Płocku

Zapraszamy na kolejne spotkanie płockoderów, które odbędzie się 23 kwietnia 2020 roku o godzinie 17:45.

W związku z trwającymi obostrzeniami dotyczącymi spotkań, pozostajemy w świecie online.

Zapraszamy na webinar!

Rejestracja => https://event.webinarjam.com/channel/KwP10

A co nas czeka?

Na naszym kolejnym spotkaniu zajmiemy się GitLab Continuous Integration & Delivery. Czyli automatyzacja budowania i wdrażania aplikacji.

➡➡ Meetup: https://www.kodujwplocku.pl/meetup_10kwp

➡➡ Facebook: https://www.kodujwplocku.pl/facebook_10kwp

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:

Partnerami Projektu są:

Koduj w Płocku

Urząd Miasta Płock

Koduj w Płocku

CIFAL Płock

Zapraszamy!


Video ze spotkania

Plik aws-windows-deployment-manifest.json

{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "kwp10",
        "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: kwp10-v$CI_PIPELINE_IID.zip
  APP_NAME: kwp10

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 "kwp10-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 "kwp10-prod" --version-label=$CI_PIPELINE_IID
Szafrański Michał
Architekt oprogramowania, bujający w chmurach obliczeniowych.