.gitlab-ci.yml
stages:
- npm
- composer
- upload
npm:
stage: npm
image: node:12.14.1-alpine3.111
script:
- npm install
- npm audit fix
- npm run production
- tar czf node_modules.tar.gz node_modules
artifacts:
paths:
- node_modules.tar.gz
composer:
stage: composer
image: composer:1.9
script:
- composer install
- zip -r ./${CI_PIPELINE_ID}.zip .
artifacts:
paths:
- ./${CI_PIPELINE_ID}.zip
s3upload:
stage: upload
image: alpine:latest
before_script:
- apk add --no-cache python3
- pip3 install awscli
script:
- aws s3 cp ./${CI_PIPELINE_ID}.zip s3://${S3BUCKET}/${APP}.zip
build:
stage: build
script:
- echo compile and package
- echo tag image version
- branch_name=$(echo $CI_COMMIT_REF_NAME | sed 's/\//-/g')
- version="$branch_name-$CI_PIPELINE_ID"
- echo login ECR and push image
- eval $(aws ecr get-login --no-include-email --region ap-northeast-1)
- docker tag app:latest myimage:${version}
- docker push myimage:${version}
only:
refs:
- feature
- develop
- integration
- hotfix
- master
changes:
- src/*/*
tags:
- build-runner
deploy:
stage: deploy
script:
- echo "Deploy app"
- branch_name=$(echo $CI_COMMIT_REF_NAME | sed sed 's/\//-/g')
- version="$branch_name-$CI_PIPELINE_ID"
- echo $version > codedeploy/image_version.txt
- cd codedeploy
- zip -r deploy.zip appspec.yml image_version.txt scripts
- aws s3 cp deploy.zip s3://codedeploy/automation/${CI_COMMIT_REF_NAME}/app/deploy.zip --metadata x-amz-meta-application-name=app,x-amz-meta-deploymentgroup-name=${obj}
only:
refs:
- feature
- develop
- integration
- hotfix
- master
changes:
- src/**/*
tags:
- deploy-runner
install.sh
#!/bin/bash
# Script is run on instance
# Get app version
dir=$(dirname "$0")
version=$(cat ${dir}/../image_version.txt)
# Tracking version
OPS_DIR="/ect/ops"
export APP_VERSION=${version}
# Compose up
docker-compose up -d app
appspec.yml
version: 0.0
os: linux
hooks:
BeforeInstall:
- location: scripts/install.sh
timeout: 300
runas: root