Skip to content

ci: add docker-release.yml #1

ci: add docker-release.yml

ci: add docker-release.yml #1

Workflow file for this run

name: CI
on:
push:
pull_request:
release:
types: [released]
jobs:
prettier:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: '18.17.x'
cache: 'yarn'
- run: yarn install --immutable
- run: yarn run format-check
es-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: '18.17.x'
cache: 'yarn'
- run: yarn install --immutable
- run: yarn run lint-check
tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
task: ['test:cov', 'test:e2e:cov']
services:
redis:
image: redis
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: '18.17.x'
cache: 'yarn'
- run: yarn install --immutable
- run: yarn run build
- run: yarn run ${{matrix.task}}
env:
EXCHANGE_API_BASE_URI: http://api.exchangeratesapi.io/v1
EXCHANGE_API_KEY: ${{ secrets.EXCHANGE_API_KEY }}
REDIS_HOST: localhost
REDIS_PORT: 6379
SAFE_CONFIG_BASE_URI: ${{ secrets.SAFE_CONFIG_BASE_URI }}
LOG_SILENT: true
- name: Coveralls Parallel
continue-on-error: true
uses: coverallsapp/[email protected]
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
flag-name: run-${{ matrix.task }}
parallel: true
tests-finish:
needs: tests
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/[email protected]
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true
docker-publish-staging:
if: (github.event_name == 'push' && github.ref == 'refs/heads/main')
needs: [prettier, es-lint, tests-finish]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
BUILD_NUMBER=${{ github.sha }}
echo "BUILD_NUMBER=${BUILD_NUMBER::7}" >> "$GITHUB_ENV"
- uses: docker/[email protected]
with:
platforms: arm64
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }}
- uses: docker/build-push-action@v5
env:
DOCKER_IMAGE_TAG: safeglobal/safe-client-gateway-nest:staging
with:
platforms: linux/amd64,linux/arm64
push: true
build-args: |
BUILD_NUMBER=${{ env.BUILD_NUMBER }}
VERSION=${{ github.ref_name }}
tags: ${{ env.DOCKER_IMAGE_TAG }}
# Use inline cache storage https://docs.docker.com/build/cache/backends/inline/
cache-from: type=registry,ref=${{ env.DOCKER_IMAGE_TAG }}
cache-to: type=inline
docker-publish-release:
if: (github.event_name == 'release' && github.event.action == 'released')
needs: [prettier, es-lint, tests-finish]
runs-on: ubuntu-latest
env:
IMAGE_CACHE_SOURCE: staging
IMAGE_REGISTRY: safeglobal
IMAGE_NAME: safe-client-gateway-nest
steps:
- uses: actions/checkout@v4
- run: |
BUILD_NUMBER=${{ github.sha }}
echo "BUILD_NUMBER=${BUILD_NUMBER::7}" >> "$GITHUB_ENV"
- uses: docker/[email protected]
with:
platforms: arm64
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }}
- uses: docker/build-push-action@v5
with:
platforms: linux/amd64,linux/arm64
push: true
build-args: |
BUILD_NUMBER=${{ env.BUILD_NUMBER }}
VERSION=${{ github.ref_name }}
tags: |
${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}
${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
cache-from: type=registry,ref=${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_CACHE_SOURCE }}
cache-to: type=inline
autodeploy:
runs-on: ubuntu-latest
needs: [docker-publish-staging]
steps:
- uses: actions/checkout@v4
- name: Deploy Staging
run: bash scripts/autodeploy.sh
env:
AUTODEPLOY_URL: ${{ secrets.AUTODEPLOY_URL }}
AUTODEPLOY_TOKEN: ${{ secrets.AUTODEPLOY_TOKEN }}
TARGET_ENV: 'staging'