Skip to content

Dispatch Deploy

Dispatch Deploy #717

Workflow file for this run

name: Dispatch Deploy
on:
workflow_dispatch:
inputs:
network:
description: "Network"
required: true
type: choice
options:
- "Baobab"
- "Cypress"
application:
description: "Service"
required: true
type: choice
options:
- "cli"
- "vrf"
- "api"
- "request-response"
- "delegator"
- "por"
- "node"
- "boot-api"
- "sentinel"
- "dal"
- "reporter"
- "logscribe"
image:
description: "Image Version"
required: true
type: choice
default: "new"
options:
- new
- reporter:v0.0.1.20240801.0750.b725976:Sentinel Update threshold to r...
- sentinel:v0.0.1.20240801.0753.169c3c9:Sentinel Update threshold to r...
- sentinel:v0.0.1.20240801.0907.c3a64db:Sentinel Change threshold to r...
- sentinel:v0.0.1.20240802.0153.63a109c:OraklNode Mutex lock instead o...
- dal:v0.0.1.20240802.0156.df96ad7:OraklNode Mutex lock instead o...
- node:v0.0.1.20240802.0200.b20a5c6:OraklNode Mutex lock instead o...
- dal:v0.0.1.20240802.0301.e8ff73c:DAL dal logs for debugging
- dal:v0.0.1.20240802.0426.303cd85:DAL Prevent possible race cond...
- dal:v0.0.1.20240802.0554.e60151d:DAL Fix ws deadlock
- sentinel:v0.0.1.20240802.0656.c31b1af:Sentinel Alarm count offset fo...
- sentinel:v0.0.1.20240802.0722.815e34a:Sentinel Initialize count if i...
- dal:v0.0.1.20240802.0737.d1641c9:DAL Prevent deadlock from mult...
- dal:v0.0.1.20240802.0814.2366d70:DAL definite unlock through de...
- dal:v0.0.1.20240802.0902.33bad15:DAL definite unlock through de...
- node:v0.0.1.20240805.0142.77d6df9:DAL Chore minor dal optimizati...
- dal:v0.0.1.20240805.0149.18cb534:DAL Chore minor dal optimizati...
- node:v0.0.1.20240805.0419.cadaade:OraklNode Offchain Proof and T...
- dal:v0.0.1.20240805.0421.cadaade:OraklNode Offchain Proof and T...
- logscribe:v0.0.1.20240805.0548.4a1cddf:Contract Deploy cypress submis...
- logscribe:v0.0.1.20240805.0558.ee14074:Contract Deploy cypress submis...
- logscribe:v0.0.1.20240805.0615.4fde42a:Contract Deploy cypress submis...
- logscribe:v0.0.1.20240805.0639.4d0df4b:Contract Deploy cypress submis...
- node:v0.0.1.20240805.0858.7647cf1:OraklNode Minor updates add em...
- dal:v0.0.1.20240805.0904.8bc24f7:OraklNode Minor updates add em...
- dal:v0.0.1.20240805.1011.e61e2a9:DAL update log
- node:v0.0.1.20240807.0149.4005140:OraklNode Msg replay preventio...
- node:v0.0.1.20240807.0233.c512afe:OraklNode Mutex lock roundID
- node:v0.0.1.20240807.0400.5926df7:OraklNode Rollback raft msg re...
- node:v0.0.1.20240807.0514.6907ece:OraklNode Admin add fallback t...
- dal:v0.0.1.20240807.0602.570af13:DAL Set log lv from env
- node:v0.0.1.20240807.0628.0de723f:OraklNode Add step to fix glob...
- node:v0.0.1.20240807.0831.bef131a:OraklNode Possible fix for mem...
- node:v0.0.1.20240807.0845.28f066d:OraklNode Dont increase raft t...
- node:v0.0.1.20240807.1057.37fd445:OraklNode fix memory leak lin...
- node:v0.0.1.20240808.0118.9477188:OraklNode Improve message hand...
- node:v0.0.1.20240808.0506.cea77a4:OraklNode Reduce default 120 s...
- node:v0.0.1.20240808.0519.79fb175:OraklNode hotfix segmentation ...
- logscribe:v0.0.1.20240808.0640.42454de:OraklNode hotfix segmentation ...
- node:v0.0.1.20240808.0642.ce80216:OraklNode hotfix segmentation ...
- node:v0.0.1.20240808.0659.628fe3d:provide default endpoint for l...
- node:v0.0.1.20240809.0442.cf7529f:separate console and logscribe...
- sentinel:v0.0.1.20240809.0726.87b4291:zerolog remove table up and do...
- sentinel:v0.0.1.20240809.0738.edc2361:Sentinel update dal timestamp ...
- delegator:v0.0.1.20240809.0742.a9a293a:Sentinel update dal timestamp ...
- api:v0.0.1.20240809.0752.7dc3d11:Sentinel update dal timestamp ...
- node:v0.0.1.20240812.0227.c2b15cb:OraklNode Fix lbank error
- node:v0.0.1.20240812.0439.b625a71:OraklNode Chore send local agg...
- dal:v0.0.1.20240812.0444.afcb8fe:OraklNode Chore send local agg...
- node:v0.0.1.20240814.0251.6443972:OraklNode Replace feed data bu...
- sentinel:v0.0.1.20240814.0346.da204fd:OraklNode Replace feed data bu...
- logscribe:v0.0.1.20240814.0542.88ab971:go mod tidy
- logscribe:v0.0.1.20240814.0610.0520a11:get github credentials using s...
- dal:v0.0.1.20240814.0612.0d5b858:get github credentials using s...
- sentinel:v0.0.1.20240814.0658.fddaeab:Sentinel add missing for loop
- dal:v0.0.1.20240814.0947.2706f2a:DAL Update logic to prevent du...
- node:v0.0.1.20240814.0951.5efd845:DAL Update logic to prevent du...
- sentinel:v0.0.1.20240814.1305.7c641fe:Sentinel Add missing status co...
- sentinel:v0.0.1.20240816.0429.b14407c:health check for logscribe
- logscribe:v0.0.1.20240816.0436.b420ff4:health check for logscribe
- api:v0.0.1.20240816.0524.ed93e4c:API Add missing version file
- delegator:v0.0.1.20240816.0529.a570456:API Add missing version file
- sentinel:v0.0.1.20240816.0531.a570456:API Add missing version file
- por:v0.0.1.20240816.0537.1b730d9:API Add missing version file
- boot-api:v0.0.1.20240816.0551.4e79ea6:API Add missing version file
- dal:v0.0.1.20240816.0556.f41bf29:API Add missing version file
- reporter:v0.0.1.20240816.0600.682fdf5:API Add missing version file
- node:v0.0.1.20240816.0628.8614a4b:API Add missing version file
- sentinel:v0.0.1.20240816.0639.71fe82c:API Add missing version file
- node:v0.0.1.20240816.0727.3a913ee:HOTFIX Hotfix sync error
- node:v0.0.1.20240819.0130.f2bd8e4:OraklNode Update raft implemen...
- dal:v0.0.1.20240819.0334.4efcb62:OraklNode Update raft implemen...
- logscribe:v0.0.1.20240819.0645.890e46a:Logscribe Increase bulk copy i...
- sentinel:v0.0.1.20240819.0701.340f3cb:Logscribe Increase bulk copy i...
- sentinel:v0.0.1.20240819.0806.a1a0c72:Sentinel Disable offset checke...
- request-response:v0.5.1.20240819.1054.d8c7769:make rr use nonce manager and ...
- request-response:v0.5.1.20240819.1120.e3bc4a9:add rr logs
- sentinel:v0.0.1.20240819.1326.d2988e4:Sentinel Disable drainage chec...
- node:v0.0.1.20240820.0233.893d589:OraklNode Update cryptocom end...
- node:v0.0.1.20240820.0501.06be7a6:OraklNode fix wrong quantity f...
- logscribe:v0.0.1.20240820.0623.3140765:decrease copy logs interval an...
- reporter:v0.0.1.20240820.0624.3140765:decrease copy logs interval an...
- logscribe:v0.0.1.20240820.0715.5aab78e:add more logs to reporter and ...
- reporter:v0.0.1.20240820.0715.5aab78e:add more logs to reporter and ...
- reporter:v0.0.1.20240820.0827.9fc9b65:provide default error logscrib...
- reporter:v0.0.1.20240820.0933.6582edb:cleanup reporter and logscribe...
- api:v0.0.1.20240821.0452.cad85cb:Delegator delegator zerologs
- delegator:v0.0.1.20240821.0459.9eaee01:Delegator delegator zerologs
- por:v0.0.1.20240821.0508.827c422:Delegator delegator zerologs
- boot-api:v0.0.1.20240821.0518.50268c9:Delegator delegator zerologs
- sentinel:v0.0.1.20240821.0521.1dbabef:Delegator delegator zerologs
- dal:v0.0.1.20240821.0526.fb2baaf:Delegator delegator zerologs
- sentinel:v0.0.1.20240821.0550.a113494:Sentinel Disable DAL checks
- request-response:v0.5.1.20240821.0812.e0652e6:Revert feat implement db query...
- request-response:v0.5.1.20240821.0841.95983b2:Revert feat implement db query...
- node:v0.0.1.20240822.0448.747251b:OraklNode Update timer relativ...
- node:v0.0.1.20240822.0553.a28e062:OraklNode Increase db timeout ...
- node:v0.0.1.20240822.0603.231c655:fix rollback db timeout
- sentinel:v0.0.1.20240822.0712.cea2662:fix rollback db timeout
- sentinel:v0.0.1.20240822.0748.0d4e613:remove old tags for helm chart...
- api:v0.0.1.20240822.0934.5206f51:remove old tags for helm chart...
- delegator:v0.0.1.20240822.0936.8e96e14:remove old tags for helm chart...
- sentinel:v0.0.1.20240823.0710.ff71895:DAL Remove conditional reconne...
- sentinel:v0.0.1.20240823.0720.f81d2c5:Hotfix fix cronjob definition
- node:v0.0.1.20240823.0801.a5b5218:Hotfix fix cronjob definition
- node:v0.0.1.20240823.0815.68e21ba:OraklNode run ICMP checker aft...
- node:v0.0.1.20240823.0828.fd6f658:OraklNode Pinger add logs incr...
- node:v0.0.1.20240823.0920.ef2d951:OraklNode attempt to enable IC...
- node:v0.0.1.20240823.0938.8b9bb7a:OraklNode attempt to enable IC...
- node:v0.0.1.20240823.1006.dc56667:Revert feat implement proxy fo...
- node:v0.0.1.20240823.1023.6234edc:OraklNode Fix pinger
- dal:v0.0.1.20240823.1037.23055da:OraklNode Fix pinger
- node:v0.0.1.20240826.0432.9d138dc:OraklNode Add env for local ru...
- dal:v0.0.1.20240826.0436.ec9742f:OraklNode Add env for local ru...
- node:v0.0.1.20240826.0511.f51c98f:OraklNode Update aggregator st...
- sentinel:v0.0.1.20240826.0718.4d5081b:Sentinel Add missing cron job ...
- reporter:v0.0.1.20240826.0828.fc77e8b:handle context deadline exceed...
- node:v0.0.1.20240827.0156.9c7ee3b:OraklNode Remove aggregator wa...
- cli:v1.0.0.20240827.0226.84ed44d:OraklNode Remove aggregator wa...
- api:v0.0.1.20240827.0230.5fc28f3:OraklNode Remove aggregator wa...
- sentinel:v0.0.1.20240827.0235.e07e04a:OraklNode Remove aggregator wa...
- node:v0.0.1.20240827.0258.ef342b5:OraklNode Remove aggregator wa...
- reporter:v0.0.1.20240827.0358.a9d6c98:OraklNode Remove aggregator wa...
- por:v0.0.1.20240827.0407.8741a13:OraklNode Remove aggregator wa...
- sentinel:v0.0.1.20240827.0556.defe2b1:fetch all GitHub issues
- logscribe:v0.0.1.20240827.0559.35de62d:fetch all GitHub issues
- logscribe:v0.0.1.20240827.0757.3486519:OraklNode consume channel to f...
- node:v0.0.1.20240827.0800.49b09bd:OraklNode consume channel to f...
- reporter:v0.0.1.20240828.0244.055b603:handle context deadline exceed...
- por:v0.0.1.20240828.0244.055b603:handle context deadline exceed...
- por:v0.0.1.20240828.0540.ce5ebf0:encapsulate SubmitDelegatedFal...
- reporter:v0.0.1.20240828.0541.ce5ebf0:encapsulate SubmitDelegatedFal...
- reporter:v0.0.1.20240828.0644.6618afb:add logs to submit tx func
- sentinel:v0.0.1.20240828.0654.f4d1d08:Sentinel Add missing check inc...
- dal:v0.0.1.20240828.0820.12378ae:fetch latest data rest with ti...
- dal:v0.0.1.20240828.0900.a7dc3ae:Revert DAL Pooling broadcast 2...
- reporter:v0.0.1.20240829.0827.b5eff49:rollback tx submission encapsu...
- logscribe:v0.0.1.20240830.0536.d7fcdf0:rollback tx submission encapsu...
- sentinel:v0.0.1.20240903.0618.463ce9d:OraklNode Fix possible cause f...
- node:v0.0.1.20240903.0621.d4ef741:OraklNode Fix possible cause f...
- node:v0.0.1.20240906.0137.a2f4a5e:OraklNode Fix possible cause f...
- por:v0.0.1.20240906.0210.44681b4:POR Remove manual nonce manage...
- logscribe:v0.0.1.20240906.0439.7b8f678:CICD Fix pipeline slack channe...
- node:v0.0.1.20240926.0516.ba891a0:Node Remove max delay logic in...
- node:v0.0.1.20240928.0535.1bc27b2:DAL Remove config id reference
- dal:v0.0.1.20240928.0541.a9006e1:DAL Remove config id reference
- node:v0.0.1.20240928.1555.bd6313d:Node Add more logs
- node:v0.0.1.20240929.0552.8a9b540:Node Timeout for aggregator ms...
- node:v0.0.1.20240929.0628.993e18e:Node Increase timeout
- node:v0.0.1.20241003.0445.ff77019:Node Reduce ping error logging...
- reporter:v0.0.1.20241003.0448.13cc9ed:Node Reduce ping error logging...
- node:v0.0.1.20241003.1010.bd40cbc:Node update logs update logic ...
- node:v0.0.1.20241011.0500.374eee0:Node Support orangex
- node:v0.0.1.20241102.0401.61aea60:ws proxy support
- node:v0.0.1.20241102.0547.147f90b:ws proxy support
- node:v0.0.1.20241105.0317.a4aece2:Node Check conflict not only w...
- node:v0.0.1.20241105.0445.a515407:Node Update contraint for feed...
- sentinel:v0.0.1.20241122.0446.86dbb99:Sentinel Remove ws delay check...
- sentinel:v0.0.1.20241127.0150.cf6be1b:Sentinel DAL rest network dela...
- node:v0.0.1.20241128.0230.5c56212:Chore Add log
- reporter:v0.0.1.20241208.0239.da98ae7:ChainHelper reduce complexity ...
- reporter:v0.0.1.20241209.0109.372d616:Reporter Refresh nonce on cont...
- reporter:v0.0.1.20241209.0531.563bd73:Reporter log on reporter error
- reporter:v0.0.1.20241209.0816.d4bbdc0:Reporter Fix refresh nonce not...
- dal:v0.0.1.20241210.0815.4e13ee6:DAL Hotfix addr comparison
- dal:v0.0.1.20241210.0828.235e2b5:more logs
- dal:v0.0.1.20241210.0835.a3be57c:more logs
jobs:
prepare-taskflow:
name: Prepare
runs-on: ubuntu-latest
if: ${{ github.event.inputs.image != 'new' }}
outputs:
service: ${{ steps.tag.outputs.service }}
version: ${{ steps.package.outputs.version }}
tag_date: ${{ steps.taskflow-tag.outputs.tag_date }}
tag_git_hash: ${{ steps.taskflow-tag.outputs.tag_git_hash}}
img_tag: ${{ steps.taskflow-tag.outputs.img_tag }}
steps:
- uses: actions/checkout@master
- name: extract tags
id: taskflow-tag
run: "IMAGE_TAG=\"${{ github.event.inputs.image }}\"\nVERSION=$(echo \"${IMAGE_TAG}\" | cut -d':' -f2 | cut -d'.' -f1-3)\necho $VERSION\nTAG_DATE=$(echo \"${IMAGE_TAG}\" | cut -d':' -f2 | cut -d'.' -f4-5)\necho $TAG_DATE\nTAG_GIT_HASH=$(echo \"${IMAGE_TAG}\" | cut -d':' -f2 | cut -d'.' -f6)\nTAG=\"${VERSION}.${TAG_DATE}.${TAG_GIT_HASH}\"\necho $TAG; \necho $TAG_GIT_HASH\necho \"version=${VERSION}\" >> $GITHUB_OUTPUT\necho \"tag_date=${TAG_DATE}\" >> $GITHUB_OUTPUT\necho \"tag_git_hash=${TAG_GIT_HASH}\" >> $GITHUB_OUTPUT\necho \"img_tag=${TAG}\" >> $GITHUB_OUTPUT\n"
env:
GH_TOKEN: ${{ secrets.WORKFLOW_PAT }}
taskflow-image-update:
name: Update Image Tag
needs: [prepare-taskflow]
uses: ./.github/workflows/update.image-tag.yaml
with:
network: "baobab"
build: false
project-name: ${{ github.event.inputs.application }}
version: ${{ needs.prepare-taskflow.outputs.version }}
image-tag: ${{ needs.prepare-taskflow.outputs.img_tag}}
tag_date: ${{ needs.prepare-taskflow.outputs.tag_date }}
tag_git_hash: ${{ needs.prepare-taskflow.outputs.tag_git_hash }}
secrets:
PAT: ${{ secrets.PAT }}
if: ${{ github.event.inputs.image != 'new' }}
post-slack-taskflow-image-upload:
name: Slack message for image upload
needs: [prepare-taskflow, taskflow-image-update]
uses: ./.github/workflows/post.slack.yaml
with:
status: "Success"
slack-message: "${{ github.event.inputs.network }} ${{ github.event.inputs.application }}* : *${{ needs.prepare-taskflow.outputs.img_tag}}* is updated"
channel: "miko-notification"
secrets:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: ${{ github.event.inputs.network == 'Baobab' && success() }}
prepare:
name: Prepare
runs-on: ubuntu-latest
if: ${{ github.event.inputs.network == 'Baobab' && github.event.inputs.image == 'new' }}
outputs:
tag_date: ${{ steps.tag.outputs.date }}
tag_git_hash: ${{ steps.tag.outputs.git_hash }}
service: ${{ steps.tag.outputs.service }}
ecr_url: ${{ steps.tag.outputs.ecr_url }}
version: ${{ steps.package.outputs.version }}
steps:
- uses: actions/checkout@master
- name: get time tag
id: tag
run: "# Get the date and git hash\necho \"date=$(date +'%Y%m%d.%H%M')\" >> $GITHUB_OUTPUT\necho \"git_hash=$(git rev-parse --short HEAD)\" >> $GITHUB_OUTPUT\nservice=\"${{ github.event.inputs.application }}\"\n# Set the service name\nif [[ \"$service\" == \"vrf\" || \"$service\" == \"request-response\" ]]; then\n service=\"core\"\nfi \n# Set the ecr url\necho \"service=$service\" >> $GITHUB_OUTPUT\necho \"ecr_url=public.ecr.aws/bisonai/orakl-${service}\" >> $GITHUB_OUTPUT\n# end of the script\n"
env:
GH_TOKEN: ${{ secrets.WORKFLOW_PAT }}
- name: get package version
id: package
run: "# Get the version from the package.json file\nif [[ \"${{ steps.tag.outputs.service }}\" == \"cli\" || \"${{ steps.tag.outputs.service }}\" == \"core\" ]]; then \necho \"version=$(node -p -e \"require('./\"${{ steps.tag.outputs.service }}\"/package.json').version\")\" >> $GITHUB_OUTPUT\nelse \n if [[ \"${{ steps.tag.outputs.service }}\" == \"boot-api\" || \"${{ steps.tag.outputs.service }}\" == \"node\" || \"${{ steps.tag.outputs.service }}\" == \"por\" || \"${{ steps.tag.outputs.service }}\" == \"dal\" || \"${{ steps.tag.outputs.service }}\" == \"reporter\" || \"${{ steps.tag.outputs.service }}\" == \"logscribe\" || \"${{ steps.tag.outputs.service }}\" == \"sentinel\" || \"${{ steps.tag.outputs.service }}\" == \"delegator\" || \"${{ steps.tag.outputs.service }}\" == \"api\" ]]; then \n version=$(cat ./node/.version) \n else\n version=$(cat ./${{ steps.tag.outputs.service }}/.version)\n fi\n echo \"version=$version\" >> $GITHUB_OUTPUT\nfi\n"
env:
GH_TOKEN: ${{ secrets.WORKFLOW_PAT }}
build:
name: Build
runs-on: ubuntu-latest
needs: prepare
if: ${{ github.event.inputs.network == 'Baobab' && github.event.inputs.image == 'new' }}
permissions:
id-token: write
contents: read
outputs:
img_tag: ${{ steps.img-tag.outputs.img_tag }}
steps:
- uses: actions/checkout@master
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.22.3"
check-latest: true
cache-dependency-path: |
./${{ needs.prepare.outputs.service }}/go.sum
./${{ needs.prepare.outputs.service }}/go.mod
if: ${{ needs.prepare.outputs.service != 'core' || needs.prepare.outputs.service != 'fetcher' || needs.prepare.outputs.service != 'cli' }}
- name: docker build ${{ github.event.inputs.application }}
run: SERVICE_NAME=miko-${{ needs.prepare.outputs.service }} docker compose -f docker-compose.build.yaml build
- name: configure aws credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: us-east-1
role-to-assume: ${{ secrets.ROLE_ARN }}
- name: login to amazon ecr
id: login-ecr-public
uses: aws-actions/amazon-ecr-login@v2
with:
registry-type: public
- name: publish image to ecr
run: |
docker tag miko-${{ needs.prepare.outputs.service }} ${{ needs.prepare.outputs.ecr_url }}:latest
docker push ${{ needs.prepare.outputs.ecr_url }}:latest
docker tag ${{ needs.prepare.outputs.ecr_url }}:latest ${{ needs.prepare.outputs.ecr_url }}:v${{ needs.prepare.outputs.version }}.${{ needs.prepare.outputs.tag_date }}.${{ needs.prepare.outputs.tag_git_hash }}
docker push ${{ needs.prepare.outputs.ecr_url }}:v${{ needs.prepare.outputs.version }}.${{ needs.prepare.outputs.tag_date }}.${{ needs.prepare.outputs.tag_git_hash }}
- name: image tag output
id: img-tag
run: echo "img_tag=v${{ needs.prepare.outputs.version }}.${{ needs.prepare.outputs.tag_date }}.${{ needs.prepare.outputs.tag_git_hash }}" >> $GITHUB_OUTPUT
post-slack-image-upload:
name: Slack message for image upload
needs: [prepare, build]
uses: ./.github/workflows/post.slack.yaml
with:
status: "Success"
slack-message: "${{ github.event.inputs.network }} ${{ github.event.inputs.application }}* : *${{ needs.prepare.outputs.service }}* ${{ needs.prepare.outputs.version }}.${{ needs.prepare.outputs.tag_date }}.${{ needs.prepare.outputs.tag_git_hash }} is uploaded"
channel: "miko-notification"
secrets:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: ${{ github.event.inputs.network == 'Baobab' && success() }}
image-update:
name: Update image tag
needs: [prepare, build]
uses: ./.github/workflows/update.image-tag.yaml
with:
network: "baobab"
project-name: ${{ github.event.inputs.application }}
version: ${{ needs.prepare.outputs.version }}
image-tag: ${{ needs.build.outputs.img_tag }}
tag_date: ${{ needs.prepare.outputs.tag_date }}
tag_git_hash: ${{ needs.prepare.outputs.tag_git_hash }}
secrets:
PAT: ${{ secrets.PAT }}
if: ${{ github.event.inputs.network == 'Baobab' && github.event.inputs.image == 'new' }}
post-slack-baobab-tag-update-success:
name: Post slack message for tag update success
needs: [prepare, build, image-update]
uses: ./.github/workflows/post.slack.yaml
with:
status: "Success"
slack-message: "${{ github.event.inputs.network }} *${{ github.event.inputs.application }}* : *${{ needs.prepare.outputs.service }}* new image tag ${{ needs.prepare.outputs.version }}.${{ needs.prepare.outputs.tag_date }}.${{ needs.prepare.outputs.tag_git_hash }} is updated"
channel: "miko-notification"
secrets:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: ${{ github.event.inputs.network == 'Baobab' && github.event.inputs.image == 'new' && success() }}
cypress-image-update:
name: cypress image update
uses: ./.github/workflows/update.image-tag.yaml
with:
network: "cypress"
project-name: ${{ github.event.inputs.application }}
secrets:
PAT: ${{ secrets.PAT }}
if: ${{ github.event.inputs.network == 'Cypress' }}
post-slack-cypress-tag-update-success:
name: Post slack message for tag update success
needs: [cypress-image-update]
uses: ./.github/workflows/post.slack.yaml
with:
status: "Success"
slack-message: "${{ github.event.inputs.network }} *${{ github.event.inputs.application }}* is updated"
channel: "miko-notification"
secrets:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: ${{ github.event.inputs.network == 'Cypress' && success() }}
post-slack-tag-update-failure:
name: Post to a slack message for tag update failure
needs: [prepare, build, image-update]
uses: ./.github/workflows/post.slack.yaml
with:
status: "Failed"
slack-message: "${{ github.event.inputs.network }} *${{ github.event.inputs.application }}* git action failed"
channel: "miko-notification"
secrets:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: ${{ github.event.inputs.network == 'Baobab' && github.event.inputs.image == 'new' && failure() }}
update-workflow-and-readme:
name: Update Workflow and README
needs: [prepare, build, image-update]
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pages: write
outputs:
new_tag: ${{ steps.tag_info.outputs.NEW_TAG }}
pr_title: ${{ steps.pr_info.outputs.PR_TITLE }}
truncated_title: ${{ steps.truncate_pr_title.outputs.truncated_title }}
steps:
- uses: actions/checkout@master
with:
token: ${{ secrets.WORKFLOW_PAT }}
- name: get latest merged pull request
id: pr_info
run: |
pr=$(gh pr list --state merged --json title -L 1)
PR_TITLE=$(echo $pr | jq -r '.[0].title')
PR_TITLE=$(echo "${PR_TITLE}" | sed 's/\\/\\\\/g; s/"/\\"/g; s/`/\\`/g; s/\$/\\$/g')
PR_TITLE=$(echo "${PR_TITLE}" | sed 's/[^a-zA-Z0-9 ]//g')
echo "PR_TITLE=${PR_TITLE}" >> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ secrets.WORKFLOW_PAT }}
- name: Install yq
run: |
sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq
sudo chmod +x /usr/bin/yq
- name: truncate PR title
id: truncate_pr_title
run: "TR_PR_TITLE=\"${{steps.pr_info.outputs.PR_TITLE}}\"\nMAX_LENGTH=30\nif [ ${#TR_PR_TITLE} -gt $MAX_LENGTH ]; then\n TRUNCATED_TITLE=\"${TR_PR_TITLE:0:$MAX_LENGTH}...\"\nelse\n TRUNCATED_TITLE=\"$TR_PR_TITLE\"\nfi\necho \"truncated_title=$TRUNCATED_TITLE\" >> $GITHUB_OUTPUT \n"
env:
GH_TOKEN: ${{ secrets.WORKFLOW_PAT }}
- name: Update Workflow Dispatch Options
id: tag_info
run: |
# Update the deployment.yaml file with the new tag
git pull
# Get the new tag
NEW_TAG=${{ github.event.inputs.application }}:${{ needs.build.outputs.img_tag }}
TAG_WITH_DESCRIPTION="${NEW_TAG}:${{ steps.truncate_pr_title.outputs.truncated_title }}"
CURRENT_OPTIONS=$(yq e '.on.workflow_dispatch.inputs.image.options[]' .github/workflows/deployment.yaml | sed 's/^- //')
OPTIONS_ARRAY=()
while IFS= read -r line; do
OPTIONS_ARRAY+=("\"$line\"")
done <<< "$CURRENT_OPTIONS"
OPTIONS_ARRAY+=("\"$TAG_WITH_DESCRIPTION\"")
yq eval 'del(.on.workflow_dispatch.inputs.image.options)' -i .github/workflows/deployment.yaml
for option in "${OPTIONS_ARRAY[@]}"; do
yq eval ".on.workflow_dispatch.inputs.image.options += [$option]" -i .github/workflows/deployment.yaml
done
git add .github/workflows/deployment.yaml
env:
GH_TOKEN: ${{ secrets.WORKFLOW_PAT }}
- name: Update TAGS with Latest PR Info
run: |
echo "- **${{ github.event.inputs.application }}** ${{ needs.build.outputs.img_tag }} <br> *\`PR\`*: ${{steps.truncate_pr_title.outputs.truncated_title}} <br><br> " >> TAGS.md
git add TAGS.md
- name: Commit & Push changes
uses: actions-js/push@master
with:
github_token: ${{ secrets.WORKFLOW_PAT }}
branch: ${{ github.ref }}
repository: ${{ github.repository }}
post-slack-pr-update:
name: Post to a slack message for tag update failure
needs: [prepare, build, image-update, update-workflow-and-readme]
uses: ./.github/workflows/post.image.slack.yaml
with:
slack-message: "\\n \\n> *Service:* ${{ github.event.inputs.application }} \\n> *Version:* ${{ needs.build.outputs.img_tag }} \\n> *PR:* ${{ needs.update-workflow-and-readme.outputs.pr_title}}"
channel: "orakl-images"
secrets:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: ${{ success() }}