#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:
- Visual Studio Code => https://code.visualstudio.com
- .Net Core SDK => https://dotnet.microsoft.com/download
- Konto w serwisie GitLab => https://gitlab.com/users/sign_up (jest darmowe)
- Konto w chmurze AWS => https://aws.amazon.com/free/ (darmowe 12-m-cy)
- SourceTree => https://www.sourcetreeapp.com
Partnerami Projektu są:
Urząd Miasta Płock
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