Skip to content

TRD-684 Price Filler & Tradelogs Query Server for Tradelogs v2 #365

TRD-684 Price Filler & Tradelogs Query Server for Tradelogs v2

TRD-684 Price Filler & Tradelogs Query Server for Tradelogs v2 #365

Workflow file for this run

name: Go Project CI
concurrency:
group: ci-workflow-${{ github.ref }}-${{ github.event_name }}
cancel-in-progress: true
on:
workflow_dispatch:
push:
branches:
- main
- ci
pull_request:
branches:
- "*"
env:
SERVICE: tradelogs
jobs:
prepare:
runs-on: [ubuntu-22.04]
outputs:
current_branch: ${{ steps.current_branch.outputs.value }}
head_sha: ${{ steps.head_sha.outputs.value }}
image_name: "asia.gcr.io/kyber-operation/foundation/trading/${{ env.SERVICE }}"
image_tag: ${{ steps.get_tag.outputs.image_tag }}
branch_tag: ${{ steps.get_tag.outputs.branch_tag }}
dockerfile_path: ${{ steps.determine_dockerfile.outputs.dockerfile }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Extract branch
shell: bash
id: current_branch
run: |
if [[ ! "${{ github.ref }}" = "refs/tags/"* ]]; then
if [[ "${{ github.event_name }}" = "pull_request" ]]; then
HEAD_REF=$(printf "%q" "${{ github.head_ref }}")
HEAD_REF=${HEAD_REF/refs\/heads\//}
BRANCH=$HEAD_REF
else
REF=$(printf "%q" "${{ github.ref }}")
REF_BRANCH=${REF/refs\/pull\//}
REF_BRANCH=${REF_BRANCH/refs\/heads\//}
BRANCH=$REF_BRANCH
fi
else
REF=$(printf "%q" "${{ github.ref }}")
REF_BRANCH=${REF/refs\/tags\//}
BRANCH=$REF_BRANCH
fi
echo "::set-output name=value::$BRANCH"
- name: Extract GitHub HEAD SHA
id: head_sha
run: echo "::set-output name=value::$(git rev-parse HEAD)"
- name: Get Docker image tag
id: get_tag
env:
CURRENT_BRANCH: ${{ steps.current_branch.outputs.value }}
run: |
short_sha="$(git rev-parse --short HEAD)"
branch_tag="$(echo "$CURRENT_BRANCH" | sed 's/[^a-zA-Z0-9]/-/g' | sed 's/--*/-/g' | sed 's/-$//g')"
echo "::set-output name=image_tag::$branch_tag-$short_sha"
echo "::set-output name=branch_tag::$branch_tag-$short_sha"
- name: Determine Dockerfile
id: determine_dockerfile
run: |
if [[ "${{ steps.current_branch.outputs.value }}" == v1* ]]; then
echo "::set-output name=dockerfile::Dockerfile"
elif [[ "${{ steps.current_branch.outputs.value }}" == v2* ]]; then
echo "::set-output name=dockerfile::Dockerfile-v2"
else
echo "::set-output name=dockerfile::Dockerfile" # Default to Dockerfile if not v1 or v2
fi
lint:
name: Run golangci-lint
runs-on: [ubuntu-22.04]
needs:
- prepare
steps:
- name: Add git config for Go private module
run: git config --global url."https://${{ secrets.GH_PAT }}:[email protected]/".insteadOf https://github.com/
- name: Checkout
uses: actions/checkout@v3
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: "1.22.x"
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.55.2
args: --config=.golangci.yml
skip-pkg-cache: true
skip-build-cache: true
test:
runs-on: [ubuntu-22.04]
services:
postgres:
image: postgres:14-alpine
env:
POSTGRES_PASSWORD: test
POSTGRES_USER: test
POSTGRES_DB: test
# options: >-
# --health-cmd pg_isready
# --health-interval 10s
# --health-timeout 5s
# --health-retries 5
ports:
- 5432:5432
needs:
- prepare
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: "1.22.x"
- name: Run test
run: go test -race -v ./...
docker:
name: Docker
runs-on: [ ubuntu-22.04 ]
needs: [ prepare, lint, test ]
env:
SERVICE: tradelogs
BRANCH_TAG: ${{ needs.prepare.outputs.current_branch }}
COMMIT_TAG: ${{ needs.prepare.outputs.commit_tag }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Prepare images
id: images
shell: bash
env:
COMMIT_TAG: ${{ needs.prepare.outputs.commit_tag }}
VERSION_TAG: ${{ needs.prepare.outputs.version_tag }}
BRANCH_TAG: ${{ needs.prepare.outputs.current_branch }}
run: |
ls -l
# ===== for docker.io =====
# DOCKER_REPO="kybernetwork/$SERVICE"
#
# COMBINE_TAG="$DOCKER_REPO:$BRANCH_TAG-$COMMIT_TAG"
# echo "::set-output name=combine::$COMBINE_TAG"
#
# IMAGE_WITH_BRANCH_TAG="$DOCKER_REPO:$BRANCH_TAG"
# echo "::set-output name=branch::$IMAGE_WITH_BRANCH_TAG"
#
# [[ -n "$VERSION_TAG" ]] || exit 0
# IMAGE_WITH_VERSION_TAG="$DOCKER_REPO:$VERSION_TAG"
# echo "::set-output name=version::$IMAGE_WITH_VERSION_TAG"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
if: github.event_name != 'pull_request'
# ===== for docker.io =====
# - name: Docker login
# uses: docker/login-action@v1
# with:
# username: ${{ secrets.DOCKER_USERNAME }}
# password: ${{ secrets.DOCKER_TOKEN }}
# if: github.event_name != 'pull_request'
- name: Gcloud Auth
uses: google-github-actions/auth@v0
with:
credentials_json: '${{ secrets.GCR_CREDENTIALS }}'
- name: Setup Gcloud SDK
uses: google-github-actions/setup-gcloud@v0
- name: Configure docker
run: gcloud auth configure-docker
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-${{ env.SERVICE }}-buildx
if: github.event_name != 'pull_request'
- name: Build and push
uses: docker/build-push-action@v3
with:
context: .
file: ${{ needs.prepare.outputs.dockerfile_path }} # Use the corresponding Dockerfile version
push: true
labels: |
commit=${{ github.sha }}
tags: |
${{ needs.prepare.outputs.image_name }}:${{ needs.prepare.outputs.image_tag }}
${{ needs.prepare.outputs.image_name }}:${{ needs.prepare.outputs.branch_tag }}
# ===== for docker.io =====
# ${{ steps.images.outputs.branch }}
# ${{ steps.images.outputs.combine }}
# ${{ steps.images.outputs.version }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
if: github.event_name != 'pull_request'
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
if: github.event_name != 'pull_request'