Skip to content

Commit 3eb8534

Browse files
dubrslkisakovaanyt
authoredMay 10, 2023
Ticket/opi 1110 prepare for public (#35400)
- Update READ.ME - refactoring code for public --------- Co-authored-by: Kateryna Isakova <[email protected]> Co-authored-by: Andrii Yatsenko <[email protected]>
1 parent 0f4d2a9 commit 3eb8534

File tree

4 files changed

+248
-0
lines changed

4 files changed

+248
-0
lines changed
 

‎.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,4 @@ bin/*
5353
/.vagrant
5454
/.php-version
5555
/docker-compose.override.yml
56+
/.build

‎.rsync-exclude-prod

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
- */.git
33
- */.github
44
- */.gitignore
5+
- .build
56
- /node_modules
67
- vendor/oro/platform/build/node_modules
78
- [Tt]ests/[Uu]nit/

‎.rsync-exclude-test

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
- */.git
33
- */.github
44
- */.gitignore
5+
- .build
56
- /node_modules
67
- vendor/oro/platform/build/node_modules
78
- /public/media/**

‎Jenkinsfile

+245
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
pipeline {
2+
environment {
3+
ORO_BASELINE_VERSION = 'master-latest'
4+
ORO_BEHAT_OPTIONS = '--skip-isolators'
5+
ORO_BEHAT_TAGS = '@e2esmokeci'
6+
}
7+
agent none
8+
options {
9+
timeout(time: 1, unit: 'HOURS')
10+
buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '150', numToKeepStr: '50'))
11+
disableResume()
12+
timestamps ()
13+
}
14+
stages {
15+
stage('Init') {
16+
steps {
17+
script {
18+
try {
19+
retry(5) {
20+
checkout([
21+
$class: 'GitSCM',
22+
branches: [[name: 'master']],
23+
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: ".build"]],
24+
userRemoteConfigs: [[url: 'https://github.com/oroinc/docker-build.git']]
25+
])
26+
}
27+
} catch (error) {
28+
error message:"ERROR: Cannot perform git checkout!, Reason: '${error}'"
29+
}
30+
defaultVariables = readProperties(interpolate: true, file: "$WORKSPACE/.build/docker-compose/.env")
31+
readProperties(interpolate: true, defaults: defaultVariables + [ORO_IMAGE_TAG: env.BUILD_TAG], file: "$WORKSPACE/.env-build").each {key, value -> env[key] = value }
32+
sh '''
33+
printenv | sort
34+
rm -rf /dev/shm/${EXECUTOR_NUMBER}* ||:
35+
cp -rf $WORKSPACE /dev/shm/${EXECUTOR_NUMBER}
36+
cp -rf $WORKSPACE /dev/shm/${EXECUTOR_NUMBER}_1
37+
rm -rf /jenkins/.cache/composer
38+
'''
39+
}
40+
}
41+
}
42+
stage('Build') {
43+
parallel {
44+
stage('Build:prod') {
45+
stages {
46+
stage('Build:prod:source') {
47+
steps {
48+
dir("/dev/shm/${EXECUTOR_NUMBER}") { sh '''COMPOSER_PROCESS_TIMEOUT=600 .build/scripts/composer.sh -b $ORO_BASELINE_VERSION -- '--no-dev install' '''}
49+
}
50+
}
51+
stage('Build:prod:image') {
52+
steps {
53+
dir("/dev/shm/${EXECUTOR_NUMBER}") {
54+
sh '''
55+
docker buildx build --pull --load --rm --build-arg ORO_BASELINE_VERSION -t ${ORO_IMAGE,,}:$ORO_IMAGE_TAG -f ".build/docker/Dockerfile" .
56+
'''
57+
}
58+
}
59+
}
60+
stage('Build:prod:install:de') {
61+
environment {
62+
ORO_LANGUAGE = 'de_DE'
63+
ORO_FORMATTING_CODE = 'de_DE'
64+
}
65+
steps {
66+
dir("/dev/shm/${EXECUTOR_NUMBER}/$ORO_APP") {
67+
sh '''
68+
docker compose -p prod_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml down -v
69+
docker compose -p prod_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml up --exit-code-from install --quiet-pull install
70+
rm -rf .build/docker/public_storage
71+
rm -rf .build/docker/private_storage
72+
docker cp prod_${EXECUTOR_NUMBER}-install-1:/var/www/oro/public/media/ .build/docker/public_storage
73+
docker cp prod_${EXECUTOR_NUMBER}-install-1:/var/www/oro/var/data/ .build/docker/private_storage
74+
ORO_IMAGE_INIT=${ORO_IMAGE_INIT,,}-de DB_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' prod_${EXECUTOR_NUMBER}-db-1) docker compose -p prod_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml up --build --quiet-pull --exit-code-from backup backup
75+
'''
76+
}
77+
}
78+
}
79+
stage('Build:prod:install:fr') {
80+
environment {
81+
ORO_LANGUAGE = 'fr_FR'
82+
ORO_FORMATTING_CODE = 'fr_FR'
83+
}
84+
steps {
85+
dir("/dev/shm/${EXECUTOR_NUMBER}/$ORO_APP") {
86+
sh '''
87+
docker compose -p prod_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml down -v
88+
docker compose -p prod_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml up --exit-code-from install --quiet-pull install
89+
rm -rf .build/docker/public_storage
90+
rm -rf .build/docker/private_storage
91+
docker cp prod_${EXECUTOR_NUMBER}-install-1:/var/www/oro/public/media/ .build/docker/public_storage
92+
docker cp prod_${EXECUTOR_NUMBER}-install-1:/var/www/oro/var/data/ .build/docker/private_storage
93+
ORO_IMAGE_INIT=${ORO_IMAGE_INIT,,}-fr DB_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' prod_${EXECUTOR_NUMBER}-db-1) docker compose -p prod_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml up --build --quiet-pull --exit-code-from backup backup
94+
'''
95+
}
96+
}
97+
}
98+
stage('Build:prod:install:en') {
99+
steps {
100+
dir("/dev/shm/${EXECUTOR_NUMBER}") {
101+
sh '''
102+
docker compose -p prod_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml down -v
103+
docker compose -p prod_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml up --quiet-pull --exit-code-from install install
104+
rm -rf .build/docker/public_storage
105+
rm -rf .build/docker/private_storage
106+
docker cp prod_${EXECUTOR_NUMBER}-install-1:/var/www/oro/public/media/ .build/docker/public_storage
107+
docker cp prod_${EXECUTOR_NUMBER}-install-1:/var/www/oro/var/data/ .build/docker/private_storage
108+
DB_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' prod_${EXECUTOR_NUMBER}-db-1) docker compose -p prod_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml build backup
109+
'''
110+
}
111+
}
112+
}
113+
}
114+
}
115+
stage('Build:test') {
116+
environment {
117+
ORO_TESTS_PATH = 'src'
118+
}
119+
stages {
120+
stage('Build:test:source') {
121+
steps {
122+
dir("/dev/shm/${EXECUTOR_NUMBER}_1") {
123+
sh '''COMPOSER_PROCESS_TIMEOUT=600 .build/scripts/composer.sh -b $ORO_BASELINE_VERSION '''
124+
// sh '.build/scripts/test_php-cs-fixer.sh -b $ORO_BASELINE_VERSION'
125+
sh '.build/scripts/test_phpcs.sh -b $ORO_BASELINE_VERSION'
126+
sh '.build/scripts/test_phpmd.sh -b $ORO_BASELINE_VERSION'
127+
}
128+
}
129+
}
130+
stage('Build:test:unit') {
131+
steps {
132+
dir("/dev/shm/${EXECUTOR_NUMBER}_1") {sh '.build/scripts/test_unit.sh -b $ORO_BASELINE_VERSION'}
133+
}
134+
}
135+
stage('Build:test:image') {
136+
steps {
137+
dir("/dev/shm/${EXECUTOR_NUMBER}_1") {
138+
sh '''
139+
docker buildx build --pull --load --rm --build-arg ORO_BASELINE_VERSION -t ${ORO_IMAGE_TEST,,}:$ORO_IMAGE_TAG -f ".build/docker/Dockerfile-test" .
140+
'''
141+
}
142+
}
143+
}
144+
stage('Build:test:install') {
145+
steps {
146+
dir("/dev/shm/${EXECUTOR_NUMBER}_1") {
147+
sh '''
148+
echo "ORO_ENV=test" >> .build/docker-compose/.env
149+
docker compose -p test_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml down -v
150+
docker compose -p test_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml up --quiet-pull --exit-code-from install-test install-test
151+
rm -rf .build/docker/public_storage
152+
rm -rf .build/docker/private_storage
153+
docker cp test_${EXECUTOR_NUMBER}-install-1:/var/www/oro/public/media/ .build/docker/public_storage
154+
docker cp test_${EXECUTOR_NUMBER}-install-1:/var/www/oro/var/data/ .build/docker/private_storage
155+
DB_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' test_${EXECUTOR_NUMBER}-db-1) docker compose -p test_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml build backup-test
156+
'''
157+
}
158+
}
159+
}
160+
// stage('Build:test:functional') {
161+
// environment {
162+
// ORO_FUNCTIONAL_ARGS = ' '
163+
// }
164+
// steps {
165+
// dir("/dev/shm/${EXECUTOR_NUMBER}_1") {
166+
// sh '''
167+
// docker compose -p test_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml up --quiet-pull --exit-code-from functional functional
168+
// '''
169+
// }
170+
// }
171+
// }
172+
}
173+
}
174+
}
175+
}
176+
// stage('Test:Behat') {
177+
// environment {
178+
// ORO_BEHAT_ARGS = ' '
179+
// }
180+
// steps {
181+
// dir("/dev/shm/${EXECUTOR_NUMBER}") {
182+
// sh '''
183+
// docker compose -p prod_${EXECUTOR_NUMBER} --project-directory .build/docker-compose -f .build/docker-compose/compose-orocommerce-application.yaml up --quiet-pull --exit-code-from behat behat
184+
// '''
185+
// }
186+
// }
187+
// }
188+
stage('Push') {
189+
// environment {
190+
// KEY_FILE = credentials('jenkins_oro-product-development_iam_gserviceaccount_com')
191+
// configuration = 'oro-product-development'
192+
// credentials = "--configuration ${configuration}"
193+
// }
194+
steps {
195+
// gcloud config configurations list | grep ^${configuration} -q || gcloud config configurations create ${configuration}
196+
// gcloud config configurations activate ${configuration}
197+
// gcloud -q ${credentials} auth activate-service-account --key-file "$KEY_FILE" --project ${configuration}
198+
// gcloud ${credentials} auth configure-docker
199+
// set -x
200+
sh '''
201+
docker image ls
202+
'''
203+
// docker image push ${ORO_IMAGE,,}:$ORO_IMAGE_TAG
204+
// docker image push ${ORO_IMAGE_INIT,,}:$ORO_IMAGE_TAG
205+
// docker image push ${ORO_IMAGE_TEST,,}:$ORO_IMAGE_TAG
206+
// docker image push ${ORO_IMAGE_INIT_TEST,,}:$ORO_IMAGE_TAG
207+
// docker image rm -f ${ORO_IMAGE,,}:$ORO_IMAGE_TAG ||:
208+
// docker image rm -f ${ORO_IMAGE_INIT,,}:$ORO_IMAGE_TAG ||:
209+
// docker image rm -f ${ORO_IMAGE_TEST,,}:$ORO_IMAGE_TAG ||:
210+
// docker image rm -f ${ORO_IMAGE_INIT_TEST,,}:$ORO_IMAGE_TAG ||:
211+
// docker image prune -f
212+
}
213+
}
214+
}
215+
post {
216+
always {
217+
sh '''
218+
rm -rf "logs"
219+
mkdir -p "logs"
220+
cp -rfv "/dev/shm/${EXECUTOR_NUMBER}_1/var/logs/"* "logs"/ ||:
221+
printenv | grep ^ORO | sort | sed -e 's/=/="/;s/\$/"/' > "logs"/env-config
222+
docker ps -a -f "name=.*_.*-.*" > logs/docker_ps.txt ||:
223+
docker ps -a --format '{{.Names}}' -f "name=.*_.*-.*" | xargs -r -I {} bash -c "docker logs {} > logs/docker_logs_{}.txt 2>&1" ||:
224+
docker ps -a --format '{{.Names}}' -f "name=.*_.*-redis-.*" | xargs -r -I {} bash -c "docker exec -t {} redis-cli info > logs/docker_{}_info.txt 2>&1" ||:
225+
docker ps -a --format '{{.Names}}' -f "name=.*_.*-functional-.*" | xargs -r -I {} bash -c "docker cp {}:/var/www/oro//var/logs/junit logs" ||:
226+
docker ps -a --format '{{.Names}}' -f "name=.*_.*-functional-.*" | xargs -r -I {} bash -c "docker cp {}:/var/www/oro//var/logs/functional logs" ||:
227+
docker ps -a --format '{{.Names}}' -f "name=.*_.*-behat-.*" | xargs -r -I {} bash -c "docker cp {}:/var/www/oro//var/logs/junit logs" ||:
228+
docker ps -a --format '{{.Names}}' -f "name=.*_.*-behat-.*" | xargs -r -I {} bash -c "docker cp {}:/var/www/oro//var/logs/behat logs" ||:
229+
'''
230+
dir("logs") {
231+
archiveArtifacts defaultExcludes: false, allowEmptyArchive: true, artifacts: '**', excludes: '**/*.sql', caseSensitive: false
232+
junit allowEmptyResults: true, testResults: "junit/*.xml"
233+
}
234+
script {
235+
def issuesList = []
236+
discoverReferenceBuild referenceJob: env.JOB_NAME
237+
// issuesList.add(scanForIssues([blameDisabled: true, forensicsDisabled: true, tool: pmdParser(name: 'PHP MD', pattern: 'logs/**/static_analysis/phpmd*.xml')]))
238+
issuesList.add(scanForIssues([blameDisabled: true, forensicsDisabled: true, tool: phpCodeSniffer(name: 'PHP Code Sniffer', pattern: 'logs/**/static_analysis/phpcs*.xml')]))
239+
issuesList.add(scanForIssues([blameDisabled: true, forensicsDisabled: true, tool: checkStyle(name: 'PHP CS Fixer', pattern: 'logs/**/static_analysis/php-cs-fixer*.xml')]))
240+
publishIssues issues: issuesList, skipPublishingChecks: true
241+
}
242+
}
243+
}
244+
}
245+

0 commit comments

Comments
 (0)
Please sign in to comment.