Skip to content

Commit cdd97d4

Browse files
committed
Unify some jobs
1 parent c30823d commit cdd97d4

File tree

1 file changed

+88
-181
lines changed

1 file changed

+88
-181
lines changed

.github/workflows/ci.yml

Lines changed: 88 additions & 181 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ jobs:
2727
outputs:
2828
release: ${{ steps.by-tag.outputs.release }}
2929
latest-release: ${{ steps.latest.outputs.latest-release }}
30-
docker-tag: ${{ steps.docker.outputs.docker-tag }}
3130
gh-docker-tag: ${{ steps.docker.outputs.gh-docker-tag }}
3231
lowercase-repo: ${{ steps.var.outputs.lowercase-repo }}
3332
node-version: ${{ steps.var.outputs.node-version }}
@@ -84,7 +83,7 @@ jobs:
8483
if [[ '${{ github.event_name }}' == 'pull_request' ]]; then
8584
DOCKER_TAG="pr-${{ github.event.number }}"
8685
else
87-
DOCKER_TAG="gh-${{ github.run_id }}"
86+
DOCKER_TAG=$GITHUB_REF_NAME
8887
fi
8988
echo "DOCKER_TAG: ${DOCKER_TAG}"
9089
echo "gh-docker-tag=${DOCKER_TAG}" >> $GITHUB_OUTPUT
@@ -224,41 +223,41 @@ jobs:
224223
with:
225224
node-version: ${{ needs.release-versions.outputs.node-version }}
226225
deno-version: ${{ needs.release-versions.outputs.deno-version }}
227-
coverage: true
228-
229-
build-prod:
230-
name: 📦 Meteor Build - official
231-
needs: [tests-done, release-versions, packages-build]
232-
if: (github.event_name == 'release' || github.ref == 'refs/heads/develop')
233-
runs-on: ubuntu-24.04
234-
235-
steps:
236-
- name: Collect Workflow Telemetry
237-
uses: catchpoint/workflow-telemetry-action@v2
238-
with:
239-
theme: dark
240-
job_summary: true
241-
comment_on_pr: false
242-
- name: Github Info
243-
run: |
244-
echo "GITHUB_ACTION: $GITHUB_ACTION"
245-
echo "GITHUB_ACTOR: $GITHUB_ACTOR"
246-
echo "GITHUB_REF: $GITHUB_REF"
247-
echo "GITHUB_HEAD_REF: $GITHUB_HEAD_REF"
248-
echo "GITHUB_BASE_REF: $GITHUB_BASE_REF"
249-
echo "github.event_name: ${{ github.event_name }}"
250-
cat $GITHUB_EVENT_PATH
251-
252-
- uses: actions/checkout@v4
253-
254-
- uses: ./.github/actions/meteor-build
255-
with:
256-
node-version: ${{ needs.release-versions.outputs.node-version }}
257-
deno-version: ${{ needs.release-versions.outputs.deno-version }}
258-
coverage: false
226+
coverage: ${{ github.event_name != 'release' && github.ref != 'refs/heads/develop' }}
227+
228+
# build-prod:
229+
# name: 📦 Meteor Build - official
230+
# needs: [tests-done, release-versions, packages-build]
231+
# if: (github.event_name == 'release' || github.ref == 'refs/heads/develop')
232+
# runs-on: ubuntu-24.04
233+
234+
# steps:
235+
# - name: Collect Workflow Telemetry
236+
# uses: catchpoint/workflow-telemetry-action@v2
237+
# with:
238+
# theme: dark
239+
# job_summary: true
240+
# comment_on_pr: false
241+
# - name: Github Info
242+
# run: |
243+
# echo "GITHUB_ACTION: $GITHUB_ACTION"
244+
# echo "GITHUB_ACTOR: $GITHUB_ACTOR"
245+
# echo "GITHUB_REF: $GITHUB_REF"
246+
# echo "GITHUB_HEAD_REF: $GITHUB_HEAD_REF"
247+
# echo "GITHUB_BASE_REF: $GITHUB_BASE_REF"
248+
# echo "github.event_name: ${{ github.event_name }}"
249+
# cat $GITHUB_EVENT_PATH
250+
251+
# - uses: actions/checkout@v4
252+
253+
# - uses: ./.github/actions/meteor-build
254+
# with:
255+
# node-version: ${{ needs.release-versions.outputs.node-version }}
256+
# deno-version: ${{ needs.release-versions.outputs.deno-version }}
257+
# coverage: false
259258

260259
build-gh-docker-coverage:
261-
name: 🚢 Build Docker Images for Testing
260+
name: 🚢 Build Docker
262261
needs: [build, release-versions]
263262
runs-on: ubuntu-24.04${{ matrix.arch == 'arm64' && '-arm' || '' }}
264263

