-
Notifications
You must be signed in to change notification settings - Fork 0
145 lines (145 loc) · 6.21 KB
/
release.yml
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
name: Release
on:
push:
branches:
- release/*
- hotfix/*
pull_request:
branches:
- develop
types: [opened, synchronize, reopened]
jobs:
release-local:
name: release-local
runs-on: ubuntu-latest
# Se ejecuta si la PR es hacia develop y no proviene de una rama de release u hotfix.
# Este job no debe ejecutarse como push en cualquier rama release, pero sí en las ramas de hotfix.
if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'develop' && !contains(github.event.pull_request.head.ref, 'release/') && !contains(github.event.pull_request.head.ref, 'hotfix/')) || (github.event_name == 'push' && startsWith(github.ref, 'refs/heads/hotfix/')) }}
environment: local
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
- name: Make Gradlew Executable
run: chmod +x ./gradlew
- name: Build and Push docker image
run: |
./gradlew printVersion
./gradlew printProjectName
VERSION=$(./gradlew -q printVersion)
PROJECT_NAME=$(./gradlew -q printProjectName)
IMAGE_TAG="$PROJECT_NAME:v$VERSION$SUFFIX"
docker build --file Dockerfile --build-arg SKIP_TESTS=true --tag $DOCKER_HUB_CLIENT_NAME/$IMAGE_TAG .
echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
docker push $DOCKER_HUB_CLIENT_NAME/$IMAGE_TAG
env:
DOCKER_USERNAME: ${{ vars.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_TOKEN }}
DOCKER_HUB_CLIENT_NAME: in2workspace
SUFFIX: -snapshot
release-dev:
name: release-dev
runs-on: ubuntu-latest
needs: release-local
# Este job se ejecuta si el evento es un 'push' y ocurre en las ramas 'release' y 'hotfix'.
# Este job depende del resultado del job anterior, 'release-local', si la rama del evento es 'hotfix', no 'release'.
# Este job jamás se ejecutará por una 'pull_request'.
if: ${{ github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/release/') || (startsWith(github.ref, 'refs/heads/hotfix/') && success())) }}
environment: dev
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
- name: Make Gradlew Executable
run: chmod +x ./gradlew
- name: Build and Push docker image
run: |
./gradlew printVersion
./gradlew printProjectName
VERSION=$(./gradlew -q printVersion)
PROJECT_NAME=$(./gradlew -q printProjectName)
IMAGE_TAG="$PROJECT_NAME:v$VERSION$SUFFIX"
docker build --file Dockerfile --build-arg SKIP_TESTS=true --tag $DOCKER_HUB_CLIENT_NAME/$IMAGE_TAG .
echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
docker push $DOCKER_HUB_CLIENT_NAME/$IMAGE_TAG
env:
DOCKER_USERNAME: ${{ vars.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_TOKEN }}
DOCKER_HUB_CLIENT_NAME: in2workspace
SUFFIX: -snapshot
release-test:
name: release-test
runs-on: ubuntu-latest
needs: release-dev
# Este job se ejecuta si el evento es un 'push' y ocurre en las ramas 'release' y 'hotfix'.
# Este job depende del resultado del job anterior, 'release-dev'.
# Este job jamás se ejecutará por una 'pull_request'.
if: ${{ github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/release/') || startsWith(github.ref, 'refs/heads/hotfix/') && success()) }}
environment: test
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
- name: Make Gradlew Executable
run: chmod +x ./gradlew
- name: Build and Push docker image
run: |
./gradlew printVersion
./gradlew printProjectName
VERSION=$(./gradlew -q printVersion)
PROJECT_NAME=$(./gradlew -q printProjectName)
IMAGE_TAG="$PROJECT_NAME:v$VERSION$SUFFIX"
docker build --file Dockerfile --build-arg SKIP_TESTS=true --tag $DOCKER_HUB_CLIENT_NAME/$IMAGE_TAG .
echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
docker push $DOCKER_HUB_CLIENT_NAME/$IMAGE_TAG
env:
DOCKER_USERNAME: ${{ vars.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_TOKEN }}
DOCKER_HUB_CLIENT_NAME: in2workspace
SUFFIX: -rc1
release-prod:
name: release-prod
runs-on: ubuntu-latest
needs: release-test
# Este job se ejecuta si el evento es un 'push' y ocurre en las ramas 'release' y 'hotfix'.
# Este job depende del resultado del job anterior, 'release-test'.
# Este job jamás se ejecutará por una 'pull_request'.
if: ${{ github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/release/') || startsWith(github.ref, 'refs/heads/hotfix/') && success()) }}
environment: prod
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
- name: Make Gradlew Executable
run: chmod +x ./gradlew
- name: Build and Push docker image
run: |
./gradlew printVersion
./gradlew printProjectName
VERSION=$(./gradlew -q printVersion)
PROJECT_NAME=$(./gradlew -q printProjectName)
IMAGE_TAG="$PROJECT_NAME:v$VERSION$SUFFIX"
docker build --file Dockerfile --build-arg SKIP_TESTS=true --tag $DOCKER_HUB_CLIENT_NAME/$IMAGE_TAG .
echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
docker push $DOCKER_HUB_CLIENT_NAME/$IMAGE_TAG
env:
DOCKER_USERNAME: ${{ vars.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_TOKEN }}
DOCKER_HUB_CLIENT_NAME: in2workspace
SUFFIX: -ga