Update on endpoints, order types, and unit tests #1541
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: [push, pull_request] | |
name: CI | |
env: | |
GO_VERSION: 1.23.x | |
jobs: | |
backend-psql: | |
name: GoCryptoTrader back-end | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
goarch: amd64 | |
psql: true | |
skip_wrapper_tests: false | |
- os: ubuntu-latest | |
goarch: 386 | |
psql: true | |
skip_wrapper_tests: true | |
- os: macos-latest | |
goarch: amd64 | |
psql: true | |
skip_wrapper_tests: true | |
- os: macos-13 # beta | |
goarch: amd64 | |
psql: true | |
skip_wrapper_tests: true | |
- os: windows-latest | |
goarch: amd64 | |
psql: true | |
skip_wrapper_tests: true | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Cancel previous workflow runs | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Setup Postgres | |
if: matrix.psql == true | |
uses: ikalnytskyi/action-setup-postgres@v7 | |
with: | |
database: gct_dev_ci | |
id: postgres | |
- name: Set up Postgres environment | |
if: matrix.psql == true | |
run: | | |
echo "PSQL_USER=postgres" >> $GITHUB_ENV | |
echo "PSQL_PASS=postgres" >> $GITHUB_ENV | |
echo "PSQL_HOST=localhost" >> $GITHUB_ENV | |
echo "PSQL_DBNAME=gct_dev_ci" >> $GITHUB_ENV | |
echo "PSQL_TESTDBNAME=gct_dev_ci" >> $GITHUB_ENV | |
echo "PSQL_SSLMODE=disable" >> $GITHUB_ENV | |
echo "PSQL_SKIPSQLCMD=true" >> $GITHUB_ENV | |
shell: bash | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
- name: Skip additional wrapper CI tests | |
if: matrix.skip_wrapper_tests == true | |
run: | | |
echo "SKIP_WRAPPER_CI_TESTS=true" >> $GITHUB_ENV | |
shell: bash | |
- name: Additional steps for 386 architecture | |
if: matrix.goarch == '386' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gcc-multilib | |
shell: bash | |
- name: Set CGO_ENABLED for 386 and macos-latest | |
if: matrix.goarch == '386' || matrix.os == 'macos-latest' | |
run: | | |
echo "CGO_ENABLED=1" >> $GITHUB_ENV | |
shell: bash | |
- name: Test | |
run: | # PGSERVICEFILE isn't supported by lib/pq and will cause a panic if set | |
unset PGSERVICEFILE | |
if [ "${{ matrix.goarch }}" = "386" ]; then | |
go test -coverprofile coverage.txt -covermode atomic ./... | |
else | |
go test -race -coverprofile coverage.txt -covermode atomic ./... | |
fi | |
shell: bash | |
env: | |
GOARCH: ${{ matrix.goarch }} | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
backend-arm64: | |
name: GoCryptoTrader back-end (ubuntu-latest, arm64, false, true) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cancel previous workflow runs | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: linux/arm64 | |
- name: Set up Docker buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Cache Docker layers | |
uses: actions/cache@v4 | |
with: | |
path: /tmp/.docker-buildx-cache | |
key: ${{ runner.os }}-docker-buildx-${{ hashFiles('./.github/workflows/arm64.Dockerfile') }}-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-docker-buildx-${{ hashFiles('./.github/workflows/arm64.Dockerfile') }}- | |
${{ runner.os }}-docker-buildx- | |
- name: Build Docker image | |
run: | | |
docker buildx build \ | |
--load \ | |
--platform linux/arm64 \ | |
--cache-to=type=local,dest=/tmp/.docker-buildx-cache,mode=max \ | |
--cache-from=type=local,src=/tmp/.docker-buildx-cache \ | |
--tag gct-backend-arm64 \ | |
-f ./.github/workflows/arm64.Dockerfile \ | |
. | |
- name: Run Docker image | |
run: | | |
docker run --platform linux/arm64 --env SKIP_WRAPPER_CI_TESTS=true --env CI=true --env GCT_DOCKER_CI=true --rm gct-backend-arm64 | |
frontend: | |
name: GoCryptoTrader front-end | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cancel previous workflow runs | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '10.8.x' | |
cache: 'npm' | |
cache-dependency-path: web/package-lock.json | |
- name: Build | |
run: | | |
cd web/ | |
npm install | |
npm run lint | |
npm run build |