Skip to content

AST Cli Release

AST Cli Release #207

Workflow file for this run

name: AST Cli Release
on:
workflow_call:
inputs:
tag:
description: 'Next release tag'
required: true
type: string
dev:
description: 'Is dev build'
required: false
default: true
type: boolean
workflow_dispatch:
inputs:
tag:
description: 'Next release tag'
required: true
type: string
dev:
description: 'Is dev build'
required: false
default: true
type: boolean
permissions:
id-token: write
contents: write
jobs:
build:
runs-on: macos-latest
env:
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
APPLE_DEVELOPER_CERTIFICATE_P12_BASE64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
APPLE_DEVELOPER_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: '^1.21.4'
- name: Import Code-Signing Certificates
uses: Apple-Actions/import-codesign-certs@v1
with:
# The certificates in a PKCS12 file encoded as a base64 string
p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
# The password used to import the PKCS12 file.
p12-password: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
- name: Updating and upgrading brew
run: |
git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m"
git config --global pack.threads "1"
git config --global pack.window "0"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew --version
- name: Install gon
run: |
brew tap mitchellh/gon
brew install mitchellh/gon/gon
- name: Install and start docker
if: inputs.dev == false
uses: docker-practice/actions-setup-docker@master
- name: Cleanup docker installation
if: inputs.dev == false
run: |
rm docker.rb
- name: Test docker
if: inputs.dev == false
run: |
docker version
docker info
- name: Login to Docker Hub
if: inputs.dev == false
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Clean
if: inputs.dev == false
run: |
rm default.profraw
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
role-to-assume: ${{ secrets.AWS_ASSUME_ROLE_ARN }}
aws-region: ${{ secrets.AWS_ASSUME_ROLE_REGION }}
- name: Tag
run: |
echo ${{ inputs.tag }}
echo "NEXT_VERSION=${{ inputs.tag }}" >> $GITHUB_ENV
tag=${{ inputs.tag }}
message='${{ inputs.tag }}: PR #${{ github.event.pull_request.number }} ${{ github.event.pull_request.title }}'
git config user.name "${GITHUB_ACTOR}"
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
git tag -a "${tag}" -m "${message}"
git push origin "${tag}"
- name: Build GoReleaser Args
run: |
args='release --clean --debug'
if [ ${{ inputs.dev }} = true ]; then
args=${args}' --config=".goreleaser-dev.yml"'
fi
echo "GR_ARGS=${args}" >> $GITHUB_ENV
- name: Echo GoReleaser Args
run: echo ${{ env.GR_ARGS }}
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v3
with:
version: v1.18.2
args: ${{ env.GR_ARGS }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GO_BOT_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
S3_BUCKET_NAME: ${{ secrets.S3_BUCKET_NAME }}
S3_BUCKET_REGION: ${{ secrets.S3_BUCKET_REGION }}
notify:
runs-on: ubuntu-latest
if: inputs.dev == false
needs: build
steps:
- name: Get latest release notes
id: release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
body_release="$(gh api -H "Accept: application/vnd.github.v3+json" /repos/Checkmarx/ast-cli/releases/latest | jq -r '.body' )"
body_release="${body_release//$'\n'/'%0A'}"
echo "::set-output name=body_release::$body_release"
- name: Converts Markdown to HTML
id: convert
uses: lifepal/[email protected]
with:
text: "${{ steps.release.outputs.body_release }}"
- name: Clean html
id: clean
run: |
clean="$(echo "${{ steps.convert.outputs.html }}" | awk '{gsub(/id=.[a-z]+/,"");print}' | tr -d '\n')"
echo "$clean"
echo "::set-output name=clean::$clean"
- name: Send a Notification
id: notify
uses: thechetantalwar/teams-notify@v2
with:
teams_webhook_url: ${{ secrets.TEAMS_WEBHOOK_URI }}
message: "${{ steps.clean.outputs.clean }}"