.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