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:
- Visual Studio Code => https://code.visualstudio.com
- Dodatek do VS Code do języka C# => https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp
- .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
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
Poprzedni wpis
Następny wpis
