name: CI on: push: branches: ["master"] jobs: api-build: name: API runs-on: ubuntu-latest container: golang:1.19-bullseye timeout-minutes: 15 services: bucket: image: minio/minio:edge-cicd env: MINIO_ROOT_USER: root MINIO_ROOT_PASSWORD: verysecurepassword MINIO_ACCESS_KEY: minio_access_key MINIO_SECRET_KEY: minio_access_key ports: - 9000:9000 options: >- --health-cmd "curl -f http://bucket:9000/minio/health/live" --health-interval 45s --health-timeout 30s --health-retries 10 --health-start-period 120s volumes: - minio-data:/data redis: image: redis:6-bullseye ports: - 6379:6379 defaults: run: working-directory: ./api steps: - name: Checkout code uses: actions/checkout@v2 - name: Installling dependencies run: go mod download - name: Build run: go build main.go - name: Run test & coverage run: go test -v -race -coverprofile=coverage.out -covermode=atomic ./... env: ENV: development PORT: 5000 MINIO_HOST: bucket:9000 MINIO_ACCESS_ID: root MINIO_SECRET_KEY: verysecurepassword REDIS_URL: redis://@redis:6379 - name: Initialize CodeQL uses: github/codeql-action/init@v1 with: languages: go - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v1 - name: Create Sentry release uses: getsentry/action-release@v1 env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_TOKEN }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT_API}} with: environment: production set_commits: skip version: ${{ github.sha }} - uses: codecov/codecov-action@v2 with: flags: api client-build: name: Client runs-on: ubuntu-latest container: node:18-bullseye timeout-minutes: 15 defaults: run: working-directory: ./client steps: - name: Checkout code uses: actions/checkout@v2 - name: Installling dependencies run: npm install - name: Lint run: npm run lint - name: Build run: npm run build env: VITE_SENTRY_DSN: https://examplePublicKey@o0.ingest.sentry.io/0 VITE_NODE_ENV: development VITE_API_ENDPOINT: https://jokesbapak2.reinaldyrafli.com/api/v1 - name: Initialize CodeQL uses: github/codeql-action/init@v1 with: languages: javascript - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v1 - name: Create Sentry release uses: getsentry/action-release@v1 env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_TOKEN }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT_CLIENT }} with: environment: production set_commits: skip version: ${{ github.sha }}