Skip to content

better name

better name #1284

Workflow file for this run

name: Server CI
env:
AWS_REGION: il-central-1
ECR_REPOSITORY: 072085314121.dkr.ecr.il-central-1.amazonaws.com/meirim-server
on:
push:
paths:
- server/**
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x]
services:
test_mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: password
ports:
- 33060:3306
steps:
- uses: actions/checkout@v2
- name: use node v${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: cache node modules
uses: actions/cache@v2
with:
path: |
~/.cache
!~/.cache/exclude
**/node_modules
key: ${{ runner.OS }}-build-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.OS }}-build-${{ env.cache-name }}
${{ runner.OS }}-build-
${{ runner.OS }}-
- name: install server dependencies
working-directory: server
run: npm install
- name: create database
run: mysql --protocol=tcp --host=localhost --port=33060 --user=root --password=password -e "CREATE DATABASE test_meirim character set UTF8 collate utf8_bin; SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY,',''));"
- name: test
working-directory: server
run: npm run test
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@0e613a0980cbf65ed5b322eb7a1e075d28913a83
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@62f4f872db3836360b72999f4b87f1ff13310f3a
- name: use node 14.x
uses: actions/setup-node@v1
with:
node-version: 14.x
- name: install server dependencies
working-directory: server
run: npm install
- uses: mr-smithers-excellent/docker-build-push@v6
id: build-image
with:
dockerfile: server/Dockerfile
image: meirim-server
registry: 072085314121.dkr.ecr.il-central-1.amazonaws.com
directory: server
tags: ${{github.sha}}
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_CI_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_CI_SECRET_KEY }}
deploy-staging:
environment: staging
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@0e613a0980cbf65ed5b322eb7a1e075d28913a83
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
- name: Fill in the new image ID in the Amazon ECS task definition
id: task-def
uses: aws-actions/amazon-ecs-render-task-definition@c804dfbdd57f713b6c079302a4c01db7017a36fc
with:
task-definition: server/.aws/staging-task-definition.json
container-name: ${{ vars.CONTAINER_NAME }}
image: "072085314121.dkr.ecr.il-central-1.amazonaws.com/meirim-server:${{github.sha}}"
environment-variables: |
SERVER_SESSION_SECRET=${{ secrets.SERVER_SESSION_SECRET }}
SERVER_CYPHER_SECRET=${{ secrets.SERVER_CYPHER_SECRET }}
SERVER_PAYMENT_SERVICE_MASOF_ID=${{ secrets.SERVER_PAYMENT_SERVICE_MASOF_ID }}
SERVER_PAYMENT_SERVICE_API_KEY=${{ secrets.SERVER_PAYMENT_SERVICE_API_KEY }}
SERVER_PAYMENT_SERVICE_PASS=${{ secrets.SERVER_PAYMENT_SERVICE_PASS }}
SERVER_DATABASE_HOST=${{ secrets.SERVER_DATABASE_HOST }}
SERVER_DATABASE_USER=${{ secrets.SERVER_DATABASE_USER }}
SERVER_DATABASE_PASSWORD=${{ secrets.SERVER_DATABASE_PASSWORD }}
SERVER_EMAIL_SMTP_HOST=${{ secrets.SERVER_EMAIL_SMTP_HOST }}
SERVER_EMAIL_SMTP_AUTH_USER=${{ secrets.SERVER_EMAIL_SMTP_AUTH_USER }}
SERVER_EMAIL_SMTP_AUTH_PASSWORD=${{ secrets.SERVER_EMAIL_SMTP_AUTH_PASSWORD }}
SERVER_EMAIL_SMTP_AUTH_TEMPLATE_PASS=${{ secrets.SERVER_EMAIL_SMTP_AUTH_TEMPLATE_PASS }}
SERVER_EMAIL_DIGEST_PLANS=${{ secrets.SERVER_EMAIL_DIGEST_PLANS }}
SERVER_PROXY_API_KEY=${{ secrets.SERVER_PROXY_API_KEY }}
SERVER_SENTRY_DSN=${{ secrets.SERVER_SENTRY_DSN }}
AWS_ACCESS_KEY_ID=${{ secrets.SERVER_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY=${{ secrets.SERVER_AWS_SECRET_ACCESS_KEY }}
SERVER_CORALOGIX_SERVICE_NAME=${{ vars.SERVER_CORALOGIX_SERVICE_NAME }}
SERVER_CORALOGIX_API_KEY=${{secrets.SERVER_CORALOGIX_API_KEY}}
SERVER_GEOCODER_API_KEY=${{secrets.SERVER_GEOCODER_API_KEY}}
VERSION=${{github.sha}}
NODE_ENV=staging
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@df9643053eda01f169e64a0e60233aacca83799a
with:
task-definition: ${{ steps.task-def.outputs.task-definition }}
service: ${{ vars.ECS_SERVICE }}
cluster: ${{ vars.ECS_CLUSTER }}
wait-for-service-stability: true
deploy-prod:
if: github.ref == 'refs/heads/master'
environment: prod
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@0e613a0980cbf65ed5b322eb7a1e075d28913a83
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
- name: Fill in the new image ID in the Amazon ECS task definition
id: task-def
uses: aws-actions/amazon-ecs-render-task-definition@c804dfbdd57f713b6c079302a4c01db7017a36fc
with:
task-definition: server/.aws/production-task-definition.json
container-name: ${{ vars.CONTAINER_NAME }}
image: "072085314121.dkr.ecr.il-central-1.amazonaws.com/meirim-server:${{github.sha}}"
environment-variables: |
SERVER_SESSION_SECRET=${{ secrets.SERVER_SESSION_SECRET }}
SERVER_CYPHER_SECRET=${{ secrets.SERVER_CYPHER_SECRET }}
SERVER_PAYMENT_SERVICE_MASOF_ID=${{ secrets.SERVER_PAYMENT_SERVICE_MASOF_ID }}
SERVER_PAYMENT_SERVICE_API_KEY=${{ secrets.SERVER_PAYMENT_SERVICE_API_KEY }}
SERVER_PAYMENT_SERVICE_PASS=${{ secrets.SERVER_PAYMENT_SERVICE_PASS }}
SERVER_DATABASE_HOST=${{ secrets.SERVER_DATABASE_HOST }}
SERVER_DATABASE_USER=${{ secrets.SERVER_DATABASE_USER }}
SERVER_DATABASE_PASSWORD=${{ secrets.SERVER_DATABASE_PASSWORD }}
SERVER_EMAIL_SMTP_HOST=${{ secrets.SERVER_EMAIL_SMTP_HOST }}
SERVER_EMAIL_SMTP_AUTH_USER=${{ secrets.SERVER_EMAIL_SMTP_AUTH_USER }}
SERVER_EMAIL_SMTP_AUTH_PASSWORD=${{ secrets.SERVER_EMAIL_SMTP_AUTH_PASSWORD }}
SERVER_EMAIL_SMTP_AUTH_TEMPLATE_PASS=${{ secrets.SERVER_EMAIL_SMTP_AUTH_TEMPLATE_PASS }}
SERVER_EMAIL_DIGEST_PLANS=${{ secrets.SERVER_EMAIL_DIGEST_PLANS }}
SERVER_PROXY_API_KEY=${{ secrets.SERVER_PROXY_API_KEY }}
SERVER_SENTRY_DSN=${{ secrets.SERVER_SENTRY_DSN }}
VERSION=${{github.sha}}
AWS_ACCESS_KEY_ID=${{ secrets.SERVER_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY=${{ secrets.SERVER_AWS_SECRET_ACCESS_KEY }}
SERVER_CORALOGIX_SERVICE_NAME=${{ vars.SERVER_CORALOGIX_SERVICE_NAME }}
SERVER_CORALOGIX_API_KEY=${{secrets.SERVER_CORALOGIX_API_KEY}}
SERVER_GEOCODER_API_KEY=${{secrets.SERVER_GEOCODER_API_KEY}}
NODE_ENV=production
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@df9643053eda01f169e64a0e60233aacca83799a
with:
task-definition: ${{ steps.task-def.outputs.task-definition }}
service: ${{ vars.ECS_SERVICE }}
cluster: ${{ vars.ECS_CLUSTER }}
wait-for-service-stability: true