-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a77fb78
commit 0b33ac1
Showing
1 changed file
with
271 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,271 @@ | ||
# v3.800.4 | ||
# https://virtocommerce.atlassian.net/browse/VCST-488 | ||
name: Module CI common | ||
|
||
on: | ||
workflow_dispatch: | ||
push: | ||
paths-ignore: | ||
- '.github/**' | ||
- 'docs/**' | ||
- 'build/**' | ||
- 'README.md' | ||
- 'LICENSE' | ||
- '**/argoDeploy.json' | ||
- '**/cloudDeploy.json' | ||
- samples/** | ||
branches: | ||
[master, dev] | ||
pull_request: | ||
branches: | ||
[master, dev] | ||
paths-ignore: | ||
- 'docs/**' | ||
- 'build/**' | ||
- 'README.md' | ||
- 'LICENSE' | ||
- '**/argoDeploy.json' | ||
- '**/cloudDeploy.json' | ||
- samples/** | ||
|
||
jobs: | ||
ci: | ||
if: ${{ github.actor != 'dependabot[bot]' && | ||
(github.event.pull_request.head.repo.full_name == github.repository || | ||
github.event.pull_request.head.repo.full_name == '') }} # Check that PR not from forked repo and not from Dependabot | ||
runs-on: ubuntu-20.04 | ||
env: | ||
CLOUD_INSTANCE_BASE_URL: ${{secrets.CLOUD_INSTANCE_BASE_URL}} | ||
CLIENT_ID: ${{secrets.CLIENT_ID}} | ||
CLIENT_SECRET: ${{secrets.CLIENT_SECRET}} | ||
SONAR_TOKEN: ${{secrets.SONAR_TOKEN}} | ||
GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }} | ||
NUGET_KEY: ${{ secrets.NUGET_KEY }} | ||
BLOB_SAS: ${{ secrets.BLOB_TOKEN }} | ||
VERSION_SUFFIX: '' | ||
BUILD_STATE: 'failed' | ||
RELEASE_STATUS: 'false' | ||
|
||
outputs: | ||
artifactUrl: ${{ steps.artifactUrl.outputs.download_url }} | ||
blobId: ${{ steps.blobRelease.outputs.blobId }} | ||
jira-keys: ${{ steps.jira_keys.outputs.jira-keys }} | ||
version: ${{ steps.artifact_ver.outputs.shortVersion }} | ||
moduleId: ${{ steps.artifact_ver.outputs.moduleId }} | ||
matrix: ${{ steps.deployment-matrix.outputs.matrix }} | ||
run-e2e: ${{ steps.run-e2e.outputs.result }} | ||
|
||
steps: | ||
|
||
- name: Set up Node 20 | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: '20' | ||
|
||
- name: Set up Java 17 | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: 'temurin' | ||
java-version: '17' | ||
|
||
- name: Set RELEASE_STATUS | ||
if: ${{ (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main') && github.event_name == 'push' }} | ||
run: | | ||
echo "RELEASE_STATUS=true" >> $GITHUB_ENV | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Install VirtoCommerce.GlobalTool | ||
uses: VirtoCommerce/vc-github-actions/setup-vcbuild@VCST-571 | ||
|
||
- name: Install dotnet-sonarscanner | ||
run: dotnet tool install --global dotnet-sonarscanner | ||
|
||
- name: Get Changelog | ||
id: changelog | ||
uses: VirtoCommerce/vc-github-actions/changelog-generator@VCST-571 | ||
|
||
- name: Get Artifact Version | ||
uses: VirtoCommerce/vc-github-actions/get-image-version@VCST-571 | ||
id: artifact_ver | ||
|
||
- name: Set VERSION_SUFFIX variable | ||
run: | | ||
if [ '${{ github.event_name }}' = 'workflow_dispatch' ]; then | ||
echo "VERSION_SUFFIX=${{ steps.artifact_ver.outputs.fullSuffix }}" >> $GITHUB_ENV | ||
else | ||
echo "VERSION_SUFFIX=${{ steps.artifact_ver.outputs.suffix }}" >> $GITHUB_ENV | ||
fi; | ||
- name: Add version suffix | ||
if: ${{ github.ref != 'refs/heads/master' || github.ref != 'refs/heads/main' }} | ||
uses: VirtoCommerce/vc-github-actions/add-version-suffix@VCST-571 | ||
with: | ||
versionSuffix: ${{ env.VERSION_SUFFIX }} | ||
|
||
- name: SonarCloud Begin | ||
uses: VirtoCommerce/vc-github-actions/sonar-scanner-begin@VCST-571 | ||
with: | ||
repoOrg: ${{ github.repository_owner }} | ||
sonarOrg: ${{secrets.SONAR_ORG_KEY}} | ||
|
||
- name: Build | ||
run: vc-build Compile | ||
|
||
- name: Unit Tests | ||
run: vc-build Test -skip | ||
|
||
- name: SonarCloud End | ||
uses: VirtoCommerce/vc-github-actions/sonar-scanner-end@VCST-571 | ||
|
||
- name: Quality Gate | ||
uses: VirtoCommerce/vc-github-actions/sonar-quality-gate@VCST-571 | ||
with: | ||
login: ${{secrets.SONAR_TOKEN}} | ||
|
||
- name: Packaging | ||
run: vc-build Compress -skip Clean+Restore+Compile+Test | ||
|
||
- name: Publish Nuget | ||
if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }} | ||
uses: VirtoCommerce/vc-github-actions/publish-nuget@VCST-571 | ||
|
||
- name: Publish to Blob | ||
if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev' || github.event_name == 'pull_request' || (github.event_name == 'workflow_dispatch' && github.ref != 'refs/heads/master') || (github.event_name == 'workflow_dispatch' && github.ref != 'refs/heads/main') }} | ||
id: blobRelease | ||
uses: VirtoCommerce/vc-github-actions/publish-blob-release@VCST-571 | ||
with: | ||
blobSAS: ${{ secrets.BLOB_TOKEN }} | ||
blobUrl: ${{ vars.BLOB_URL }} | ||
|
||
- name: Add Jira link | ||
if: ${{ github.event_name == 'pull_request' }} | ||
uses: VirtoCommerce/vc-github-actions/publish-jira-link@VCST-571 | ||
with: | ||
branchName: ${{ github.head_ref }} | ||
repoOrg: ${{ github.repository_owner }} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Add link to PR | ||
if: ${{ github.event_name == 'pull_request' }} | ||
uses: VirtoCommerce/vc-github-actions/publish-artifact-link@VCST-571 | ||
with: | ||
artifactUrl: ${{ steps.blobRelease.outputs.packageUrl }} | ||
repoOrg: ${{ github.repository_owner }} | ||
downloadComment: 'Artifact URL:' | ||
|
||
- name: Publish Github Release | ||
if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }} | ||
id: githubRelease | ||
with: | ||
changelog: ${{ steps.changelog.outputs.changelog }} | ||
organization: ${{ github.repository_owner }} | ||
uses: VirtoCommerce/vc-github-actions/publish-github-release@VCST-571 | ||
|
||
- name: Set artifactUrl value | ||
id: artifactUrl | ||
run: | | ||
if [ '${{ github.ref }}' = 'refs/heads/master' ] || [ '${{ github.ref }}' = 'refs/heads/main' ]; then | ||
echo "download_url=${{ steps.githubRelease.outputs.downloadUrl }}" >> $GITHUB_OUTPUT | ||
else | ||
echo "download_url=${{ steps.blobRelease.outputs.packageUrl }}" >> $GITHUB_OUTPUT | ||
fi; | ||
- name: Create deployment matrix | ||
if: ${{ github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }} | ||
uses: VirtoCommerce/vc-github-actions/cloud-create-deploy-matrix@VCST-571 | ||
id: deployment-matrix | ||
with: | ||
deployConfigPath: '.deployment/module/cloudDeploy.json' | ||
releaseBranch: 'master' | ||
|
||
- name: Check commit message for version number | ||
id: run-e2e | ||
run: | | ||
if [[ "${{ github.event.head_commit.message }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; | ||
then | ||
echo "result=false" >> $GITHUB_OUTPUT | ||
else | ||
echo "result=true" >> $GITHUB_OUTPUT | ||
fi | ||
- name: Setup Git Credentials | ||
if: ${{ (github.ref == 'refs/heads/dev' && github.event_name != 'workflow_dispatch') || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }} | ||
uses: VirtoCommerce/vc-github-actions/setup-git-credentials-github@VCST-571 | ||
with: | ||
githubToken: ${{ secrets.REPO_TOKEN }} | ||
|
||
- name: Publish Manifest | ||
if: ${{ (github.ref == 'refs/heads/dev' && github.event_name != 'workflow_dispatch') || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }} | ||
uses: VirtoCommerce/vc-github-actions/publish-manifest@VCST-571 | ||
with: | ||
packageUrl: ${{ steps.artifactUrl.outputs.download_url }} | ||
|
||
- name: Parse Jira Keys from All Commits | ||
uses: VirtoCommerce/vc-github-actions/get-jira-keys@VCST-571 | ||
if: always() | ||
id: jira_keys | ||
with: | ||
release: ${{ env.RELEASE_STATUS }} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Push Build Info to Jira | ||
if: ${{ env.CLOUD_INSTANCE_BASE_URL != 0 && env.CLIENT_ID != 0 && env.CLIENT_SECRET != 0 && steps.jira_keys.outputs.jira-keys != '' && always() }} | ||
id: push_build_info_to_jira | ||
uses: VirtoCommerce/jira-upload-build-info@master | ||
with: | ||
cloud-instance-base-url: '${{ secrets.CLOUD_INSTANCE_BASE_URL }}' | ||
client-id: '${{ secrets.CLIENT_ID }}' | ||
client-secret: '${{ secrets.CLIENT_SECRET }}' | ||
pipeline-id: '${{ github.repository }} ${{ github.workflow }}' | ||
build-number: ${{ github.run_number }} | ||
build-display-name: 'Workflow: ${{ github.workflow }} (#${{ github.run_number }})' | ||
build-state: '${{ env.BUILD_STATE }}' | ||
build-url: '${{github.event.repository.url}}/actions/runs/${{github.run_id}}' | ||
update-sequence-number: '${{ github.run_id }}' | ||
last-updated: '${{github.event.head_commit.timestamp}}' | ||
issue-keys: '${{ steps.jira_keys.outputs.jira-keys }}' | ||
commit-id: '${{ github.sha }}' | ||
repo-url: '${{ github.event.repository.url }}' | ||
build-ref-url: '${{ github.event.repository.url }}/actions/runs/${{ github.run_id }}' | ||
|
||
- name: Confirm Jira Build Output | ||
if: success() | ||
run: | | ||
echo "Jira Upload Build Info response: ${{ steps.push_build_info_to_jira.outputs.response }}" | ||
module-katalon-tests: | ||
if: ${{ ((github.ref == 'refs/heads/dev') && (github.event_name == 'push') && (needs.ci.outputs.run-e2e == 'true')) || | ||
(github.event_name == 'workflow_dispatch')}} | ||
needs: 'ci' | ||
uses: VirtoCommerce/.github/.github/workflows/e2e.yml@VCST-571 | ||
with: | ||
katalonRepo: 'VirtoCommerce/vc-quality-gate-katalon' | ||
katalonRepoBranch: 'dev' | ||
testSuite: 'Test Suites/Modules/Platform_collection' | ||
installModules: 'true' | ||
installCustomModule: 'true' | ||
customModuleId: ${{ needs.ci.outputs.moduleId }} | ||
customModuleUrl: ${{ needs.ci.outputs.artifactUrl }} | ||
platformDockerTag: 'dev-linux-latest' | ||
storefrontDockerTag: 'dev-linux-latest' | ||
secrets: | ||
envPAT: ${{ secrets.REPO_TOKEN }} | ||
katalonApiKey: ${{ secrets.KATALON_API_KEY }} | ||
|
||
deploy-cloud: | ||
if: ${{ (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev') && github.event_name == 'push' }} | ||
needs: ci | ||
uses: VirtoCommerce/.github/.github/workflows/deploy-cloud.yml@VCST-571 | ||
with: | ||
releaseSource: module | ||
moduleId: ${{ needs.ci.outputs.moduleId }} | ||
moduleVer: ${{ needs.ci.outputs.version }} | ||
moduleBlob: ${{ needs.ci.outputs.blobId }} | ||
jiraKeys: ${{ needs.ci.outputs.jira-keys }} | ||
argoServer: 'argo.virtocommerce.cloud' | ||
matrix: '{"include":${{ needs.ci.outputs.matrix }}}' | ||
secrets: inherit |