Skip to content

Promote dev to test #15

Promote dev to test

Promote dev to test #15

Workflow file for this run

name: "TEST: Build Promote"
on:
push:
branches:
- 'test'
permissions:
actions: read # for detecting the Github Actions environment.
id-token: write # for creating OIDC tokens for signing.
packages: write # for uploading attestations.
contents: read
pull-requests: read # merged PR lookup (dev → test) when resolving dev tip SHA
security-events: write # Required for uploading code scanning.
env:
JF_RT_URL: "https://psazuse.jfrog.io"
JOB_SUMMARY: false
CLI_LOG_LEVEL: DEBUG # DEBUG, INFO, WARN, ERROR
DEFAULT_WORKSPACE: "${{github.workspace}}"
REPO_LOCAL_TEST: "prbranch-bpr-test-local"
# Must match .github/workflows/build-create.yml (DEV publish uses these for build-info)
BUILD_NAME: "prbranch-bpr-app"
jobs:
buildPromote2Test:
name: "Promote: DEV to TEST"
runs-on: ubuntu-latest
env:
BAD_DEPS_DIR: "${{ github.workspace }}/.jfrog/bad-deps"
ENV: "test"
defaults:
run:
working-directory: "${{env.DEFAULT_WORKSPACE}}"
# This will evaluate to true for "TEST", "Test", or "test"
if: ${{ github.ref_name == 'test' }}
steps:
- name: "Setup JFrog CLI"
uses: jfrog/setup-jfrog-cli@v4 #
id: jfrog-cli
env:
JF_URL: ${{env.JF_RT_URL}}
JFROG_CLI_LOG_LEVEL: ${{env.CLI_LOG_LEVEL}}
with:
version: latest
oidc-provider-name: ${{vars.JF_OIDC_PROVIDER_NAME}}
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: "Build id"
run: |
chmod -R 755 **/*
echo "BUILD_ID=$(git rev-parse --short origin/dev)" >> $GITHUB_ENV
echo "DEV_SHORT_COMMITCODE=$(git rev-parse --short origin/dev)" >> $GITHUB_ENV
echo "TEST_SHORT_COMMITCODE=$(git rev-parse --short origin/test)" >> $GITHUB_ENV
- name: "Xray: build scan"
continue-on-error: true
run: |
jf bs ${{env.BUILD_NAME}} ${{env.BUILD_ID}} --format=table --extended-table --vuln --rescan
- name: "Promote to TEST"
env:
STATUS_COMMENT: "Promoted from DEV ${{ env.DEV_SHORT_COMMITCODE }} to TEST ${{ env.TEST_SHORT_COMMITCODE }}"
run: |
jf rt bpr "${{ env.BUILD_NAME }}" "${{ env.BUILD_ID }}" "${{ env.REPO_LOCAL_TEST }}" --status="${{ env.STATUS_COMMENT }}" --include-dependencies --copy
- name: "Promote Summary"
env:
BUILD_INFO_FILE: "./build-info.json"
BUILD_INFO_URL: "${{env.JF_RT_URL}}/ui/builds/${{env.BUILD_NAME}}/?buildRepo=artifactory-build-info"
run: |
echo "# :frog: Promote DEV 2 QA Summary :pushpin:" >> $GITHUB_STEP_SUMMARY
echo " " >> $GITHUB_STEP_SUMMARY
echo " " >> $GITHUB_STEP_SUMMARY
echo " - Build name: ${{env.BUILD_NAME}}" >> $GITHUB_STEP_SUMMARY
echo " - DEV commited build-id: ${{env.DEV_SHORT_COMMITCODE}}" >> $GITHUB_STEP_SUMMARY
echo " - DEV to TEST merge id: ${{env.TEST_SHORT_COMMITCODE}}" >> $GITHUB_STEP_SUMMARY
echo " - URL: [${{env.BUILD_INFO_URL}}](${{env.BUILD_INFO_URL}})" >> $GITHUB_STEP_SUMMARY
echo " " >> $GITHUB_STEP_SUMMARY
echo "### Promotion statuses" >> $GITHUB_STEP_SUMMARY
echo " " >> $GITHUB_STEP_SUMMARY
jf rt curl -sf "api/build/${{env.BUILD_NAME}}/${{env.BUILD_ID}}" >"${{env.BUILD_INFO_FILE}}"
echo "Build info: ${{env.BUILD_INFO_FILE}}"
jq -r '.buildInfo.statuses[]? | .status' "${{env.BUILD_INFO_FILE}}" > BUILD_STATUS_RESP
echo "| Timestamp (UTC) | Status | User | " >> $GITHUB_STEP_SUMMARY
echo "| :------ | :------ | :------ | " >> $GITHUB_STEP_SUMMARY
while IFS= read -r item; do
statusVal=$(echo "$item" | jq -r '.status')
tsVal=$(echo "$item" | jq -r '.timestamp')
usrVal=$(echo "$item" | jq -r '.user')
echo "| ${tsVal} | ${statusVal} | ${usrVal} | " >> $GITHUB_STEP_SUMMARY
done < <(jq -c '.buildInfo.statuses[]?' "${{env.BUILD_INFO_FILE}}")