Skip to content

Feat: Database subset #269

Feat: Database subset

Feat: Database subset #269

Workflow file for this run

name: ci
on:
workflow_dispatch:
push:
branches:
- 'main'
tags:
- 'v*'
pull_request:
paths-ignore:
- 'README.md'
- 'docs/**'
- 'LICENSE'
- 'getting_started.md'
env:
go-version: '1.21.5'
python-version: 'pypy3.10'
cmd-name: 'greenmask'
docker-registry: greenmask/greenmask
jobs:
unit-tests:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.go-version }}
- name: Echo Go version
run: go version
- name: Run tests
run: make tests
integration-tests:
runs-on: ubuntu-22.04
needs:
- unit-tests
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Run integration tests
run: |
docker-compose -f docker-compose-integration.yml -p greenmask up \
--renew-anon-volumes --force-recreate --build --exit-code-from greenmask \
--abort-on-container-exit greenmask
build-binaries:
runs-on: ubuntu-22.04
needs:
- unit-tests
- integration-tests
strategy:
matrix:
platforms:
- 'windows/arm64'
- 'windows/amd64'
- 'darwin/amd64'
- 'darwin/arm64'
- 'linux/amd64'
- 'linux/arm64'
- 'linux/arm/v6'
- 'linux/arm/v7'
- 'linux/ppc64le'
- 'linux/riscv64'
- 'linux/s390x'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.go-version }}
- name: Build with different arch
run: |
export GOOS=$(echo ${{ matrix.platforms }} | cut -d '/' -f 1)
export GOARCH=$(echo ${{ matrix.platforms }} | cut -d '/' -f 2)
export GOARM=$(echo ${{ matrix.platforms }} | cut -d '/' -f 3 | cut -d 'v' -f 2)
if [[ "$GOOS" == "windows" ]]; then
make build CMD_NAME="builds/${{ env.cmd-name }}.exe"
else
make build CMD_NAME="builds/${{ env.cmd-name }}"
fi
- name: Create checksum
if: startsWith(github.ref, 'refs/tags/v')
working-directory: builds
run: |
find . -type f -exec shasum -a 256 -b {} + | sed 's# \*\./# *#' | while read sum file; do echo "$sum $file" > "${file#\*}".sha256; done
- name: Create archive
if: startsWith(github.ref, 'refs/tags/v')
run: |
export GOOS=$(echo ${{ matrix.platforms }} | cut -d '/' -f 1)
export GOARCH=$(echo ${{ matrix.platforms }} | cut -d '/' -f 2)
export GOARM=$(echo ${{ matrix.platforms }} | cut -d '/' -f 3 | cut -d 'v' -f 2)
export ARCHIVE_NAME=$(echo "${{ env.cmd-name }}-${GOOS}-${GOARCH}$(if [ -n "${GOARM}" ]; then echo v${GOARM}; fi).$(if [ "${GOOS}" = "windows" ]; then echo "zip"; else echo "tar.gz"; fi)")
cp LICENSE builds/
cd builds
if [[ "$GOOS" == "windows" ]]; then
zip "${ARCHIVE_NAME}" *
else
tar -czvf "${ARCHIVE_NAME}" *
fi
find . -maxdepth 1 -type f ! -name ${ARCHIVE_NAME} -exec rm -f {} +
- name: GitHub Release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
draft: true
files: builds/*
build-docker-images-and-push:
runs-on: ubuntu-22.04
needs:
- build-binaries
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Get Git tag
id: git_tag
run: echo "TAG=$(git tag --points-at HEAD)" >> $GITHUB_ENV
- name: Build and push
uses: docker/build-push-action@v5
with:
file: docker/greenmask/Dockerfile
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ env.docker-registry }}:${{ env.TAG }},${{ env.docker-registry }}:latest
deploy-docs:
runs-on: self-hosted
needs:
- build-binaries
- build-docker-images-and-push
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: ${{ env.python-version }}
- name: Install dependicies
run: pip install -r requirements.txt
- name: Setup docs deploy
run: |
git config --global user.name "Docs Deployer"
git config --global user.email docs@greenmask.io
echo "TAGS=$(git log --tags --simplify-by-decoration --pretty='format:%d' --since=2024-04-30 | sed '/^$/d' | cut -d ':' -f 2 | cut -d ')' -f 1 | tac | tr '\n' ' ')" >> $GITHUB_ENV
- name: Build docs
run: |
for tag in ${{ env.TAGS }}; do
echo "### CHECKOUT TO ${tag} ###"
git checkout $tag
if [[ "$tag" == *"rc"* || "$tag" == *"dev"* || "$tag" == *"pre"* || "$tag" == *"beta"* || "$tag" == *"b"* ]]; then
mike deploy $tag
else
mike deploy --update-aliases $tag latest
fi
done
- name: Set latest version as default
run: mike set-default latest
- name: Change branch to get html files
run: git checkout gh-pages
- name: Remove old folder
run: sudo rm -rf ${{ secrets.DOCS_DEPLOY_DIR }}/html
- name: Create docs directory
run: sudo mkdir -p ${{ secrets.DOCS_DEPLOY_DIR }}/html
- name: Move html files to docs directory
run: sudo cp -r * ${{ secrets.DOCS_DEPLOY_DIR }}/html
- name: Restart web service
run: sudo systemctl restart nginx