11name : build.docker.image.cortex
22on :
33 workflow_dispatch :
4- inputs :
5- is_prod :
6- description : " Publish docker image in dockerhub?"
7- type : boolean
8- default : false
94 workflow_call :
105 inputs :
11- is_prod :
12- description : " Publish docker image in dockerhub?"
13- type : boolean
14- default : false
15- override_version :
16- description : " Override version tag (e.g., pr-60 for pull requests)"
6+ version :
7+ description : " Version to be used (passed as input variable from other workflows)"
178 type : string
189 required : false
1910 outputs :
4435 image_version : ${{ steps.get_version.outputs.app_version }}
4536 steps :
4637 - uses : actions/checkout@v4
47- - name : Set up Docker Buildx
48- uses : docker/setup-buildx-action@v3
4938 - uses : ./.github/actions/get_code_version
5039 id : get_version
40+ if : github.event_name != 'workflow_call'
5141
5242 build :
5343 needs :
@@ -56,12 +46,13 @@ jobs:
5646 actions : read
5747 contents : read
5848 packages : write
49+ id-token : write
5950 runs-on : [ self-hosted, linux, domain=sb ]
6051 outputs :
61- image_id : ${{ steps.push .outputs.imageid }}
62- image_digest : ${{ steps.push .outputs.digest }}
63- image_metadata : ${{ steps.push .outputs.metadata }}
64- image_version : ${{ inputs.override_version || needs.prepare.outputs.image_version }}
52+ image_id : ${{ steps.docker-build .outputs.image_id }}
53+ image_digest : ${{ steps.docker-build .outputs.image_digest }}
54+ image_metadata : ${{ steps.docker-build .outputs.image_metadata }}
55+ image_version : ${{ inputs.version || needs.prepare.outputs.image_version }}
6556 steps :
6657 - name : Set up Python
6758 uses : actions/setup-python@v5
10293
10394 - uses : actions/checkout@v4
10495
105- - name : Set up Docker Buildx
106- uses : docker/setup-buildx-action@v3
107-
10896 - uses : coursier/setup-action@v1
10997 with :
11098 jvm : corretto:11
@@ -124,45 +112,38 @@ jobs:
124112 - name : Build packages
125113 run : sbt Docker/stage
126114
127- - name : setup vault token
128- if : inputs.is_prod
129- run : echo "VAULT_TOKEN=$VAULT_TOKEN" >> $GITHUB_ENV
130-
131- - name : Import prod secrets
132- if : inputs.is_prod
133- id : secrets_prod
134- uses : hashicorp/vault-action@v2.5.0
135- with :
136- url : https://vault.service.infra.sb:8200
137- token : ${{ env.VAULT_TOKEN }}
138- tlsSkipVerify : true
139- secrets : |
140- infra/data/ci/dockerhub username | DOCKERHUB_USERNAME;
141- infra/data/ci/dockerhub token | DOCKERHUB_TOKEN;
115+ - name : Compute clean version (strip -rcN suffix)
116+ if : ${{ inputs.version != '' }}
117+ id : clean_version
118+ env :
119+ VERSION : ${{ inputs.version }}
120+ run : |
121+ clean=$(echo "$VERSION" | sed 's/-rc[0-9]*$//')
122+ echo "clean_version=$clean" >> $GITHUB_OUTPUT
142123
143124 - name : Generate docker tags for PR builds
144- if : ${{ inputs.override_version != '' }}
125+ if : ${{ inputs.version != '' }}
145126 id : meta_pr
146127 uses : docker/metadata-action@v4
147128 with :
148129 images : |
149130 name=${{ vars.SB_GHCR }}/cortex
150131 tags : |
151- type=raw,value=${{ inputs.override_version }}
132+ type=raw,value=${{ inputs.version }}
133+ type=raw,value=${{ steps.clean_version.outputs.clean_version }}
152134 labels : |
153135 org.opencontainers.image.title=cortex
154136 org.opencontainers.image.description=A Powerful Observable Analysis and Active Response Engine
155137 org.opencontainers.image.vendor=StrangeBee
156- org.opencontainers.image.version=${{ inputs.override_version }}
138+ org.opencontainers.image.version=${{ steps.clean_version.outputs.clean_version }}
157139
158140 - name : Generate full docker tags for releases
159- if : ${{ inputs.override_version == '' }}
141+ if : ${{ inputs.version == '' }}
160142 id : meta_release
161143 uses : docker/metadata-action@v4
162144 with :
163145 images : |
164146 name=${{ vars.SB_GHCR }}/cortex
165- name=thehiveproject/cortex,enable=${{ inputs.is_prod }}
166147 tags : |
167148 type=raw,value=${{ fromJson(steps.image_details.outputs.image_details)['core_version'] }}
168149 type=raw,value=${{ needs.prepare.outputs.image_version }}
@@ -174,27 +155,15 @@ jobs:
174155 org.opencontainers.image.vendor=StrangeBee
175156 org.opencontainers.image.version=${{ needs.prepare.outputs.image_version }}
176157
177- - name : Login to GitHub Container Registry
178- uses : docker/login-action@v3
179- with :
180- registry : ghcr.io
181- username : ${{ github.actor }}
182- password : ${{ secrets.GITHUB_TOKEN }}
183-
184- - name : Login to GitHub Container Registry
185- if : inputs.is_prod
186- uses : docker/login-action@v3
187- with :
188- username : ${{ steps.secrets_prod.outputs.DOCKERHUB_USERNAME }}
189- password : ${{ steps.secrets_prod.outputs.DOCKERHUB_TOKEN }}
190-
191- - name : Build and push docker image
192- uses : docker/build-push-action@v3
193- id : push
158+ - name : Build and push Docker image
159+ id : docker-build
160+ uses : StrangeBee/ci-resources/.github/actions/generic_docker_build@main
194161 with :
195- no-cache : ' true'
196- context : target/docker/stage
197- push : true
198- platforms : linux/amd64,linux/arm64
199- tags : ${{ inputs.override_version != '' && steps.meta_pr.outputs.tags || steps.meta_release.outputs.tags }}
200- labels : ${{ inputs.override_version != '' && steps.meta_pr.outputs.labels || steps.meta_release.outputs.labels }}
162+ skip_checkout : " true"
163+ registry_username : ${{ github.actor }}
164+ registry_password : ${{ secrets.GITHUB_TOKEN }}
165+ image_name : ${{ vars.SB_GHCR }}/cortex
166+ docker_context_path : target/docker/stage
167+ docker_file_path : target/docker/stage/Dockerfile
168+ computed_tags : ${{ inputs.version != '' && steps.meta_pr.outputs.tags || steps.meta_release.outputs.tags }}
169+ computed_labels : ${{ inputs.version != '' && steps.meta_pr.outputs.labels || steps.meta_release.outputs.labels }}
0 commit comments