This repository has been archived by the owner on Mar 19, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
149 lines (129 loc) · 5.86 KB
/
release-images.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
name: Release Images
on:
workflow_dispatch:
inputs:
tag:
description: 'Release tag name'
required: true
release:
types: [released, prereleased]
env:
PLATFORMS: linux/amd64,linux/arm64,linux/s390x,linux/ppc64le
IMAGE_ORG: apicurio
# The below values are extracted from the github.event context,
# which is only available when the workflow gets triggered by a release event.
RELEASE_VERSION: ${{ github.event.release.name }}
BRANCH: ${{ github.event.release.target_commitish }}
jobs:
release-images:
if: github.repository_owner == 'Apicurio'
runs-on: ubuntu-20.04
steps:
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 16
# Open-Source Machine emulator that allows you to emulate multiple CPU architectures on your machine
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
# Docker CLI plugin for extended build capabilities with BuildKit
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
- name: Inspect builder
run: |
echo "Name: ${{ steps.buildx.outputs.name }}"
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
echo "Status: ${{ steps.buildx.outputs.status }}"
echo "Flags: ${{ steps.buildx.outputs.flags }}"
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
# Setting Env variables explicitly
# Release context is not available for manual trigger(workflow_dispatch)
- name: Fetch Release Details
if: github.event_name == 'workflow_dispatch'
run: |
touch release.json && curl https://api.github.com/repos/${GITHUB_REPOSITORY}/releases/tags/${{ github.event.inputs.tag }} > release.json
echo "RELEASE_VERSION=$(cat release.json | jq -r '.name')" >> $GITHUB_ENV
echo "BRANCH=$(cat release.json | jq -r '.target_commitish')" >> $GITHUB_ENV
- name: Download Source Code
run: git clone --branch $RELEASE_VERSION --single-branch ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git designer
# We have faced issues in the past where a github release was created from a wrong commit
# This step will ensure that the release was created from the right commit
- name: Verify Project Version
run: |
cd designer
PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
if [[ $PROJECT_VERSION != $RELEASE_VERSION ]]
then
echo "ERROR: Project Version '${PROJECT_VERSION}' does not match with Released Version '${RELEASE_VERSION}'"
exit 1
fi
- name: Build Apicurio API Designer
env:
SKIP_TESTS: "true"
run: |
cd designer
mvn install -DskipTests=true -Dmaven.javadoc.skip=true --no-transfer-progress -DtrimStackTrace=false
cd ui
npm install
npm run build
npm run package
- name: Login to Quay.io Registry
run: docker login -u "${{ secrets.QUAY_USERNAME }}" -p "${{ secrets.QUAY_PASSWORD }}" quay.io
- name: Login to DockerHub Registry
run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
- name: Build and Publish Docker Image (Mem)
uses: docker/build-push-action@v2
with:
context: ./designer/dist/docker/target/docker
file: ./designer/dist/docker/target/docker/Dockerfile.jvm
platforms: ${{env.PLATFORMS}}
push: true
tags: |
docker.io/${{env.IMAGE_ORG}}/apicurio-api-designer-mem:${{env.RELEASE_VERSION}}
docker.io/${{env.IMAGE_ORG}}/apicurio-api-designer-mem:latest
quay.io/${{env.IMAGE_ORG}}/apicurio-api-designer-mem:${{env.RELEASE_VERSION}}
quay.io/${{env.IMAGE_ORG}}/apicurio-api-designer-mem:latest
- name: Build and Publish Docker Image (SQL)
uses: docker/build-push-action@v2
with:
context: ./designer/dist/docker/target/docker
file: ./designer/dist/docker/target/docker/Dockerfile.postgresql.jvm
platforms: ${{env.PLATFORMS}}
push: true
tags: |
docker.io/${{env.IMAGE_ORG}}/apicurio-api-designer-sql:${{env.RELEASE_VERSION}}
docker.io/${{env.IMAGE_ORG}}/apicurio-api-designer-sql:latest
quay.io/${{env.IMAGE_ORG}}/apicurio-api-designer-sql:${{env.RELEASE_VERSION}}
quay.io/${{env.IMAGE_ORG}}/apicurio-api-designer-sql:latest
- name: Build and Publish Docker Image (UI)
uses: docker/build-push-action@v2
with:
context: ./designer/ui
file: ./designer/ui/Dockerfile
platforms: ${{env.PLATFORMS}}
push: true
tags: |
docker.io/${{env.IMAGE_ORG}}/apicurio-api-designer-ui:${{env.RELEASE_VERSION}}
docker.io/${{env.IMAGE_ORG}}/apicurio-api-designer-ui:latest
quay.io/${{env.IMAGE_ORG}}/apicurio-api-designer-ui:${{env.RELEASE_VERSION}}
quay.io/${{env.IMAGE_ORG}}/apicurio-api-designer-ui:latest
- name: Google Chat Notification (Always)
if: always()
uses: Co-qn/google-chat-notification@b9227d9daa4638c9782a5bd16c4abb86268127a1
with:
name: ${{ github.job }}
url: ${{ secrets.GOOGLE_CHAT_WEBHOOK }}
status: ${{ job.status }}
- name: Google Chat Notification (Error)
if: failure()
uses: Co-qn/google-chat-notification@b9227d9daa4638c9782a5bd16c4abb86268127a1
with:
name: ${{ github.job }}
url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_ERRORS }}
status: ${{ job.status }}