Skip to content

fixes #2625 Cherry picked the changes from develop-go to release-2.0.x #4886

fixes #2625 Cherry picked the changes from develop-go to release-2.0.x

fixes #2625 Cherry picked the changes from develop-go to release-2.0.x #4886

Workflow file for this run

name: Go Package upon a push
on:
release:
types: [published]
pull_request:
types: [opened, reopened, synchronize]
workflow_dispatch:
inputs:
message:
description: "Message for manually triggering"
required: false
default: "Triggered for Updates"
type: string
push:
branches:
- "!release-branch"
- master
- develop
- develop-go
- release*
jobs:
build_go_esignet:
uses: mosip/kattu/.github/workflows/go-build.yml@master
with:
SERVICE_LOCATION: ./esignet-service
BUILD_BINARY: esignet
GO_VERSION: "1.26"
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
sonar_analysis_go_esignet:
needs: build_go_esignet
if: "${{ github.event_name != 'pull_request' }}"
uses: mosip/kattu/.github/workflows/go-sonar-analysis.yml@develop
with:
SERVICE_LOCATION: ./esignet-service
GO_VERSION: '1.26'
SONAR_EXCLUSIONS: '**/vendor/**,**/*_test.go,internal/clientmgmt/db/**,internal/consentmgmt/db/**,internal/keymanager/db/**'
secrets:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
ORG_KEY: ${{ secrets.ORG_KEY }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
build_dockers_esignet:
needs: build_go_esignet
strategy:
matrix:
include:
- SERVICE_LOCATION: "esignet-service"
SERVICE_NAME: "esignet"
ONLY_DOCKER: true
PLATFORMS: "linux/amd64,linux/arm64"
fail-fast: false
name: ${{ matrix.SERVICE_NAME }}
uses: mosip/kattu/.github/workflows/docker-build.yml@master
with:
SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }}
SERVICE_NAME: ${{ matrix.SERVICE_NAME }}
ONLY_DOCKER: ${{ matrix.ONLY_DOCKER }}
PLATFORMS: ${{ matrix.PLATFORMS }}
secrets:
DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }}
ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }}
RELEASE_DOCKER_HUB: ${{ secrets.RELEASE_DOCKER_HUB }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
build-oidc-ui:
uses: mosip/kattu/.github/workflows/npm-build.yml@develop
with:
SERVICE_LOCATION: oidc-ui
BUILD_ARTIFACT: oidc
NPM_BUILD_TYPE: BOB
NODE_VERSION: "22"
ZIP_DIR: dist
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
sonar-analysis-oidc-ui:
needs: build-oidc-ui
if: "${{ github.event_name != 'pull_request' }}"
uses: mosip/kattu/.github/workflows/npm-sonar-analysis.yml@develop
with:
SERVICE_LOCATION: oidc-ui
NODE_VERSION: "22"
secrets:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
ORG_KEY: ${{ secrets.ORG_KEY }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
build_dockers_oidc_ui:
strategy:
matrix:
include:
- SERVICE_LOCATION: "oidc-ui"
SERVICE_NAME: "oidc-ui"
SQUASH_LAYERS: "13"
fail-fast: false
name: ${{ matrix.SERVICE_NAME }}
uses: mosip/kattu/.github/workflows/docker-build.yml@master-java21
with:
SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }}
SERVICE_NAME: ${{ matrix.SERVICE_NAME }}
SQUASH_LAYERS: ${{ matrix.SQUASH_LAYERS }}
secrets:
DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }}
ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }}
RELEASE_DOCKER_HUB: ${{ secrets.RELEASE_DOCKER_HUB }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
build-maven-uitest-esignet:
uses: mosip/kattu/.github/workflows/maven-build.yml@master-java21
with:
SERVICE_LOCATION: ./ui-test
BUILD_ARTIFACT: uitest-esignet
MAVEN_NON_EXEC_ARTIFACTS: "uitest-esignet.jar"
secrets:
OSSRH_USER: ${{ secrets.OSSRH_USER }}
OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}
OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}
GPG_SECRET: ${{ secrets.GPG_SECRET }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
build-dockers-uitest-esignet:
needs: build-maven-uitest-esignet
strategy:
matrix:
include:
- SERVICE_LOCATION: 'ui-test'
SERVICE_NAME: 'uitest-esignet'
BUILD_ARTIFACT: 'uitest-esignet'
PLATFORMS: "linux/amd64"
fail-fast: false
name: ${{ matrix.SERVICE_NAME }}
uses: mosip/kattu/.github/workflows/docker-build.yml@master-java21
with:
SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }}
SERVICE_NAME: ${{ matrix.SERVICE_NAME }}
BUILD_ARTIFACT: ${{ matrix.BUILD_ARTIFACT }}
PLATFORMS: ${{ matrix.PLATFORMS }}
secrets:
DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }}
ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }}
RELEASE_DOCKER_HUB: ${{ secrets.RELEASE_DOCKER_HUB }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
# api-test: two Go modules (stdlib-only parent + nested api/, godog+gjson) in
# one directory, so this stays a plain build/vet job rather than the
# single-module go-build.yml reusable workflow (mirrors build_maven_apitest_esignet
# from the retired Java rig — mosip/esignet#2209).
build_go_apitest:
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-go@v5
with:
go-version: "1.26"
# gofmt is checked explicitly: go vet does not look at formatting, and an
# unformatted file merges cleanly and then shows up as noise in the next
# PR's diff.
- name: gofmt
working-directory: api-test
run: |
unformatted="$(gofmt -l . )"
if [ -n "$unformatted" ]; then
echo "::error::gofmt needed on:"; echo "$unformatted"
gofmt -d .
exit 1
fi
- name: build + vet + test (parent module)
working-directory: api-test
run: |
go build ./...
go vet ./...
go test ./...
# The api module's TestFeatures drives a live eSignet, so it is excluded
# here: CI has no deployment to point it at. Everything else in the module
# (step helpers, assertions, envelope writing) is unit-testable and runs.
- name: vet + test (api module)
working-directory: api-test/api
run: |
go vet ./...
go test ./... -skip TestFeatures
# Image build/publish only — same reusable workflow, same secrets, as every
# other service image above. Scheduled test execution runs externally
# against this image (Rancher docker run), not in GitHub Actions.
build_dockers_apitest:
needs: build_go_apitest
strategy:
matrix:
include:
- SERVICE_LOCATION: "api-test"
SERVICE_NAME: "apitest-esignet"
ONLY_DOCKER: true
PLATFORMS: "linux/amd64,linux/arm64"
fail-fast: false
name: ${{ matrix.SERVICE_NAME }}
uses: mosip/kattu/.github/workflows/docker-build.yml@master
with:
SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }}
SERVICE_NAME: ${{ matrix.SERVICE_NAME }}
ONLY_DOCKER: ${{ matrix.ONLY_DOCKER }}
PLATFORMS: ${{ matrix.PLATFORMS }}
secrets:
DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }}
ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }}
RELEASE_DOCKER_HUB: ${{ secrets.RELEASE_DOCKER_HUB }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}