npm install -g npm@latest npm install -g @angular/cli ng new mon-premier-projet cd mon-premier-projet ng serve --open ng new mon-projet-angular --style=scss --skip-tests=true. npm install bootstrap@3.3.7 --save. ng serve import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'] }) export class AppComponent { title = 'app'; } ng generate component mon-premier lastUpdate = new Promise((resolve, reject) => { const date = new Date(); setTimeout( () => { resolve(date); }, 2000 ); }); <p>Mis à jour : {{ lastUpdate | async | date: 'yMMMMEEEEd' | uppercase }}</p> app/services export class AppareilService { } import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { MonPremierComponent } from './mon-premier/mon-premier.component'; import { AppareilComponent } from './appareil/appareil.component'; import { FormsModule } from '@angular/forms'; import { AppareilService } from './services/appareil.service'; @NgModule({ declarations: [ AppComponent, MonPremierComponent, AppareilComponent ], imports: [ BrowserModule, FormsModule ], providers: [ AppareilService ], bootstrap: [AppComponent] }) export class AppModule { } constructor(private appareilService: AppareilService) { setTimeout( () => { this.isAuth = true; }, 4000 ); } export class AppareilService { appareils = [ { name: 'Machine à laver', status: 'éteint' }, { name: 'Frigo', status: 'allumé' }, { name: 'Ordinateur', status: 'éteint' } ]; } Les routes app.module.ts import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { MonPremierComponent } from './mon-premier/mon-premier.component'; import { AppareilComponent } from './appareil/appareil.component'; import { FormsModule } from '@angular/forms'; import { AppareilService } from './services/appareil.service'; import { AuthComponent } from './auth/auth.component'; import { AppareilViewComponent } from './appareil-view/appareil-view.component'; import { Routes } from '@angular/router'; const appRoutes: Routes = [ { path: 'appareils', component: AppareilViewComponent }, { path: 'auth', component: AuthComponent }, { path: '', component: AppareilViewComponent } ]; <router-outlet></router-outlet> import { Component, OnInit } from '@angular/core'; import { AuthService } from '../services/auth.service'; @Component({ selector: 'app-auth', templateUrl: './auth.component.html', styleUrls: ['./auth.component.scss'] }) export class AuthComponent implements OnInit { authStatus: boolean; constructor(private authService: AuthService) { } ngOnInit() { this.authStatus = this.authService.isAuth; } onSignIn() { this.authService.signIn().then( () => { console.log('Sign in successful!'); this.authStatus = this.authService.isAuth; } ); } onSignOut() { this.authService.signOut(); this.authStatus = this.authService.isAuth; } } <h2>Authentification</h2> <button class="btn btn-success" *ngIf="!authStatus" (click)="onSignIn()">Se connecter</button> <button class="btn btn-danger" *ngIf="authStatus" (click)="onSignOut()">Se déconnecter</button>
nov
16
Posted by : 16 novembre 2019
| On :oct
17
Posted by : 17 octobre 2019
| On :La lecture
https://thierry-leriche-dessirier.developpez.com/tutoriels/java/vertx/discuter-via-event-bus/
oct
17
Posted by : 17 octobre 2019
| On :download the oc command line from minishift on the right top corner
this template will set up for you a complete CI/CD with gogs, jenckins sonar with in backend postgre sql
I’ve encounter start issue on my desktop, a set up at least 10go RAM is required, then restart individually the process it shall work
oc process -f https://raw.githubusercontent.com/OpnShiftDemos/openshift-cd-demo/master/cicd-gogs-template.yaml | oc create -f -
oc process -f https://raw.githubusercontent.com/siamaksade/openshift-cd-demo/ocp-4.1/cicd-template.yaml | oc create -f -
# Create Projects oc new-project dev --display-name="Tasks - Dev" oc new-project stage --display-name="Tasks - Stage" oc new-project cicd --display-name="CI/CD" # Grant Jenkins Access to Projects oc policy add-role-to-group edit system:serviceaccounts:cicd -n dev oc policy add-role-to-group edit system:serviceaccounts:cicd -n stage# Deploy Demo oc new-app -n cicd -f https://raw.githubusercontent.com/siamaksade/openshift-cd-demo/ocp-4.1/cicd-template.yaml # the yaml bellow
apiVersion: v1 kind: Template labels: template: cicd group: cicd metadata: annotations: iconClass: icon-jenkins tags: instant-app,jenkins,gogs,nexus,cicd name: cicd message: "Use the following credentials for login:\nJenkins: use your OpenShift credentials\nNexus: admin/admin123\nSonarQube: admin/admin\nGogs Git Server: gogs/gogs" parameters: - displayName: DEV project name value: dev name: DEV_PROJECT required: true - displayName: STAGE project name value: stage name: STAGE_PROJECT required: true - displayName: Ephemeral description: Use no persistent storage for Gogs and Nexus value: "true" name: EPHEMERAL required: true - description: Webhook secret from: '[a-zA-Z0-9]{8}' generate: expression name: WEBHOOK_SECRET required: true - displayName: Integrate Quay.io description: Integrate image build and deployment with Quay.io value: "false" name: ENABLE_QUAY required: true - displayName: Quay.io Username description: Quay.io username to push the images to tasks-sample-app repository on your Quay.io account name: QUAY_USERNAME - displayName: Quay.io Password description: Quay.io password to push the images to tasks-sample-app repository on your Quay.io account name: QUAY_PASSWORD - displayName: Quay.io Image Repository description: Quay.io repository for pushing Tasks container images name: QUAY_REPOSITORY required: true value: tasks-app objects: - apiVersion: v1 groupNames: null kind: RoleBinding metadata: name: default_admin roleRef: name: admin subjects: - kind: ServiceAccount name: default # Pipeline - apiVersion: v1 kind: BuildConfig metadata: annotations: pipeline.alpha.openshift.io/uses: '[{"name": "jenkins", "namespace": "", "kind": "DeploymentConfig"}]' labels: app: cicd-pipeline name: cicd-pipeline name: tasks-pipeline spec: triggers: - type: GitHub github: secret: ${WEBHOOK_SECRET} - type: Generic generic: secret: ${WEBHOOK_SECRET} runPolicy: Serial source: type: None strategy: jenkinsPipelineStrategy: env: - name: DEV_PROJECT value: ${DEV_PROJECT} - name: STAGE_PROJECT value: ${STAGE_PROJECT} - name: ENABLE_QUAY value: ${ENABLE_QUAY} jenkinsfile: |- def mvnCmd = "mvn -s configuration/cicd-settings-nexus3.xml" pipeline { agent { label 'maven' } stages { stage('Build App') { steps { git branch: 'eap-7', url: 'http://gogs:3000/gogs/openshift-tasks.git' sh "${mvnCmd} install -DskipTests=true" } } stage('Test') { steps { sh "${mvnCmd} test" step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml']) } } stage('Code Analysis') { steps { script { sh "${mvnCmd} sonar:sonar -Dsonar.host.url=http://sonarqube:9000 -DskipTests=true" } } } stage('Archive App') { steps { sh "${mvnCmd} deploy -DskipTests=true -P nexus3" } } stage('Build Image') { steps { sh "cp target/openshift-tasks.war target/ROOT.war" script { openshift.withCluster() { openshift.withProject(env.DEV_PROJECT) { openshift.selector("bc", "tasks").startBuild("--from-file=target/ROOT.war", "--wait=true") } } } } } stage('Deploy DEV') { steps { script { openshift.withCluster() { openshift.withProject(env.DEV_PROJECT) { openshift.selector("dc", "tasks").rollout().latest(); } } } } } stage('Promote to STAGE?') { agent { label 'skopeo' } steps { timeout(time:15, unit:'MINUTES') { input message: "Promote to STAGE?", ok: "Promote" } script { openshift.withCluster() { if (env.ENABLE_QUAY.toBoolean()) { withCredentials([usernamePassword(credentialsId: "${openshift.project()}-quay-cicd-secret", usernameVariable: "QUAY_USER", passwordVariable: "QUAY_PWD")]) { sh "skopeo copy docker://quay.io/${QUAY_USERNAME}/${QUAY_REPOSITORY}:latest docker://quay.io/${QUAY_USERNAME}/${QUAY_REPOSITORY}:stage --src-creds \"$QUAY_USER:$QUAY_PWD\" --dest-creds \"$QUAY_USER:$QUAY_PWD\" --src-tls-verify=false --dest-tls-verify=false" } } else { openshift.tag("${env.DEV_PROJECT}/tasks:latest", "${env.STAGE_PROJECT}/tasks:stage") } } } } } stage('Deploy STAGE') { steps { script { openshift.withCluster() { openshift.withProject(env.STAGE_PROJECT) { openshift.selector("dc", "tasks").rollout().latest(); } } } } } } } type: JenkinsPipeline - apiVersion: v1 kind: ConfigMap metadata: labels: app: cicd-pipeline role: jenkins-slave name: jenkins-slaves data: maven-template: |- <org.csanchez.jenkins.plugins.kubernetes.PodTemplate> <inheritFrom></inheritFrom> <name>maven</name> <privileged>false</privileged> <alwaysPullImage>false</alwaysPullImage> <instanceCap>2147483647</instanceCap> <idleMinutes>0</idleMinutes> <label>maven</label> <serviceAccount>jenkins</serviceAccount> <nodeSelector></nodeSelector> <customWorkspaceVolumeEnabled>false</customWorkspaceVolumeEnabled> <workspaceVolume class="org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.EmptyDirWorkspaceVolume"> <memory>false</memory> </workspaceVolume> <volumes /> <containers> <org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate> <name>jnlp</name> <image>openshift/jenkins-agent-maven-35-centos7</image> <privileged>false</privileged> <alwaysPullImage>false</alwaysPullImage> <workingDir>/tmp</workingDir> <command></command> <args>${computer.jnlpmac} ${computer.name}</args> <ttyEnabled>false</ttyEnabled> <resourceRequestCpu>200m</resourceRequestCpu> <resourceRequestMemory>512Mi</resourceRequestMemory> <resourceLimitCpu>2</resourceLimitCpu> <resourceLimitMemory>4Gi</resourceLimitMemory> <envVars/> </org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate> </containers> <envVars/> <annotations/> <imagePullSecrets/> </org.csanchez.jenkins.plugins.kubernetes.PodTemplate> skopeo-template: |- <org.csanchez.jenkins.plugins.kubernetes.PodTemplate> <inheritFrom></inheritFrom> <name>skopeo</name> <privileged>false</privileged> <alwaysPullImage>false</alwaysPullImage> <instanceCap>2147483647</instanceCap> <idleMinutes>0</idleMinutes> <label>skopeo</label> <serviceAccount>jenkins</serviceAccount> <nodeSelector></nodeSelector> <customWorkspaceVolumeEnabled>false</customWorkspaceVolumeEnabled> <workspaceVolume class="org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.EmptyDirWorkspaceVolume"> <memory>false</memory> </workspaceVolume> <volumes /> <containers> <org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate> <name>jnlp</name> <image>docker.io/siamaksade/jenkins-slave-skopeo-centos7</image> <privileged>false</privileged> <alwaysPullImage>false</alwaysPullImage> <workingDir>/tmp</workingDir> <command></command> <args>${computer.jnlpmac} ${computer.name}</args> <ttyEnabled>false</ttyEnabled> <envVars/> </org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate> </containers> <envVars/> <annotations/> <imagePullSecrets/> </org.csanchez.jenkins.plugins.kubernetes.PodTemplate> # Setup Demo - apiVersion: batch/v1 kind: Job metadata: name: cicd-demo-installer spec: activeDeadlineSeconds: 400 completions: 1 parallelism: 1 template: spec: containers: - env: - name: CICD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace command: - /bin/bash - -x - -c - | # adjust jenkins oc set resources dc/jenkins --limits=cpu=2,memory=2Gi --requests=cpu=100m,memory=512Mi oc label dc jenkins app=jenkins --overwrite # setup dev env oc import-image wildfly --from=openshift/wildfly-120-centos7 --confirm -n ${DEV_PROJECT} if [ "${ENABLE_QUAY}" == "true" ] ; then # cicd oc create secret generic quay-cicd-secret --from-literal="username=${QUAY_USERNAME}" --from-literal="password=${QUAY_PASSWORD}" -n ${CICD_NAMESPACE} oc label secret quay-cicd-secret credential.sync.jenkins.openshift.io=true -n ${CICD_NAMESPACE} # dev oc create secret docker-registry quay-cicd-secret --docker-server=quay.io --docker-username="${QUAY_USERNAME}" --docker-password="${QUAY_PASSWORD}" --docker-email=cicd@redhat.com -n ${DEV_PROJECT} oc new-build --name=tasks --image-stream=wildfly:latest --binary=true --push-secret=quay-cicd-secret --to-docker --to='quay.io/${QUAY_USERNAME}/${QUAY_REPOSITORY}:latest' -n ${DEV_PROJECT} oc new-app --name=tasks --docker-image=quay.io/${QUAY_USERNAME}/${QUAY_REPOSITORY}:latest --allow-missing-images -n ${DEV_PROJECT} oc set triggers dc tasks --remove-all -n ${DEV_PROJECT} oc patch dc tasks -p '{"spec": {"template": {"spec": {"containers": [{"name": "tasks", "imagePullPolicy": "Always"}]}}}}' -n ${DEV_PROJECT} oc delete is tasks -n ${DEV_PROJECT} oc secrets link default quay-cicd-secret --for=pull -n ${DEV_PROJECT} # stage oc create secret docker-registry quay-cicd-secret --docker-server=quay.io --docker-username="${QUAY_USERNAME}" --docker-password="${QUAY_PASSWORD}" --docker-email=cicd@redhat.com -n ${STAGE_PROJECT} oc new-app --name=tasks --docker-image=quay.io/${QUAY_USERNAME}/${QUAY_REPOSITORY}:stage --allow-missing-images -n ${STAGE_PROJECT} oc set triggers dc tasks --remove-all -n ${STAGE_PROJECT} oc patch dc tasks -p '{"spec": {"template": {"spec": {"containers": [{"name": "tasks", "imagePullPolicy": "Always"}]}}}}' -n ${STAGE_PROJECT} oc delete is tasks -n ${STAGE_PROJECT} oc secrets link default quay-cicd-secret --for=pull -n ${STAGE_PROJECT} else # dev oc new-build --name=tasks --image-stream=wildfly:latest --binary=true -n ${DEV_PROJECT} oc new-app tasks:latest --allow-missing-images -n ${DEV_PROJECT} oc set triggers dc -l app=tasks --containers=tasks --from-image=tasks:latest --manual -n ${DEV_PROJECT} # stage oc new-app tasks:stage --allow-missing-images -n ${STAGE_PROJECT} oc set triggers dc -l app=tasks --containers=tasks --from-image=tasks:stage --manual -n ${STAGE_PROJECT} fi # dev project oc expose dc/tasks --port=8080 -n ${DEV_PROJECT} oc expose svc/tasks -n ${DEV_PROJECT} oc set probe dc/tasks --readiness --get-url=http://:8080/ws/demo/healthcheck --initial-delay-seconds=30 --failure-threshold=10 --period-seconds=10 -n ${DEV_PROJECT} oc set probe dc/tasks --liveness --get-url=http://:8080/ws/demo/healthcheck --initial-delay-seconds=180 --failure-threshold=10 --period-seconds=10 -n ${DEV_PROJECT} oc rollout cancel dc/tasks -n ${STAGE_PROJECT} # stage project oc expose dc/tasks --port=8080 -n ${STAGE_PROJECT} oc expose svc/tasks -n ${STAGE_PROJECT} oc set probe dc/tasks --readiness --get-url=http://:8080/ws/demo/healthcheck --initial-delay-seconds=30 --failure-threshold=10 --period-seconds=10 -n ${STAGE_PROJECT} oc set probe dc/tasks --liveness --get-url=http://:8080/ws/demo/healthcheck --initial-delay-seconds=180 --failure-threshold=10 --period-seconds=10 -n ${STAGE_PROJECT} oc rollout cancel dc/tasks -n ${DEV_PROJECT} # deploy gogs HOSTNAME=$(oc get route jenkins -o template --template='{{.spec.host}}' | sed "s/jenkins-${CICD_NAMESPACE}.//g") GOGS_HOSTNAME="gogs-$CICD_NAMESPACE.$HOSTNAME" if [ "${EPHEMERAL}" == "true" ] ; then oc new-app -f https://raw.githubusercontent.com/siamaksade/gogs-openshift-docker/master/openshift/gogs-template.yaml \ --param=GOGS_VERSION=0.11.34 \ --param=DATABASE_VERSION=9.6 \ --param=HOSTNAME=$GOGS_HOSTNAME \ --param=SKIP_TLS_VERIFY=true else oc new-app -f https://raw.githubusercontent.com/siamaksade/gogs-openshift-docker/master/openshift/gogs-persistent-template.yaml \ --param=GOGS_VERSION=0.11.34 \ --param=DATABASE_VERSION=9.6 \ --param=HOSTNAME=$GOGS_HOSTNAME \ --param=SKIP_TLS_VERIFY=true fi sleep 5 if [ "${EPHEMERAL}" == "true" ] ; then oc new-app -f https://raw.githubusercontent.com/siamaksade/sonarqube/master/sonarqube-template.yml --param=SONARQUBE_MEMORY_LIMIT=2Gi else oc new-app -f https://raw.githubusercontent.com/siamaksade/sonarqube/master/sonarqube-persistent-template.yml --param=SONARQUBE_MEMORY_LIMIT=2Gi fi oc set resources dc/sonardb --limits=cpu=200m,memory=512Mi --requests=cpu=50m,memory=128Mi oc set resources dc/sonarqube --limits=cpu=1,memory=2Gi --requests=cpu=50m,memory=128Mi if [ "${EPHEMERAL}" == "true" ] ; then oc new-app -f https://raw.githubusercontent.com/OpenShiftDemos/nexus/master/nexus3-template.yaml --param=NEXUS_VERSION=3.13.0 --param=MAX_MEMORY=2Gi else oc new-app -f https://raw.githubusercontent.com/OpenShiftDemos/nexus/master/nexus3-persistent-template.yaml --param=NEXUS_VERSION=3.13.0 --param=MAX_MEMORY=2Gi fi oc set resources dc/nexus --requests=cpu=200m --limits=cpu=2 GOGS_SVC=$(oc get svc gogs -o template --template='{{.spec.clusterIP}}') GOGS_USER=gogs GOGS_PWD=gogs oc rollout status dc gogs _RETURN=$(curl -o /tmp/curl.log -sL --post302 -w "%{http_code}" http://$GOGS_SVC:3000/user/sign_up \ --form user_name=$GOGS_USER \ --form password=$GOGS_PWD \ --form retype=$GOGS_PWD \ --form email=admin@gogs.com) sleep 5 if [ $_RETURN != "200" ] && [ $_RETURN != "302" ] ; then echo "ERROR: Failed to create Gogs admin" cat /tmp/curl.log exit 255 fi sleep 10 cat <<EOF > /tmp/data.json { "clone_addr": "https://github.com/OpenShiftDemos/openshift-tasks.git", "uid": 1, "repo_name": "openshift-tasks" } EOF _RETURN=$(curl -o /tmp/curl.log -sL -w "%{http_code}" -H "Content-Type: application/json" \ -u $GOGS_USER:$GOGS_PWD -X POST http://$GOGS_SVC:3000/api/v1/repos/migrate -d @/tmp/data.json) if [ $_RETURN != "201" ] ;then echo "ERROR: Failed to import openshift-tasks GitHub repo" cat /tmp/curl.log exit 255 fi sleep 5 cat <<EOF > /tmp/data.json { "type": "gogs", "config": { "url": "https://openshift.default.svc.cluster.local/apis/build.openshift.io/v1/namespaces/$CICD_NAMESPACE/buildconfigs/tasks-pipeline/webhooks/${WEBHOOK_SECRET}/generic", "content_type": "json" }, "events": [ "push" ], "active": true } EOF _RETURN=$(curl -o /tmp/curl.log -sL -w "%{http_code}" -H "Content-Type: application/json" \ -u $GOGS_USER:$GOGS_PWD -X POST http://$GOGS_SVC:3000/api/v1/repos/gogs/openshift-tasks/hooks -d @/tmp/data.json) if [ $_RETURN != "201" ] ; then echo "ERROR: Failed to set webhook" cat /tmp/curl.log exit 255 fi oc label dc sonarqube "app.kubernetes.io/part-of"="sonarqube" --overwrite oc label dc sonardb "app.kubernetes.io/part-of"="sonarqube" --overwrite oc label dc jenkins "app.kubernetes.io/part-of"="jenkins" --overwrite oc label dc nexus "app.kubernetes.io/part-of"="nexus" --overwrite oc label dc gogs "app.kubernetes.io/part-of"="gogs" --overwrite oc label dc gogs-postgresql "app.kubernetes.io/part-of"="gogs" --overwrite image: quay.io/openshift/origin-cli:v4.0 name: cicd-demo-installer-job resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File restartPolicy: Never
oct
16
Posted by : 16 octobre 2019
| On :installation sous windows 10
* Pouvoir executer le power shell en administrateur
1 – Install Hyper-V in Windows 10. See Windows instructions.
2– Add the user to the local Hyper-V Administrators group.
PS command :
([adsi]"WinNT://./Hyper-V Administrators,group").Add("WinNT://$env:UserDomain/$env:Username,user")
ou bien manuellement sur pannaeau configuration -> outils administration
– Add an External Virtual Switch. => (à Gauche => Gestionnaire commutateur virtuel)
=> bien verifier le nom de la carte réseau ASSOCIE
Identify first the net adapter to use.
PS command :
Get-NetAdapter
Then store which one you want to use for Minishift network access.
PS command :
$net = Get-NetAdapter -Name 'Wi-Fi'
A
At last create a virtual switch for Hyper-V :
New-VMSwitch -Name "External VM Switch" -AllowManagementOS $True -NetAdapterName $net.Name
I named it « External VM Switch » but the name doesn’t matter.
From now Powershell is not required any longer. You can use either PowerShell or cmd.exe.
2) Starting Up Minishift
- Astuse Pour demarrer appliquer la commande suivante sur windows
minishift config set skip-check-hyperv-driver true
Minishift has to aware of the external virtual switch to use.
You can set its name from the Minishift command arg or as a environment variable.
In theory, that should be enough but it will not the case on Windows 10:
minishift.exe config set hyperv-virtual-switch « External VM Switch »
minishift start
* Output power shell
– Starting profile ‘minishift’
– Check if deprecated options are used … OK
– Checking if https://github.com is reachable … OK
– Checking if requested OpenShift version ‘v3.11.0′ is valid … OK
– Checking if requested OpenShift version ‘v3.11.0′ is supported … OK
– Checking if requested hypervisor ‘hyperv’ is supported on this platform … OK
– Checking if Powershell is available … OK
– Checking if Hyper-V driver is installed … SKIP
– Checking if Hyper-V driver is configured to use a Virtual Switch … SKIP
– Checking if user is a member of the Hyper-V Administrators group … SKIP
– Checking the ISO URL … OK
– Downloading OpenShift binary ‘oc’ version ‘v3.11.0′
53.59 MiB / 53.59 MiB [===================================================================================] 100.00% 0s– Downloading OpenShift v3.11.0 checksums … OK
– Checking if provided oc flags are supported … OK
– Starting the OpenShift cluster using ‘hyperv’ hypervisor …
– Minishift VM will be configured with …
Memory: 4 GB
vCPUs : 2
Disk size: 20 GB
Downloading ISO ‘https://github.com/minishift/minishift-centos-iso/releases/download/v1.15.0/minishift-centos7.iso’
355.00 MiB / 355.00 MiB [
This command execution will download the Minishift ISO but will fail when it try to retrieve the downloaded ISO on Windows 10 because of the path specified in the running script that relies on the Linux based filesystem layout.
After the failure, a simple workaround is to move the downloaded ISO where you like and to refer it as you execute the start command of the Minishift executable.
It would give :
minishift start --hyperv-virtual-switch "External VM Switch" --iso-url file://D:/minishift/minishift-centos7.iso
Where you should refer in iso-url the file URI of the Minishift ISO.
The startup will take a some time. At the end you should see something like :
3) Stop Minishift
As you finished to use Minishift in most of case you don’t want to delete all files created to start it.
So you want to release memory/cpu resources allocated to Minishift by stopping it :
minishift stop
4) Delete Minishift
A weird issue with Minishift or the need to start from scratch : delete files associated to the Minishift instance/cluster : minishift delete --force
4) Problems to start up Minishift ?
Q : I have a broad error but I don’t see the cause.
A : Increase the logging verbosity by adding arguments in the minishift command : --show-libmachine-logs -v5
Q : I feel that I fixed what it was wrong or missing but the minishift startup still fails.
A : delete startup files and restart Minishift from scratch.
This command will help :
minishift delete --force
5) Opening Minishift console
Either use the URL provided in the logs or use the console option that is minishift console
:
Install ISTIO, next step !
autre source ; RHEL official doc
https://www.marksei.com/openshift-minishift-widnows/
http://myjavaadventures.com/blog/2018/11/15/installer-minishift/
https://blog.dbi-services.com/openshift-on-my-windows-10-laptop-with-minishift/
https://www.informatiweb.net/tutoriels/informatique/11-virtualisation/268–virtualbox-comment-utiliser-et-configurer-les-differents-modes-d-acces-reseau-d-une-machine-virtuelle–2.html#host-only-adapter
https://access.redhat.com/documentation/en-us/red_hat_container_development_kit/3.3/html/getting_started_guide/getting_started_with_container_development_kit
août
20
Posted by : 20 août 2019
| On :vimeo
https://vimeo.com/39796236
source code https://github.com/DoctusHartwald/ticket-monster
sample pom.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright 2016-2017 Red Hat, Inc, and individual contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>fruits</artifactId> <version>15-SNAPSHOT</version> <name>Simple Fruits Application</name> <description>Spring Boot - CRUD Booster</description> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.min.version>3.3.9</maven.min.version> <postgresql.version>9.4.1212</postgresql.version> <openjdk18-openshift.version>1.3</openjdk18-openshift.version> <spring-boot.version>2.1.3.RELEASE</spring-boot.version> <spring-boot-bom.version>2.1.3.Final-redhat-00001</spring-boot-bom.version> <maven-surefire-plugin.version>2.20</maven-surefire-plugin.version> <fabric8-maven-plugin.version>3.5.40</fabric8-maven-plugin.version> <fabric8.openshift.trimImageInContainerSpec>true</fabric8.openshift.trimImageInContainerSpec> <fabric8.skip.build.pom>true</fabric8.skip.build.pom> <fabric8.generator.from> registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift:${openjdk18-openshift.version} </fabric8.generator.from> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>me.snowdrop</groupId> <artifactId>spring-boot-bom</artifactId> <version>${spring-boot-bom.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- TODO: ADD Actuator dependency here --> <!-- Testing --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
<!--/actuator/health
management.endpoints.web.exposure.include=*/actuator/metrics/acutuator/metrics/[metric-name]/actuator/beansJaeger and Tracing--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency><dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>${postgresql.version}</version> <scope>runtime</scope> </dependency></dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <configuration> <profiles> <profile>local</profile> </profiles> <classifier>exec</classifier> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <profiles> <profile> <id>local</id> <activation> <activeByDefault>true</activeByDefault> </activation> <dependencies> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> </dependencies> </profile> <profile> <id>openshift</id> <dependencies> <!-- TODO: ADD PostgreSQL database dependency here --> </dependencies> <build> <plugins> <plugin> <groupId>io.fabric8</groupId> <artifactId>fabric8-maven-plugin</artifactId> <version>${fabric8-maven-plugin.version}</version> <executions> <execution> <id>fmp</id> <goals> <goal>resource</goal> <goal>build</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> </project>
test class sample
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class ApplicationTest { @Autowired private FruitRepository fruitRepository; @Before public void beforeTest() { } @Test public void testGetAll() { assertTrue(fruitRepository.findAll().spliterator().getExactSizeIfKnown()==3); } @Test public void getOne() { assertTrue(fruitRepository.findById(1).orElse(null)!=null); }
Spring REst services
package com.example.service; import java.util.List; import java.util.Objects; import java.util.Spliterator; import java.util.stream.Collectors; import java.util.stream.StreamSupport; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; @Controller @RequestMapping(value = "/api/fruits") public class FruitController { private final FruitRepository repository; @Autowired public FruitController(FruitRepository repository) { this.repository = repository; } @ResponseBody @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE) public List getAll() { return StreamSupport .stream(repository.findAll().spliterator(), false) .collect(Collectors.toList()); }@ResponseBody @ResponseStatus(HttpStatus.CREATED) @PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public Fruit post(@RequestBody(required = false) Fruit fruit) { verifyCorrectPayload(fruit); return repository.save(fruit); } @ResponseBody @GetMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE) public Fruit get(@PathVariable("id") Integer id) { verifyFruitExists(id); return repository.findById(id).orElse(null); }}
exemple fabric 8
apiVersion: v1 kind: Deployment metadata: name: ${project.artifactId} spec: template: spec: containers: - env: - name: DB_USERNAME valueFrom: secretKeyRef: name: my-database-secret key: user - name: DB_PASSWORD valueFrom: secretKeyRef: name: my-database-secret key: password - name: JAVA_OPTIONS value: "-Dspring.profiles.active=openshift"
Properties openShift
spring.datasource.url=jdbc:postgresql://${MY_DATABASE_SERVICE_HOST}:${MY_DATABASE_SERVICE_PORT}/my_data spring.datasource.username=${DB_USERNAME} spring.datasource.password=${DB_PASSWORD} spring.datasource.driver-class-name=org.postgresql.Driver spring.jpa.hibernate.ddl-auto=create
mai
06
Posted by : 6 mai 2019
| On :196 242 3 881250949 186 302 3 891717742 22 377 1 878887116 244 51 2 880606923 166 346 1 886397596 298 474 4 884182806 115 265 2 881171488 253 465 5 891628467 305 451 3 886324817 6 86 3 883603013 62 257 2 879372434 286 1014 5 879781125 200 222 5 876042340 210 40 3 891035994 224 29 3 888104457 303 785 3 879485318 122 387 5 879270459 194 274 2 879539794 291 1042 4 874834944 234 1184 2 892079237 119 392 4 886176814 167 486 4 892738452 299 144 4 877881320 291 118 2 874833878 308 1 4 887736532 95 546 2 879196566 38 95 5 892430094 102 768 2 883748450 63 277 4 875747401 160 234 5 876861185 50 246 3 877052329 301 98 4 882075827 225 193 4 879539727 290 88 4 880731963 97 194 3 884238860 157 274 4 886890835 181 1081 1 878962623 278 603 5 891295330 276 796 1 874791932 7 32 4 891350932 10 16 4 877888877 284 304 4 885329322 201 979 2 884114233 276 564 3 874791805 287 327 5 875333916 246 201 5 884921594 242 1137 5 879741196 249 241 5 879641194 99 4 5 886519097 178 332 3 882823437 251 100 4 886271884 81 432 2 876535131 260 322 4 890618898 25 181 5 885853415 59 196 5 888205088 72 679 2 880037164
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.test</groupId> <artifactId>initiation-spark-java</artifactId> <version>1.0.0-SNAPSHOT</version> <repositories> <repository> <id>Apache Spark temp - Release Candidate repo</id> <url>https://repository.apache.org/content/repositories/orgapachespark-1080/</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>1.3.1</version> <!--<scope>provided</scope>--><!-- cette partie là a été omise dans notre projet pour pouvoir lancer depuis maven notre projet --> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>1.3.1</version> <!--<scope>provided</scope>--> </dependency> </dependencies> <build> <plugins> <!-- we want JDK 1.8 source and binary compatiblility --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
package spark; import java.io.Serializable; import java.time.LocalDateTime; // Spark nécessite des structures sérializables !! public class Rating implements Serializable { public int rating; public long movie; public long user; public LocalDateTime timestamp; public Rating(long user, long movie, int rating, LocalDateTime timestamp) { this.user = user; this.movie = movie; this.rating = rating; this.timestamp = timestamp; } }
package spark; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import java.net.URISyntaxException; import java.nio.file.Paths; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Comparator; import java.util.Scanner; /** * Calcule la moyenne, le min, le max et le nombre de votes de l'utilisateur n°200. */ public class Workshop1 { public void run() throws URISyntaxException { SparkConf conf = new SparkConf().setAppName("Workshop").setMaster("local[*]"); JavaSparkContext sc = new JavaSparkContext(conf); String ratingsPath = Paths.get(getClass().getResource("/ratings.txt").getPath()).toString(); JavaRDD<Rating> ratings = sc.textFile(ratingsPath) .map(line -> line.split("\\t")) .map(row -> new Rating( Long.parseLong(row[0]), Long.parseLong(row[1]), Integer.parseInt(row[2]), LocalDateTime.ofInstant(Instant.ofEpochSecond(Long.parseLong(row[3]) * 1000), ZoneId.systemDefault()) )); double mean = ratings .filter(rating -> rating.user == 200) .mapToDouble(rating -> rating.rating) .mean(); double max = ratings .filter(rating -> rating.user == 200) .mapToDouble(rating -> rating.rating) .max(Comparator.<Double>naturalOrder()); double min = ratings .filter(rating -> rating.user == 200) .mapToDouble(rating -> rating.rating) .min(Comparator.<Double>naturalOrder()); double count = ratings .filter(rating -> rating.user == 200) .count(); System.out.println("mean: " + mean); System.out.println("max: " + max); System.out.println("min: " + min); System.out.println("count: " + count); Scanner s=new Scanner(System.in); s.hasNextLine(); } public static void main(String... args) throws URISyntaxException { new Workshop1().run(); } }
mai
03
Posted by : 3 mai 2019
| On :https://javaetmoi.com/2015/04/initiation-apache-spark-en-java-devoxx/
https://github.com/arey/initiation-spark-java/blob/master/src/main/java/org/devoxx/spark/lab/devoxx2015/FirstRDD.java