-
Notifications
You must be signed in to change notification settings - Fork 10
142 lines (121 loc) · 4.39 KB
/
create-snapshot.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
name: Create Eno-WS XML snapshot
on:
pull_request:
types: [labeled]
env:
JAVA_VERSION: '17'
jobs:
remove-deploy-label:
if: ${{ contains(github.event.pull_request.labels.*.name, 'deploy-snapshot') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-ecosystem/action-remove-labels@v1
with:
labels: deploy-snapshot
eno-lib:
needs: remove-deploy-label
name: Check Eno lib version exists
runs-on: ubuntu-latest
outputs:
version: ${{ steps.get-version.outputs.version }}
steps:
- uses: actions/checkout@v4
- name: Get Eno Version
id: get-version
run: echo "version=$(mvn help:evaluate -Dexpression=eno.version -q -DforceStdout)" >> $GITHUB_OUTPUT
- name: Check Eno lib tag v${{ steps.get-version.outputs.version }} existence
id: check-tag-exists
uses: mukunku/[email protected]
with:
repo: InseeFr/Eno
tag: "v${{ steps.get-version.outputs.version }}"
- name: Eno lib tag verification
id: check-tag
run: |
if [[ "${{ steps.check-tag-exists.outputs.exists }}" == "false" ]]; then
echo "The tag v${{ steps.get-version.outputs.version }} doesn't exist in Eno lib repo."
exit 1
fi
check-version:
needs: eno-lib
runs-on: ubuntu-latest
outputs:
snapshot-version: ${{ steps.version.outputs.version }}
steps:
- uses: actions/checkout@v4
- name: Get version
id: version
run: echo "version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT
- name: Check Eno WS tag ${{ steps.version.outputs.version }} existence
id: check-tag-exists
uses: mukunku/[email protected]
with:
tag: ${{ steps.version.outputs.version }}
- name: Eno WS tag verification
id: check-tag
run: |
if ! [[ "${{ steps.version.outputs.version }}" =~ ^2.[0-9]+.[0-9]+-SNAPSHOT.?[0-9]*$ ]]; then
echo "Version on v2-main ${{ steps.version.outputs.version }} branch does not match the format 2.Y.Z-SNAPSHOT"
exit 1
fi
if [[ "${{ steps.check-tag-exists.outputs.exists }}" == "true" ]]; then
echo "Nothing to tag/release, the tag ${{ steps.version.outputs.version }} already exists"
exit 1
fi
publish-docker:
needs: [ eno-lib, check-version ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
- name: Checkout Eno lib repo
uses: actions/checkout@v4
with:
fetch-depth: 1
ref: "v${{ needs.eno-lib.outputs.version }}"
repository: InseeFr/Eno
path: Eno
- name: Build Eno lib
working-directory: ./Eno
run: mvn --batch-mode clean process-classes install --no-transfer-progress -DskipTests=true -Dmaven.javadoc.skip=true
- name: Build Eno-WS
run: mvn --batch-mode clean package --no-transfer-progress -DskipTests=true
- name: Publish to Registry
uses: elgohr/Publish-Docker-Github-Action@v5
with:
name: inseefr/eno-ws
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
tags: ${{ needs.check-version.outputs.snapshot-version }}
create-tag:
needs: [ check-version, publish-docker ]
runs-on: ubuntu-latest
steps:
- name: Create tag
uses: actions/github-script@v7
with:
script: |
github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'refs/tags/${{ needs.check-version.outputs.snapshot-version }}',
sha: context.sha
})
write-comment:
needs: [ check-version, publish-docker ]
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: '👋 Version ${{ needs.check-version.outputs.snapshot-version }} deployed on docker hub'
})