Skip to content

ci

ci #3144

Workflow file for this run

name: ci
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 0 * * *' # Runs every day at 00:00 UTC
jobs:
gotest:
name: Test Backend
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.x
uses: actions/setup-go@v5
with:
go-version: "1.22"
id: go
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Build
run: go build -v ./...
- name: gofmt
run: |
GOFMTOUT=$(gofmt -l .)
if [[ ! -z "${GOFMTOUT}" ]]; then
echo "FATAL: gofmt violation(s), please fix"
echo $GOFMTOUT
exit -1
fi
- name: go vet
run: go vet ./...
- name: Test
run: |
docker run --rm -d -v $(pwd)/backend/schema.sql:/docker-entrypoint-initdb.d/schema.sql -e MYSQL_DATABASE=dev-db -e MYSQL_ROOT_PASSWORD=dev-root-password -e MYSQL_USER=dev-user -e MYSQL_PASSWORD=dev-user-password -p3306:3306 mysql
while ! mysqladmin ping -h"127.0.0.1" --silent; do
sleep 1
done
go test -v ./...
build_push:
name: Build and Push
needs: [gotest]
strategy:
matrix:
service: [frontend,web,api,init]
fail-fast: false
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Docker meta
id: docker_meta
uses: docker/metadata-action@v5.5.1
with:
images: ashirt/${{ matrix.service }} # list of Docker images to use as base name for tags
tags: |
type=sha
type=ref,event=branch
type=ref,event=pr
flavor: |
latest=false
- name: Login to Docker Hub
uses: docker/login-action@v3.3.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3.6.1
- name: Build and Push PR
if: github.ref != 'refs/heads/main'
uses: docker/build-push-action@v6.5.0
with:
context: .
file: Dockerfile.prod.${{ matrix.service }}
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
push: true # Push with pr-### and sha-xxxxxxx tags
- name: Build and Push Latest
if: github.ref == 'refs/heads/main'
uses: docker/build-push-action@v6.5.0
with:
context: .
file: Dockerfile.prod.${{ matrix.service }}
tags: ${{ steps.docker_meta.outputs.tags }}, ashirt/${{ matrix.service }}:latest #Add latest tag for main
labels: ${{ steps.docker_meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
push: true