Skip to content

Feat/acp 38937

Feat/acp 38937 #219

Workflow file for this run

name: build-alb-images-and-chart
on:
workflow_dispatch:
inputs:
skip_test:
type: boolean
description: skil test
required: false
default: false
do_release:
type: boolean
description: do release
required: true
pull_request:
branches:
- master
- release-*
paths-ignore:
- 'docs/**'
- '**.md'
- '.github/VERSION'
push:
branches:
- master
- release-*
paths-ignore:
- 'docs/**'
- '**.md'
concurrency:
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true
env:
GO_VERSION: ''
GOSEC_VERSION: '2.18.2'
HELM_VERSION: v3.13.3
SUBMARINER_VERSION: '0.16.2'
jobs:
build-alb:
name: Build alb
runs-on: ubuntu-22.04
outputs:
go-coverage: ${{ steps.alb-test.outputs.GO_COVERAGE }}
lua-coverage: ${{ steps.nginx-test.outputs.LUA_COVERAGE }}
strategy:
matrix:
platform:
- linux/amd64
# - linux/arm64
steps:
- uses: actions/checkout@v4
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "[email protected]"
- name: version # it will set the CURRENT_VERSION env
uses: HardNorth/[email protected]
with:
version-source: file
version-file: ./deploy/chart/alb/Chart.yaml
version-file-extraction-pattern: 'version: v([0-9]*\.[0-9]*\.[0-9]*)'
- uses: docker/setup-buildx-action@v3
- name: set release type
env:
RELEASE_ME: "${{ github.event.inputs.do_release == 'true' }}"
run: |
branch=$(echo "${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" | sed 's|/|-|g')
echo "branch is $branch"
if [[ "$RELEASE_ME" == "false" ]] && [[ "$branch" == "master" ]] ;then
echo "in master we still want to a pre-release"
echo "RELEASE_TYPE=pre-release" >> $GITHUB_ENV
exit
fi
if [[ "$RELEASE_ME" == "true" ]] ;then
echo "release it"
echo "RELEASE_TYPE=release" >> $GITHUB_ENV
exit
fi
echo "RELEASE_TYPE=no-release" >> $GITHUB_ENV
echo "not release"
- name: build
env:
RELEASE_ME: "${{ github.event.inputs.do_release == 'true' }}"
MATRIX_PLATFORM: "${{matrix.platform }}"
run: |
set -x
./scripts/run-like-github-actions.sh build-alb
platform=$(echo "$MATRIX_PLATFORM" | sed 's|/|-|g')
echo "artifactPath=./alb-$platform.tar" >> $GITHUB_ENV
echo "artifactName=alb-$platform" >> $GITHUB_ENV
- name: Upload alb images to artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.artifactName }}
path: ${{ env.artifactPath }}
- name: test alb go
id: alb-test
if: ${{ (matrix.platform == 'linux/amd64' ) && (!inputs.skip_test) }}
env:
MATRIX_PLATFORM: "${{ matrix.platform }}"
run: |
set -x
echo "FROM --platform=\${{ matrix.platform }} | $MATRIX_PLATFORM "
./scripts/run-like-github-actions.sh test-alb-go
go_cov=$(grep total ./coverage.report | awk '{print $3}' | awk -F% '{print $1}' )
echo "go_cov is |||$go_cov|||"
echo "GO_COVERAGE=$go_cov" >> $GITHUB_OUTPUT
cat $GITHUB_OUTPUT
- name: test alb nginx
id: nginx-test
if: ${{ (matrix.platform == 'linux/amd64' ) && (!inputs.skip_test) }}
env:
MATRIX_PLATFORM: "${{matrix.platform }}"
run: |
set -x
./scripts/run-like-github-actions.sh test-alb-nginx
cat ./luacov.summary
line_cov=$(cat ./luacov.summary |grep Total|awk '{print $4}'|awk -F% '{print $1}')
echo "LUA_COVERAGE=$line_cov" >> $GITHUB_OUTPUT
cat $GITHUB_OUTPUT
release-alb:
name: Release alb
runs-on: ubuntu-22.04
needs: [build-alb]
steps:
- uses: actions/checkout@v4
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "[email protected]"
- name: version # it will set the CURRENT_VERSION env
uses: HardNorth/[email protected]
with:
version-source: file
version-file: ./deploy/chart/alb/Chart.yaml
version-file-extraction-pattern: 'version: v([0-9]*\.[0-9]*\.[0-9]*)'
- name: cr
uses: helm/[email protected]
with:
install_only: true
- uses: azure/setup-helm@v3
with:
version: '${{ env.HELM_VERSION }}'
- uses: actions/download-artifact@master # TODO download arm artifact
with:
name: alb-linux-amd64
- name: show artifact
run: |
ls -l
- name: set release type
env:
RELEASE_ME: "${{ github.event.inputs.do_release == 'true' }}"
run: |
branch=$(echo "${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" | sed 's|/|-|g')
echo "branch is $branch"
if [[ "$RELEASE_ME" == "false" ]] && [[ "$branch" == "master" ]] ;then
echo "in master we still want to a pre-release"
echo "RELEASE_TYPE=pre-release" >> $GITHUB_ENV
exit
fi
if [[ "$RELEASE_ME" == "true" ]] ;then
echo "release it"
echo "RELEASE_TYPE=release" >> $GITHUB_ENV
exit
fi
echo "RELEASE_TYPE=no-release" >> $GITHUB_ENV
echo "not release"
- name: gen alb chart
run: |
echo "gen alb chart"
env
export branch=$(echo "${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" | sed 's|/|-|g')
echo "$branch"
./scripts/run-like-github-actions.sh gen-chart-artifact
- uses: actions/upload-artifact@v4
with:
name: alb-chart
path: alauda-alb2.tgz
- name: release
if: ${{ env.RELEASE_TYPE != 'no-release' }}
env:
GH_TOKEN: ${{ github.token }}
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
DOCKER_CLI_EXPERIMENTAL: enabled
run: |
./scripts/run-like-github-actions.sh release-alb
update-coverage:
name: update coverage
runs-on: ubuntu-22.04
needs: [build-alb]
env:
GO_COVERAGE: ${{ needs.build-alb.outputs.go-coverage }}
LUA_COVERAGE: ${{ needs.build-alb.outputs.lua-coverage }}
steps:
- name: debug
run: |
env
set -x
echo "GO_COVERAGE=$GO_COVERAGE"
echo "LUA_COVERAGE=$LUA_COVERAGE"
- name: Checkout gh-pages
uses: actions/checkout@v3
with:
ref: gh-pages
- name: Create Badges
shell: bash
run: |
set -x
npm i -g badgen-cli
GO_COLOR=$(node -p '+process.env.GO_COVERAGE >= 95 ? `green` : `orange`')
LUA_COLOR=$(node -p '+process.env.LUA_COVERAGE >= 95 ? `green` : `orange`')
mkdir -p badges
badgen -j go-coverage -s "$GO_COVERAGE%" -c $GO_COLOR > badges/go-coverage.svg
badgen -j lua-coverage -s $LUA_COVERAGE% -c $LUA_COLOR > badges/lua-coverage.svg
- name: Deploy Badges
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "Update badges [skip ci]"
branch: gh-pages
skip_fetch: true
skip_checkout: true
# Without this, will get Error:
# Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '/home/runner/work/coverage-badge-action/coverage-badge-action/action.yml'.
# Did you forget to run actions/checkout before running your local action?
- name: Checkout Back
uses: actions/checkout@v3
with:
ref: ${{ github.ref }}