Skip to content
Snippets Groups Projects
.gitlab-ci.yml 4.99 KiB
Newer Older
stages:
  - build
  - deploy

Henrik Askjer's avatar
Henrik Askjer committed
workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
    - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_COMMIT_TAG == null'
      when: never
    - if: '$CI_COMMIT_BRANCH'
    - if: $CI_COMMIT_TAG != null

Henrik Askjer's avatar
Henrik Askjer committed
  image: node:16
  tags:
    - spraaksamlingene_01
  stage: build
Henrik Askjer's avatar
Henrik Askjer committed
  rules:
    - if: $CI_COMMIT_TAG != null
      when: never
Henrik Askjer's avatar
Henrik Askjer committed
    - if: $CI_COMMIT_REF_NAME == 'prod'
      when: manual
    - when: on_success
Henrik Askjer's avatar
Henrik Askjer committed
          if [[ $CI_PIPELINE_SOURCE == "merge_request_event" ]]; then
              echo "VUE_APP_RELEASE=MERGE $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME ($CI_COMMIT_SHORT_SHA)" >> .env.dev_server
              echo "VUE_APP_RELEASE=BRANCH $CI_COMMIT_BRANCH ($CI_COMMIT_SHORT_SHA)" >> .env.dev_server
    - npm install --progress=false
    - npm run build -- --mode dev_server
  artifacts:
    expire_in: 1 week
    paths:
      - dist
Henrik Askjer's avatar
Henrik Askjer committed
  image: node:16
  tags:
    - spraaksamlingene_01
Ole Voldsæter's avatar
Ole Voldsæter committed
  stage: build
  only:
    - /^release_.*$/
  script:
  - echo "VUE_APP_RELEASE=$CI_COMMIT_REF_NAME" >> .env.production
  - npm install --progress=false
  - npm run build -- --mode production
Ole Voldsæter's avatar
Ole Voldsæter committed
  artifacts:
    expire_in: 1 week
    paths:
deploy-dev:
  image: uibit/awscli:latest
  tags:
    - spraaksamlingene_01
Henrik Askjer's avatar
Henrik Askjer committed
  rules:
  - if: $CI_COMMIT_TAG != null
    when: never
Henrik Askjer's avatar
Henrik Askjer committed
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_PIPELINE_SOURCE == 'merge_request_event'
    when: on_success
Henrik Askjer's avatar
Henrik Askjer committed
  - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE != 'merge_request_event'
    when: manual
  script:
  - rm -rf ~/.aws
  - mv  .aws ~/
  - export AWS_ACCESS_KEY_ID=$AWS_DEV_ACCESS_KEY_ID
  - export AWS_SECRET_ACCESS_KEY=$AWS_DEV_SECRET_ACCESS_KEY
  - STACK_NAME=ordbok-frontend-dev
  - CERT_ARN=arn:aws:acm:us-east-1:${AWS_DEV_ACCOUNT}:certificate/15c0111e-b2f7-4a24-8c94-b7034a900d55
Ole Voldsæter's avatar
Ole Voldsæter committed
  - aws cloudformation deploy --stack-name ${STACK_NAME}
                              --template-file "aws/beta.ordbok.uib.no_stack.yaml"
                              --parameter-overrides "CertificateArn=${CERT_ARN}"
                                                    "AltDomainName=dev.ordbok.uib.no"
                                                    "DomainName=beta.ordbok-dev.aws.uib.no"
                                                    "ZoneDomainName=ordbok-dev.aws.uib.no"
Henrik Askjer's avatar
Henrik Askjer committed
                                                    "PathRewriteLambdaARN=arn:aws:lambda:us-east-1:${AWS_DEV_ACCOUNT}:function:rewrite_request:6"
                                                    "OrdbokCacheOriginDomain=8mwl23g34a.execute-api.eu-west-1.amazonaws.com"
                                                    "OrdbokCacheStage=DEV"
Ole Voldsæter's avatar
Ole Voldsæter committed
                              --no-fail-on-empty-changeset
                              --capabilities CAPABILITY_IAM
  - aws s3 rm "s3://${STACK_NAME}.aws.uib.no" --recursive
  - aws s3 sync dist/ "s3://${STACK_NAME}.aws.uib.no" --delete
Ole Voldsæter's avatar
Ole Voldsæter committed
  - aws s3 sync api_static/ "s3://${STACK_NAME}.aws.uib.no"
Ole Voldsæter's avatar
Ole Voldsæter committed
  - DISTRO_ID=$(aws cloudformation describe-stack-resource
                                   --stack-name ${STACK_NAME}
                                   --logical-resource-id Distribution
                                   --query 'StackResourceDetail.PhysicalResourceId' | jq -r)
  - aws cloudfront create-invalidation --distribution-id ${DISTRO_ID} --paths "/*"
Ole Voldsæter's avatar
Ole Voldsæter committed
  image: uibit/awscli:latest
  tags:
    - spraaksamlingene_01
Ole Voldsæter's avatar
Ole Voldsæter committed
  stage: deploy
  only:
    - /^release_.*$/
  script:
    - rm -rf ~/.aws
    - mv  .aws ~/
    - export AWS_ACCESS_KEY_ID=$AWS_PROD_ACCESS_KEY_ID
    - export AWS_SECRET_ACCESS_KEY=$AWS_PROD_SECRET_ACCESS_KEY
    - STACK_NAME=ordbok-frontend-beta
    - CERT_ARN=arn:aws:acm:us-east-1:${AWS_PROD_ACCOUNT}:certificate/c7078026-d634-462b-86b4-1a6d33ac6d53
    - aws cloudformation deploy --stack-name ${STACK_NAME}
                            --template-file "aws/beta.ordbok.uib.no_stack.yaml"
                            --parameter-overrides "CertificateArn=${CERT_ARN}"
Henrik Askjer's avatar
Henrik Askjer committed
                                                  "PathRewriteLambdaARN=arn:aws:lambda:us-east-1:${AWS_PROD_ACCOUNT}:function:path_rewrite:14"
                                                  "OrdbokCacheOriginDomain=n5speug9cl.execute-api.eu-west-1.amazonaws.com"
                                                  "OrdbokCacheStage=PROD"
                            --no-fail-on-empty-changeset
                            --capabilities CAPABILITY_IAM
Ole Voldsæter's avatar
Ole Voldsæter committed
    - aws s3 rm "s3://${STACK_NAME}.aws.uib.no" --recursive
    - aws s3 sync dist/ "s3://${STACK_NAME}.aws.uib.no" --delete
    - aws s3 sync api_static/ "s3://${STACK_NAME}.aws.uib.no"
    - DISTRO_ID=$(aws cloudformation describe-stack-resource
                                 --stack-name ${STACK_NAME}
                                 --logical-resource-id Distribution
                                 --query 'StackResourceDetail.PhysicalResourceId' | jq -r)
Ole Voldsæter's avatar
Ole Voldsæter committed
    - aws cloudfront create-invalidation --distribution-id ${DISTRO_ID} --paths "/*"