Skip to content

Kraken: Subscription templating #1902

Kraken: Subscription templating

Kraken: Subscription templating #1902

Workflow file for this run

on: [push, pull_request]
name: CI
env:
GO_VERSION: 1.22.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@v6
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 --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