@@ -288,7 +287,7 @@ jobs:
288287
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
289288

290289
build-gh-docker-coverage-publish:
291-
name: 🚢 Build Docker Images for Testing (Publish)
290+
name: 🚢 Publish Docker Images (ghcr.io)
292291
needs: [build-gh-docker-coverage, release-versions]
293292
runs-on: ubuntu-24.04
294293

@@ -315,13 +314,13 @@ jobs:
315314
path: /tmp/digests
316315
merge-multiple: true
317316

318-
- name: Show digests
319-
if: github.actor != 'dependabot[bot]' && (github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop')
320-
run: |
321-
find /tmp/digests -maxdepth 3 -type f -name 'digest.txt' -print
322-
cat /tmp/digests/presence-service/amd64/digest.txt
323-
cat /tmp/digests/presence-service/arm64/digest.txt
324-
317+
# - name: Show digests
318+
# if: github.actor != 'dependabot[bot]' && (github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop')
319+
# run: |
320+
# find /tmp/digests -maxdepth 3 -type f -name 'digest.txt' -print
321+
# cat /tmp/digests/presence-service/amd64/digest.txt
322+
# cat /tmp/digests/presence-service/arm64/digest.txt
323+
325324
- name: Create and push multi-arch manifests
326325
if: (github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop') && github.actor != 'dependabot[bot]'
327326
run: |
@@ -339,20 +338,6 @@ jobs:
339338
| xargs -0 -I{} sh -c "tr -d '\r' < '{}' | sed '/^[[:space:]]*$/d'"
340339
)
341340
342-
# Validação e log
343-
if [[ ${#refs[@]} -eq 0 ]]; then
344-
echo "::error::Sem refs em $service_dir"; exit 1
345-
fi
346-
echo "Refs detectados para $service:"
347-
printf ' - %s\n' "${refs[@]}"
348-
349-
# Regex de sanity-check
350-
for r in "${refs[@]}"; do
351-
if [[ ! "$r" =~ ^[a-z0-9._/-]+(:[a-z0-9._-]+)?@sha256:[a-f0-9]{64}$ ]]; then
352-
echo "::error::Ref inválido: '$r'"; exit 1
353-
fi
354-
done
355-
356341
echo "Digest for ${service}: ${refs[@]}"
357342
358343
# Get image name from docker-compose-ci.yml since rocketchat image is different from service name (rocket.chat)
@@ -366,38 +351,38 @@ jobs:
366351
${refs[@]}
367352
done
368353
369-
build-gh-docker:
370-
name: 🚢 Build Docker Images for Production
371-
needs: [build-prod, release-versions]
372-
runs-on: ubuntu-24.04
354+
# build-gh-docker:
355+
# name: 🚢 Build Docker Images for Production
356+
# needs: [build-prod, release-versions]
357+
# runs-on: ubuntu-24.04
373358

374-
env:
375-
DOCKER_TAG: ${{ needs.release-versions.outputs.gh-docker-tag }}
376-
LOWERCASE_REPOSITORY: ${{ needs.release-versions.outputs.lowercase-repo }}
359+
# env:
360+
# DOCKER_TAG: ${{ needs.release-versions.outputs.gh-docker-tag }}
361+
# LOWERCASE_REPOSITORY: ${{ needs.release-versions.outputs.lowercase-repo }}
377362

378-
steps:
379-
- uses: actions/checkout@v4
363+
# steps:
364+
# - uses: actions/checkout@v4
380365

381-
- uses: ./.github/actions/build-docker
382-
with:
383-
CR_USER: ${{ secrets.CR_USER }}
384-
CR_PAT: ${{ secrets.CR_PAT }}
385-
node-version: ${{ needs.release-versions.outputs.node-version }}
386-
deno-version: ${{ needs.release-versions.outputs.deno-version }}
387-
service: 'rocketchat'
388-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
366+
# - uses: ./.github/actions/build-docker
367+
# with:
368+
# CR_USER: ${{ secrets.CR_USER }}
369+
# CR_PAT: ${{ secrets.CR_PAT }}
370+
# node-version: ${{ needs.release-versions.outputs.node-version }}
371+
# deno-version: ${{ needs.release-versions.outputs.deno-version }}
372+
# service: 'rocketchat'
373+
# NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
389374

390-
- name: Rename official Docker tag to GitHub Container Registry
391-
run: |
392-
IMAGE_NAME_BASE="ghcr.io/${LOWERCASE_REPOSITORY}/rocket.chat:${DOCKER_TAG}"
375+
# - name: Rename official Docker tag to GitHub Container Registry
376+
# run: |
377+
# IMAGE_NAME_BASE="ghcr.io/${LOWERCASE_REPOSITORY}/rocket.chat:${DOCKER_TAG}"
393378

394-
echo "Push Docker image: ${IMAGE_NAME_BASE}"
395-
docker tag ${IMAGE_NAME_BASE}.alpine $IMAGE_NAME_BASE
396-
docker push $IMAGE_NAME_BASE
379+
# echo "Push Docker image: ${IMAGE_NAME_BASE}"
380+
# docker tag ${IMAGE_NAME_BASE}.alpine $IMAGE_NAME_BASE
381+
# docker push $IMAGE_NAME_BASE
397382

398-
echo "Push Docker image: ${IMAGE_NAME_BASE}.official"
399-
docker tag ${IMAGE_NAME_BASE}.alpine ${IMAGE_NAME_BASE}.official
400-
docker push ${IMAGE_NAME_BASE}.official
383+
# echo "Push Docker image: ${IMAGE_NAME_BASE}.official"
384+
# docker tag ${IMAGE_NAME_BASE}.alpine ${IMAGE_NAME_BASE}.official
385+
# docker push ${IMAGE_NAME_BASE}.official
401386

402387
checks:
403388
needs: [release-versions, packages-build]
@@ -588,7 +573,7 @@ jobs:
588573
name: 🚀 Publish build assets
589574
runs-on: ubuntu-24.04
590575
if: github.event_name == 'release' || github.ref == 'refs/heads/develop'
591-
needs: [build-gh-docker, release-versions]
576+
needs: [build-gh-docker-coverage-publish, release-versions]
592577

593578
steps:
594579
- uses: actions/checkout@v4
@@ -639,12 +624,13 @@ jobs:
639624
aws s3 cp $ROCKET_DEPLOY_DIR/ s3://download.rocket.chat/build/ --recursive
640625
641626
docker-image-publish:
642-
name: 🚀 Publish Docker Image (main)
627+
name: 🚀 Publish Docker Images (DockerHub)
643628
runs-on: ubuntu-24.04
644629
needs: [deploy, release-versions]
645630

646-
env:
647-
IMAGE_NAME: 'rocketchat/rocket.chat'
631+
strategy:
632+
matrix:
633+
service: ['rocketchat', 'account', 'authorization', 'ddp-streamer', 'omnichannel-transcript', 'presence', 'queue-worker', 'stream-hub']
648634

649635
steps:
650636
- name: Login to DockerHub
@@ -663,7 +649,13 @@ jobs:
663649
- name: Get Docker image name
664650
id: gh-docker
665651
run: |
666-
GH_IMAGE_NAME="ghcr.io/${{ needs.release-versions.outputs.lowercase-repo }}/rocket.chat:${{ needs.release-versions.outputs.gh-docker-tag }}.alpine"
652+
if [[ '${{ matrix.service }}' == 'rocketchat' ]]; then
653+
IMAGE_NAME="${{ needs.release-versions.outputs.lowercase-repo }}/rocket.chat"
654+
else
655+
IMAGE_NAME="${{ needs.release-versions.outputs.lowercase-repo }}/${{ matrix.service }}-service"
656+
fi
657+
658+
GH_IMAGE_NAME="ghcr.io/${IMAGE}:${{ needs.release-versions.outputs.gh-docker-tag }}"
667659
668660
echo "GH_IMAGE_NAME: $GH_IMAGE_NAME"
669661
@@ -677,8 +669,14 @@ jobs:
677669
- name: Pull Docker image
678670
run: docker pull ${{ steps.gh-docker.outputs.gh-image-name }}
679671

680-
- name: Publish Docker image
672+
- name: Publish Docker images
681673
run: |
674+
if [[ '${{ matrix.service }}' == 'rocketchat' ]]; then
675+
IMAGE_NAME="${{ needs.release-versions.outputs.lowercase-repo }}/rocket.chat"
676+
else
677+
IMAGE_NAME="${{ needs.release-versions.outputs.lowercase-repo }}/${{ matrix.service }}-service"
678+
fi
679+
682680
# 'develop' or 'tag'
683681
DOCKER_TAG=$GITHUB_REF_NAME
684682
@@ -692,7 +690,7 @@ jobs:
692690
693691
if [[ $GITHUB_REF == refs/tags/* ]]; then
694692
RELEASE="${{ needs.release-versions.outputs.release }}"
695-
693+
696694
echo "RELEASE: $RELEASE"
697695
698696
if [[ $RELEASE == 'latest' ]]; then
@@ -726,100 +724,10 @@ jobs:
726724
727725
echo "::endgroup::"
728726
729-
services-docker-image-publish:
730-
name: 🚀 Publish Docker Image (services)
731-
runs-on: ubuntu-24.04
732-
needs: [deploy, release-versions]
733-
734-
strategy:
735-
matrix:
736-
service: ['account', 'authorization', 'ddp-streamer', 'omnichannel-transcript', 'presence', 'queue-worker', 'stream-hub']
737-
738-
steps:
739-
- name: Login to DockerHub
740-
uses: docker/login-action@v3
741-
with:
742-
username: ${{ secrets.DOCKER_USER }}
743-
password: ${{ secrets.DOCKER_PASS }}
744-
745-
- name: Login to GitHub Container Registry
746-
uses: docker/login-action@v3
747-
with:
748-
registry: ghcr.io
749-
username: ${{ secrets.CR_USER }}
750-
password: ${{ secrets.CR_PAT }}
751-
752-
- name: Get Docker image name
753-
id: gh-docker
754-
run: |
755-
GH_IMAGE_NAME="ghcr.io/${{ needs.release-versions.outputs.lowercase-repo }}/${{ matrix.service }}-service:${{ needs.release-versions.outputs.gh-docker-tag }}"
756-
757-
echo "GH_IMAGE_NAME: $GH_IMAGE_NAME"
758-
759-
echo "gh-image-name=${GH_IMAGE_NAME}" >> $GITHUB_OUTPUT
760-
761-
DOCKER_TAG_SHA="sha-${GITHUB_SHA:0:7}"
762-
763-
echo "DOCKER_TAG_SHA: ${DOCKER_TAG_SHA}"
764-
echo "gh-docker-tag-sha=${DOCKER_TAG_SHA}" >> $GITHUB_OUTPUT
765-
766-
- name: Pull Docker image
767-
run: docker pull ${{ steps.gh-docker.outputs.gh-image-name }}
768-
769-
- name: Publish Docker images
770-
run: |
771-
DH_IMAGE_NAME="rocketchat/${{ matrix.service }}-service"
772-
773-
# 'develop' or 'tag'
774-
DOCKER_TAG=$GITHUB_REF_NAME
775-
776-
PUBLISHED_TAGS=()
777-
778-
# tag and push the specific tag version
779-
docker tag ${{ steps.gh-docker.outputs.gh-image-name }} $DH_IMAGE_NAME:$DOCKER_TAG
780-
docker push $DH_IMAGE_NAME:$DOCKER_TAG
781-
782-
PUBLISHED_TAGS+=("$DH_IMAGE_NAME:$DOCKER_TAG")
783-
784-
if [[ $GITHUB_REF == refs/tags/* ]]; then
785-
RELEASE="${{ needs.release-versions.outputs.release }}"
786-
787-
if [[ $RELEASE == 'latest' ]]; then
788-
if [[ '${{ needs.release-versions.outputs.latest-release }}' == $GITHUB_REF_NAME ]]; then
789-
docker tag ${{ steps.gh-docker.outputs.gh-image-name }} $DH_IMAGE_NAME:$RELEASE
790-
docker push $DH_IMAGE_NAME:$RELEASE
791-
792-
PUBLISHED_TAGS+=("$DH_IMAGE_NAME:$RELEASE")
793-
fi
794-
else
795-
docker tag ${{ steps.gh-docker.outputs.gh-image-name }} $DH_IMAGE_NAME:$RELEASE
796-
docker push $DH_IMAGE_NAME:$RELEASE
797-
798-
PUBLISHED_TAGS+=("$DH_IMAGE_NAME:$RELEASE")
799-
fi
800-
fi
801-
802-
# commit hash
803-
TAG_SHA="${{ steps.gh-docker.outputs.gh-docker-tag-sha }}"
804-
805-
docker tag ${{ steps.gh-docker.outputs.gh-image-name }} $DH_IMAGE_NAME:$TAG_SHA
806-
docker push $DH_IMAGE_NAME:$TAG_SHA
807-
808-
PUBLISHED_TAGS+=("$DH_IMAGE_NAME:$TAG_SHA")
809-
810-
echo "::group::Published tags"
811-
812-
for TAG in ${PUBLISHED_TAGS[@]}; do
813-
echo $TAG
814-
done
815-
816-
echo "::endgroup::"
817-
818727
notify-services:
819728
name: 🚀 Notify external services
820729
runs-on: ubuntu-24.04
821730
needs:
822-
- services-docker-image-publish
823731
- docker-image-publish
824732
- release-versions
825733
steps:
@@ -867,7 +775,6 @@ jobs:
867775

868776
if: github.event_name == 'release'
869777
needs:
870-
- services-docker-image-publish
871778
- docker-image-publish
872779

873780
uses: ./.github/workflows/update-version-durability.yml

0 commit comments

Comments
 (0)