Skip to content

Merge pull request #135 from bstasyszyn/logutil-go #523

Merge pull request #135 from bstasyszyn/logutil-go

Merge pull request #135 from bstasyszyn/logutil-go #523

Workflow file for this run

#
# Copyright SecureKey Technologies Inc. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
name: Build
on:
push:
pull_request:
jobs:
unitTest:
name: Unit test
runs-on: ${{ matrix.os }}
timeout-minutes: 15
strategy:
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
steps:
# for windows-latest os, this step fixes "Windows Subsystem for Linux has no installed distributions." error
# when a makefile tries to execute a shell script (as in "make unit-test" further below).
- name: Rename wsl bash
if: matrix.os == 'windows-latest'
run: |
takeown /F C:\Windows\System32\bash.exe
icacls C:\Windows\System32\bash.exe /grant administrators:F
ren C:\Windows\System32\bash.exe wsl-bash.exe
- name: Setup Go 1.19
uses: actions/setup-go@v2
with:
go-version: 1.19
id: go
- uses: actions/checkout@v2
- name: Run unit test
timeout-minutes: 15
run: make unit-test
- name: Upload coverage to Codecov
timeout-minutes: 10
if: matrix.os == 'ubuntu-latest' && github.repository == 'trustbloc/vct'
uses: codecov/[email protected]
with:
file: ./coverage.out
bddTest:
name: BDD test
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Setup Go 1.19
uses: actions/setup-go@v2
with:
go-version: 1.19
id: go
- uses: actions/checkout@v2
- name: Run bdd test
timeout-minutes: 20
run: make bdd-test
checks:
name: Checks
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- name: Setup Go 1.19
uses: actions/setup-go@v2
with:
go-version: 1.19
- uses: actions/checkout@v2
- name: Run checks
timeout-minutes: 10
run: make checks
publish:
name: Publish image
if: github.event_name == 'push' && (github.repository == 'trustbloc/vct' && github.ref == 'refs/heads/main')
needs: [checks, unitTest]
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v2
with: { fetch-depth: 0 }
- name: Get current published version
run: |
TAG=$(git describe --tags --always `git rev-list --tags --max-count=1`)
VERSION=$(git rev-parse --short=7 HEAD)
if [[ $TAG == $VERSION ]]; then
TAG=v0.0.0
fi
echo "CURRENT_SEMVER=${TAG:1}" >> $GITHUB_ENV
- name: Bump published version
id: bump_version
uses: christian-draeger/[email protected]
with:
current-version: "${{ env.CURRENT_SEMVER }}"
version-fragment: 'rc'
- name: Set ENV vars
run: |
VERSION=$(git rev-parse --short=7 HEAD)
echo "IMAGE_TAG"=v${{ steps.bump_version.outputs.next-version }}-snapshot-$VERSION >> $GITHUB_ENV
echo "IMAGE_PREFIX_VCT"=ghcr.io/trustbloc-cicd/vct >> $GITHUB_ENV
echo "IMAGE_PREFIX_LOG_SERVER"=ghcr.io/trustbloc-cicd/vct-log-server >> $GITHUB_ENV
echo "IMAGE_PREFIX_LOG_SIGNER"=ghcr.io/trustbloc-cicd/vct-log-signer >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to Github Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ secrets.CR_USER }}
password: ${{ secrets.CR_PAT }}
- name: Build and Push container images (vct)
uses: docker/build-push-action@v2
with:
context: .
file: ./images/vct/Dockerfile
platforms: linux/amd64,linux/arm64
build-args: |
ALPINE_VER=3.15
GO_VER=1.19
APP_FOLDER=vct
GO_LDFLAGS=-X 'github.com/trustbloc/orb/pkg/httpserver.BuildVersion=${{ env.IMAGE_TAG }}'
push: true
tags: |
${{ env.IMAGE_PREFIX_VCT }}:${{ env.IMAGE_TAG }}
${{ env.IMAGE_PREFIX_VCT }}:latest
- name: Build and Push container images (log-server)
uses: docker/build-push-action@v2
with:
context: .
file: ./images/vct/Dockerfile
platforms: linux/amd64,linux/arm64
build-args: |
ALPINE_VER=3.15
GO_VER=1.19
APP_FOLDER=log_server
push: true
tags: |
${{ env.IMAGE_PREFIX_LOG_SERVER }}:${{ env.IMAGE_TAG }}
${{ env.IMAGE_PREFIX_LOG_SERVER }}:latest
- name: Build and Push container images (log-signer)
uses: docker/build-push-action@v2
with:
context: .
file: ./images/vct/Dockerfile
platforms: linux/amd64,linux/arm64
build-args: |
ALPINE_VER=3.15
GO_VER=1.19
APP_FOLDER=log_signer
push: true
tags: |
${{ env.IMAGE_PREFIX_LOG_SIGNER }}:${{ env.IMAGE_TAG }}
${{ env.IMAGE_PREFIX_LOG_SIGNER }}:latest