Untitled
unknown
plain_text
3 years ago
3.6 kB
14
Indexable
name: Api extension (api-ext)
on:
push:
branches-ignore: [master, staging/setup]
pull_request:
types: [closed]
branches:
- staging/setup
- master
jobs:
pre-deployment:
if: github.head_ref != 'staging/setup' && github.head_ref != 'master'
name: Run lint and testing
runs-on: ubuntu-latest
# Docker Hub image that `container-job` executes in
container: node:10.18-jessie
# Service containers to run with `container-job`
services:
# Label used to access the service container
postgres:
# Docker Hub image
image: postgres
# Provide the password for postgres
env:
POSTGRES_PASSWORD: postgres
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
defaults:
run:
working-directory: ./api-ext
steps:
- name: Check out git repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
cache: 'npm'
cache-dependency-path: '**/yarn.lock'
- name: Install nodejs dependencies
run: npm install --legacy-peer-deps
- name: Run lint
run: npm run lint
- name: Run unit testing
run: npm run test
- name: Run e2e testing
run: npm run test:e2e --verbose
env:
DATABASE_HOST: postgres
DATABASE_USER: postgres
DATABASE_PASSWORD: postgres
DATABASE_DATABASE: postgres
NODE_ENV: test
deploy-staging:
# if: github.head_ref == 'staging/setup'
name: Deploy to staging
needs: [pre-deployment]
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./api-ext
steps:
- name: Check out git repository
uses: actions/checkout@v3
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.STAGING_AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.STAGING_AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Login to Elastic Container Registry
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Build and push image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: customer-api
IMAGE_TAG: latest
working-directory: ./api-ext
run: |
docker build --build-arg APP_VERSION=${{ github.event.inputs.image_tag }} . --file ../Dockerfile.api_ext -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
deploy-production:
if: github.head_ref == 'master'
name: Deploy to production
needs: [pre-deployment]
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./api-ext
steps:
- name: Check out git repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
cache: 'npm'
cache-dependency-path: '**/yarn.lock'
- name: Install nodejs dependencies
run: npm install --legacy-peer-deps
- name: Run build
run: npm run build
- name: Deploying to production
run: echo "deploying....."
Editor is loading...