chore(main): release image-scan 1.4.19 #90
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
name: Go merge workflow | |
on: | |
pull_request: | |
types: [closed] | |
branches: | |
- main | |
jobs: | |
prepare_release: | |
runs-on: ubuntu-latest | |
outputs: | |
release_created: ${{ steps.release_action_plan.outputs.releases_created }} | |
tag_name_result: ${{ steps.modify_output.outputs.tag_name_result }} # Rewritten this line | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # | |
- name: Install jq | |
run: sudo apt-get install jq | |
- name: Release Please | |
id: release_action_plan | |
uses: google-github-actions/release-please-action@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
config-file: .github/configuration/release-please-config.json | |
manifest-file: .github/configuration/release-please-manifest.json | |
include-component-in-tag: true | |
- name: Set up content output | |
id: modify_output | |
if: steps.release_action_plan.outputs.releases_created == 'true' | |
uses: actions/github-script@v5 | |
with: | |
script: | | |
const allOutputs = ${{toJson(steps.release_action_plan.outputs)}}; | |
console.log("all outputs",allOutputs); | |
const pathsReleased = JSON.parse('${{ steps.release_action_plan.outputs.paths_released }}'); | |
console.log("pathsReleased",pathsReleased); | |
let hashMap = {}; | |
let resultArray = []; | |
for (const [key, value] of Object.entries(allOutputs)) { | |
// Ensure both key and value are strings | |
hashMap[String(key)] = String(value); | |
console.log("key:",key); | |
console.log("value:",value); | |
} | |
for (const path of pathsReleased) { | |
const nameKey = `${path}--name`; | |
if (hashMap[nameKey]) { | |
const name = hashMap[nameKey].split(':')[0]; | |
console.log("name of binary:",name); | |
resultArray.push(`${path};${hashMap[nameKey]};${name}`); | |
} | |
} | |
core.setOutput('tag_name_result', JSON.stringify(resultArray)); | |
build_and_release: | |
needs: prepare_release | |
if: needs.prepare_release.outputs.release_created == 'true' | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
goos: [linux, windows, darwin] | |
goarch: [amd64, arm64] | |
path: ${{ fromJson(needs.prepare_release.outputs.tag_name_result) }} | |
exclude: | |
- goarch: arm64 | |
goos: windows | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: form right entities | |
id: set_right_names | |
run: | | |
IFS=';' read -ra ADDR <<< "${{ matrix.path }}" | |
echo "::set-output name=path::${ADDR[0]}" | |
#before setting release tag would want to modify - image-scan: v1.4.18 to image-scan-v1.4.18 | |
MODIFIED_RELEASE_TAG="${ADDR[1]//:/-}" | |
MODIFIED_RELEASE_TAG="${MODIFIED_RELEASE_TAG// /}" | |
echo "::set-output name=release_tag::${MODIFIED_RELEASE_TAG}" | |
echo "::set-output name=binary_name::${ADDR[2]}" | |
# Extract just the version number from the release_tag | |
VERSION_NUMBER=${ADDR[1]#*: v} | |
echo "::set-output name=version_number::${VERSION_NUMBER}" | |
- name: Build and Release Go Binary | |
uses: wangyoucao577/go-release-action@v1 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
goos: ${{ matrix.goos }} | |
goarch: ${{ matrix.goarch }} | |
goversion: "https://go.dev/dl/go1.22.0.linux-amd64.tar.gz" | |
project_path: ${{ steps.set_right_names.outputs.path}} | |
binary_name: ${{ steps.set_right_names.outputs.binary_name}} | |
release_tag: '${{ steps.set_right_names.outputs.release_tag}}' | |
asset_name: ${{ steps.set_right_names.outputs.binary_name}}-${{ steps.set_right_names.outputs.version_number}}-${{ matrix.goos }}-${{ matrix.goarch }} | |
overwrite: true |