Skip to content

fix ci/cd pipeline yaml #7

fix ci/cd pipeline yaml

fix ci/cd pipeline yaml #7

Workflow file for this run

# SPDX-License-Identifier: ice License 1.0
name: CI/CD
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
verify-licensing:
name: Verify Licensing
if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Find latest Go Version
id: findLatestGoVersion
run: |
LATEST_GO_VERSION=$(make latestGoVersion)
echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION"
- name: Setup GO
uses: actions/setup-go@v5
with:
go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }}
- name: Check License
run: make checkLicense
- name: Slack Notification For Failure/Cancellation
if: ${{ github.event_name == 'push' && (failure() || cancelled()) }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }}
SLACK_TITLE: CI Failed> ${{ job.status }}
SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot
SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4
SLACK_ICON_EMOJI: ':sob:'
SLACK_COLOR: ${{ job.status }}
SLACK_FOOTER: |
https://github.com/ice-blockchain/${{ github.event.repository.name }}
verify-latest-versions-used:
name: Verify Latest Versions
if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Find latest Go Version
id: findLatestGoVersion
run: |
LATEST_GO_VERSION=$(make latestGoVersion)
echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION"
- name: Setup GO
uses: actions/setup-go@v5
with:
go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }}
- name: Check If We're Up to Date with Everything
run: make checkModVersion checkIfAllDependenciesAreUpToDate
- name: Slack Notification For Failure/Cancellation
if: ${{ github.event_name == 'push' && (failure() || cancelled()) }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }}
SLACK_TITLE: CI Failed> ${{ job.status }}
SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot
SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4
SLACK_ICON_EMOJI: ':sob:'
SLACK_COLOR: ${{ job.status }}
SLACK_FOOTER: |
https://github.com/ice-blockchain/${{ github.event.repository.name }}
verify-auto-generated:
name: Verify Auto Generated
if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Find latest Go Version
id: findLatestGoVersion
run: |
LATEST_GO_VERSION=$(make latestGoVersion)
echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION"
- name: Setup GO
uses: actions/setup-go@v5
with:
go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }}
- name: Check Auto Generated Files
run: make checkGenerated
- name: Slack Notification For Failure/Cancellation
if: ${{ github.event_name == 'push' && (failure() || cancelled()) }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }}
SLACK_TITLE: CI Failed> ${{ job.status }}
SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot
SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4
SLACK_ICON_EMOJI: ':sob:'
SLACK_COLOR: ${{ job.status }}
SLACK_FOOTER: |
https://github.com/ice-blockchain/${{ github.event.repository.name }}
lint:
name: Lint
if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Find latest Go Version
id: findLatestGoVersion
run: |
LATEST_GO_VERSION=$(make latestGoVersion)
echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION"
- name: Setup GO
uses: actions/setup-go@v5
with:
go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }}
# # # # # TODO Setup linting
# - name: golangci-lint
# uses: golangci/golangci-lint-action@v3
# with:
# version: latest
- name: Slack Notification For Failure/Cancellation
if: ${{ github.event_name == 'push' && (failure() || cancelled()) }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }}
SLACK_TITLE: CI Failed> ${{ job.status }}
SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot
SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4
SLACK_ICON_EMOJI: ':sob:'
SLACK_COLOR: ${{ job.status }}
SLACK_FOOTER: |
https://github.com/ice-blockchain/${{ github.event.repository.name }}
build:
name: Build
if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Find latest Go Version
id: findLatestGoVersion
run: |
LATEST_GO_VERSION=$(make latestGoVersion)
echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION"
- name: Setup GO
uses: actions/setup-go@v5
with:
go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }}
- name: Build all
run: make build-all@ci/cd
- name: Slack Notification For Failure/Cancellation
if: ${{ github.event_name == 'push' && (failure() || cancelled()) }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }}
SLACK_TITLE: CI Failed> ${{ job.status }}
SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot
SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4
SLACK_ICON_EMOJI: ':sob:'
SLACK_COLOR: ${{ job.status }}
SLACK_FOOTER: |
https://github.com/ice-blockchain/${{ github.event.repository.name }}
test:
name: Test
strategy:
matrix:
package: [ "database/query", "server/http", "server/ws" ]
if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Find latest Go Version
id: findLatestGoVersion
run: |
LATEST_GO_VERSION=$(make latestGoVersion)
echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION"
- name: Setup GO
uses: actions/setup-go@v5
with:
go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }}
- name: Test ${{ matrix.package }}
#TODO enable coverage
run: |
make -f ${{ github.workspace }}/Makefile test@ci/cd
# make -f ${{ github.workspace }}/Makefile coverage
- name: Slack Notification For Failure/Cancellation
if: ${{ github.event_name == 'push' && (failure() || cancelled()) }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }}
SLACK_TITLE: CI Failed> ${{ job.status }}
SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot
SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4
SLACK_ICON_EMOJI: ':sob:'
SLACK_COLOR: ${{ job.status }}
SLACK_FOOTER: |
subzero/${{ matrix.package }}
https://github.com/ice-blockchain/${{ github.event.repository.name }}
benchmark:
name: Benchmark
strategy:
matrix:
package: [ "database/query", "server/http", "server/ws" ]
if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Find latest Go Version
id: findLatestGoVersion
run: |
LATEST_GO_VERSION=$(make latestGoVersion)
echo "::set-output name=latestGoVersion::$LATEST_GO_VERSION"
- name: Setup GO
uses: actions/setup-go@v5
with:
go-version: ${{ steps.findLatestGoVersion.outputs.latestGoVersion }}
- name: Benchmark ${{ matrix.package }}
run: |
make -f ${{ github.workspace }}/Makefile benchmark@ci/cd
- name: Slack Notification For Failure/Cancellation
if: ${{ github.event_name == 'push' && (failure() || cancelled()) }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }}
SLACK_TITLE: CI Failed> ${{ job.status }}
SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot
SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4
SLACK_ICON_EMOJI: ':sob:'
SLACK_COLOR: ${{ job.status }}
SLACK_FOOTER: |
subzero/${{ matrix.package }}
https://github.com/ice-blockchain/${{ github.event.repository.name }}
PR:
needs: [verify-licensing, verify-latest-versions-used, verify-auto-generated, lint, build, test, benchmark]
name: PR
if: ${{ always() && (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'push' }}
runs-on: ubuntu-latest
steps:
- name: Checking if all previous jobs were successful
env:
ALL_SUCCESSFUL: ${{ contains(join(needs.*.result, ','), 'failure') == false && contains(join(needs.*.result, ','), 'cancelled') == false && contains(join(needs.*.result, ','), 'skipped') == false }}
run: |
if [ $ALL_SUCCESSFUL == 'true' ]
then
exit 0
else
exit 1
fi
- name: Slack Notification For Failure/Cancellation
if: ${{ github.event_name == 'push' && (failure() || cancelled()) }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.BACKEND_SLACK_WEBHOOK }}
SLACK_TITLE: CI Failed> ${{ job.status }}
SLACK_USERNAME: ${{ github.event.repository.name }}-ci-bot
SLACK_ICON: https://avatars.githubusercontent.com/u/102382658?s=400&u=62e73f4cb845c48a07a19e03c6f84b721e40c0a6&v=4
SLACK_ICON_EMOJI: ':sob:'
SLACK_COLOR: ${{ job.status }}
SLACK_FOOTER: |
https://github.com/ice-blockchain/${{ github.event.repository.name }}
#TODO add release and trigger_deployment