ProHoster > ΠΠ»ΠΎΠ³ > administratio > Circuli inferni cum actionibus GitHub (aedificationem CI/CD pipeline pro Java project)
Circuli inferni cum actionibus GitHub (aedificationem CI/CD pipeline pro Java project)
Saepe in Java incepta ad aedificandum fistulas aedificandas habeo. Aliquando fons aperta est, aliquando non est. Nuper decrevi tentare aliqua repositoria mea a Travis-CI et TeamCity ad GitHub Actiones movere, et hoc est quod ex eo processit.
Quid faciemus automate?
Primum consilium opus est quod automate faciemus, parvam applicationem in tabernus Spring / Java 11 / Maven faciamus. Ad proposita huius articuli, in applicatione logicae omnino non quaerenda est: infrastructura circa applicationem interest nobis, ut simplex QUIS API moderatoris nobis sufficiat.
Fontes hic videre potes: github.com/antkorwin/github-actions Omnes gradus aedificationis pipelinei redduntur in petitionibus trahere huius rei.
JIRA et consilio
Dignum est dicere nos solere uti JIRA tamquam exitus venatoris, ut singulas tabulas huius incepti crearemus et primae ibi quaestiones addere:
Paulo post revertemur ad res commodas JIRA et GitHub quae coniunctim offerre possunt.
Nos ecclesiam project automate
Examen nostrum project per maven aedificatum est, ut aedificatio sit admodum simplex, omnibus nobis opus est sarcina mvn munda.
Ad hoc utens Github Actiones, opus erit limam creare in repositorio nostro laboris in describendo, hoc fieri potest cum file regulari yml, non possum dicere me "yml programmandi" amo, sed quid agamus - id facimus in .github/ directorio workflow/ lima build.yml in quo actiones describemus cum fabricando ramum magistri;
on β haec est descriptio eventus in quo scriptum nostrum mittetur.
in: pull_request / dis - indicat hunc laborem necessitatem immittendi quotiescumque impulsio ad dominum facta est et petitiones trahere creantur.
Haec est descriptio officiorum.Jobs) et gradus supplicium (gressus) cuique opus.
fugit-on- - Hic scopum OS eligere possumus, mire, etiam Mac OS eligere potes, sed in repositoriis privatis haec est admodum pretiosa (comparata Linux).
usus, sino vos ut alias actiones reuse, exempli gratia, actiones/setup-Javas utentes, ambitum Javae 11 instituimus.
per apud parametros exprimere possumus cum quibus actionem deducimus, essentialiter haec sunt argumenta quae ad actionem transibunt.
Reliquum est ut in Maveno currendum exstent; run: mvn -B clean package vexillum -B dicit nos modus non-interactive egere ut repente puer aliquid a nobis petere non velit
Conventus est bonus, re vera, consilium tuto congregari potest, opus non est. Ideo proximus gradus est ut automate test fugit. Praeterea satis commodum est inspicere eventus transeuntium probationum cum a PR review - scis certe probata praeterire et nemo oblitus est ramum suum currere antequam merge fecerit.
Testimonia decurremus cum petitionem trahendi creandi et in dominum mergemus, simulque creationem relationis in codice-coverage addemus.
Ad probationes tegendas, codecov uti utor, cum jacoco plugin coniuncto. codecov suam habet actionem, sed signo indiget laboris rogationis nostrae trahere;
${{ secrets.CODECOV_TOKEN }} β Hanc constructionem plus quam semel videbimus, secreta machinatio est ad secreta recondenda in GitHub, scribere possumus ibi tesseras/signes/exercitus/urlas et alia notitia quae in repositorio codice basi non contineri debent.
Variam secretis addere potes in repositorio ad occasus in GitHub:
Potes accipere ad indicium codecov.io Post concessionem per GitHub, consilium publicum addere debes modo nexum sequi sicut hoc: Nomen usoris GitHub/[repo nomen]. Repositorium privatum etiam addi potest, ad hoc faciendum, iura applicanda in Github dare debes.
Iam codecov automati intrabit singulas petitiones nostras viverra et adde graphum coverage de mutatione:
Addamus analyser static
In plerisque apertis meis inceptis fonte uti nube sonaria pro analysi codice statico, facile est coniungere cum travis-ci. Est igitur gressus logicus cum in GitHub actus migrandi ad idem faciendum. Actio mercatus frigidum est, sed hoc tempore paulum me demittere, quia ex consuetudine actionis quam indigebam inveni et illud in workflow addidi. Sed evenit ut sonar non sustineat operationem per actionem ad analysin incepta in maven vel gradatim. Utique scriptum est in documentis, sed quis legit?
Non potest per actionem, sic per mvn plugin faciemus:
SONAR_TOKEN - obtineri potest ad sonarcloud.io et in secretis debes subcriptio. GITHUB_TOKEN - Hoc constructum est in signo quod GitHub generat, cuius ope sonarcloud[bot] log in Git poterit ut nobis nuntios in petitionibus trahendis relinquat.
Dsonar.projectKey - nomen consilii in sonar, in occasus project videre potes.
Dsonar.organization β nomen regiminis a GitHub.
Petitionem viverra facimus et exspectamus sonarcloud[bot] ut in commenta veniat:
release procuratio
In aedificatione figuratum est, probationes decurrunt et solutionem facere possumus. Intueamur quomodo actiones GitHub multo facilius solutionem facere possunt.
In opere, incepta habeo cuius signum basis in bitbucket (omnia similia sunt in illa fabula "Scribo bitbucket interdiu, GitHub in nocte committo"). Infeliciter, bitbucket instrumenta in remissionis administratione non aedificavit. Hoc problema est, quia pro unoquoque emissione habes paginam ad confluentiam manualem creare et omnia lineamenta quae ibi in emissione mittent, scrutare per palatia mentis, opera in jira, in repositorium committit. Plures casus errare, oblivisci aliquid potes vel aliquid inire, quod ultimo tempore iam emissum est, interdum simpliciter non liquet quid ad petitionem trahendi indicandam sit - est pluma vel cimex figere, vel edendi probationes, vel quid infrastructural.
Quomodo actiones GitHub adiuva nos? Actio magna est - dimissionis latrinae, permittit te mittere notas dimissionis tabellae templates constituere categorias petitionum viverrarum ac automatice eas in emissione notarum fasciculorum aggregare;
Exemplum exemplum proponendi relationem (.github/release-drafter.yml);
Omnes petitiones viverra posthac colligentur in notis emissione automatice - magicae!
Hic quaestio oriri potest: quid si tincidunt obliviscuntur tags in PR? Tunc non liquet utra categoria eam iniciat, iterumque manualiter agere debebis cum singulis PR separatim. Ad hanc quaestionem figere, alia actione - label verificantis uti possumus - praesentiam tags in trahere rogatu cohibet. Si non sunt tags requisita, perscriptio deficietur et nuntium de hoc videbimus in petitione viverra nostra.
Nunc quaelibet petitio viverra notanda est una e tags: type:fix, type: features, type:documentationis, type:tests, type:config.
Auto-annotationem viverra petitiones
Cum tale thema tam efficax opus cum petitionibus trahendis tetigimus, dignum est loqui de tali actione sicut labeler, tags in PR subnixa ponit in quo tabulae mutatae sunt. Exempli gratia, notare possumus quamlibet petitionem viverrarum quae mutationes in indicem continent .github/workflow.
Non impetravi actionem quae automatice pittacia in petitionibus pullorum ponit cum actione quae retentat ad praesentiam pittaculorum requisitorum, par-titulus non vult videre pittacia automati addita. Facilius videtur scribere actionem tuam quae utrumque tempus coniungit. Sed etiam in hac forma satis commodum est uti, debes pittacium e indice eligere cum petitionem trahere creando.
Aliquam explicandi
Plures optiones instruere conatus sum per Actiones GitHub (per ssh, via scp, et utens docker-hub), et possum dicere, verisimile, viam invenias ad binarium servo sistendum, utcumque curva tua pipeline. sit.
Placuit optioni totam infrastructuram in uno loco servandi, ut inspiciamus quomodo explicanda GitHub Packages (hoc est repositio contentorum binariorum, npm, dolium, docker).
Scriptor ad fabricam docker imaginem et in GitHub Packages publici iuris fecit:
Primum opus est fasciculi URNA applicationis aedificandi, post quod iter ad GitHub docker subcriptio et nomen imaginis nostrae computamus. Paucae hic strophæ sunt quas adhuc non offendimus:
constructio similis: echo ":: paro-output name=NAME:: VALUS" sinit ut valorem variabilis in gressu currenti constituas, ut tunc in omnibus aliis gradibus legi possit.
valorem variabilis in praecedenti gradu constituto per identifier huius gradus: ${{ steps.global_env.outputs.DOCKERHUB_IMAGE_NAME}}
Vexillum GITHUB_REPOSITORIUM variabilis reponit nomen repositorii et possessoris eius ("dominus/repo-nomen"). Ut omnia ex hac linea secanda, praeter nomen repositorii, syntaxi vernacula utemur: ${GITHUB_REPOSITORY#*/}
Ad designandum versionem imaginis, primis digitis ex SHA Nullam commisso utimur - GITHUB_SHA sunt etiam hic nuances, si tales aedificationes faciunt non solum cum bus in dominum, sed etiam secundum trahere petitionem creationis. eventum, ergo SHA non congruit Nullam quam in historia git cernimus, quia actiones/checkout actio suam singularem facit Nullam ad vitandum actiones mortiferas in PR.
Si omnia bene elaborata sunt, tunc sectionem fasciculorum (https://github.com/antkorwin/github-actions/packages) in reposito aperies, novam in reposito imaginem videbis:
Ibi etiam indicem versionum imaginis scopulorum videre potes.
Reliquum est ut servo nostro configurare cum hoc registro laborare et servitium sileo. Probabiliter loquar quomodo hoc per systema aliud tempus feceris.
Cras
Intueamur de optione simplici in quam facere perceptum sanitatis pro applicatione nostra utens Actionibus GitHub. Applicatio nostra tabernus actuatorem habet, quare etiam scribere API ad eius statum reprimendum ne opus est, omnia pigris iam fecimus. Vos iustus hospes trahere debes; SERVER-URL:PORT/actuator/health
Sit scriptor reprehendo per manually servo status Crispum:
jobs:
ping:
runs-on: ubuntu-18.04
steps:
- name: curl actuator
id: ping
run: |
echo "::set-output name=status::$(curl ${{secrets.SERVER_HOST}}/api/actuator/health)"
- name: health check
run: |
if [[ ${{ steps.ping.outputs.status }} != *"UP"* ]]; then
echo "health check is failed"
exit 1
fi
echo "It's OK"
Primum, nisi in variabili quod servo responderit petitioni, in proximo gradu coarguimus statum esse UP et, si hoc non est, eximus per errorem. Si opus "subvertere" actionem manibus tuis, deinde I exitus β Aptum telum.
- name: send alert in telegram
if: ${{ failure() }}
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_TO }}
token: ${{ secrets.TELEGRAM_TOKEN }}
message: |
Health check of the:
${{secrets.SERVER_HOST}}/api/actuator/health
failed with the result:
${{ steps.ping.outputs.status }}
Ad telegraphum mittimus si modo actio ante gradum priorem defecit. Epistulam mittere utimur pupillo/telegrammate-actio, legere potes quomodo bot tesseram ac chat id in documentis accipias: github.com/appleboy/telegram-action
Noli oblivisci scribere in secretis in Github: URL pro servitore et signis telegraphi automati.
Bonus semita - JIRA pro pigris
Promisi nos ad JIRA redituros esse, et nos reddidisse. Centies observavi condicionem in statis-ups cum tincidunt plumam fecit, ramum immiscuit, sed oblitus est exitum in JIRA trahere. Utique, si omnia uno in loco gesta sunt, facilius esset, re vera in IDE codicem scribimus, rami in bitbucket vel GitHub confunduntur, et operas in Jira trahunt, ad hoc opus est novas fenestras aperire. interdum aperi iterum atque etc. Cum plane memineris quid faciendum tibi sit, tunc demum tabula aperienda non est. Quam ob rem, in mane ad standum tempus terere debes tabulae negotium adaequationis.
GitHub adiuvabit etiam nos in hoc munere exercitationis, nam imprimis quaestiones automatice in columna code_recensi trahere possumus cum petitionem trahere subiciemus. Omne quod debes facere est sequere ramum nominatio placitum;
exempli gratia, si clavis exertus "GitHub Actionum" est GA, erit GA-8-jira-bot posset esse ramus ad exsequendam GA-8 opus.
Integratio cum JIRA opera per actiones ab Atlassiano perfecta non sunt, necesse est dicere aliquas earum non omnino mihi operari. Sed de iis tantum quae definite laborant et activo modo tractabimus.
Primum opus est ut ini JIRA utendo actionem: atlassian/gajira-login
- name: Find Issue
id: find_issue
shell: bash
run: |
echo "::set-output name=ISSUE_ID::$(echo ${GITHUB_HEAD_REF} | egrep -o 'GA-[0-9]{1,4}')"
echo brach name: $GITHUB_HEAD_REF
echo extracted issue: ${GITHUB_HEAD_REF} | egrep -o 'GA-[0-9]{1,4}'
- name: Check Issue
shell: bash
run: |
if [[ "${{steps.find_issue.outputs.ISSUE_ID}}" == "" ]]; then
echo "Please name your branch according to the JIRA issue: [project_key]-[task_number]-branch_name"
exit 1
fi
echo succcessfully found JIRA issue: ${{steps.find_issue.outputs.ISSUE_ID}}
Si quaeras in foro GitHub, actionem huius operis invenire potes, sed idem scribere debebam utens nomine rami utens, quia haec actio ab Atlassiano meo consilio quoquo modo laborare noluit. ut quid mali sit instar β idem facere diutius quam tuis manibus.
Reliquum est, ut munus "Codex recognitionis" moveat cum petitionem trahere a creatione;
Actio peculiaris in GitHub est, quae necessaria est exitus ID in priore gradu consecutus et auctoritas in JIRA quam supra fecimus.
Eodem modo, negotia cum domino bus in trahere potes, et alia eventa a GitHub workflow. In genere, totum pendet a tua imaginatione ac desiderio automatis in processibus exercitationis.
Inventiones
Si tabulam classicam DEVOPS spectes, omnes gradus perteximus, nisi forte operantur, opinor, si experiri potes, actionem aliquam invenire in foro ad integrationem systematis ope scriniarii, sic ponamus ut in pipeline versa ex eius usu diligenter ac conclusiones sumi possunt.
pros,
Forum cum omnibus occasionibus paratis factis, hoc est frigidissimum. In plerisque illis, fontem quoque inspicere potes ut intelligat quomodo problema simile solvere vel postulationem plumam auctori directe in GitHub repositorio collocare.
Diligendo suggestum scopo pro contione: Linux, mac os, fenestrae admodum interesting pluma est.
Github Packages res magna est, commodius est totam infrastructuram in uno loco servare, non debes per diversas fenestras salo habere, omnia intra unius vel duorum muris strepitantium radium et cum Actionibus GitHub perfecte integrantur. Docker registro subsidium in libera versione etiam bonum commodum est.
GitHub occultat secreta in tigna aedificanda, ita utens ea ad tesseras et signa reponendas FORMIDULOSUS non est. Per omnia experimenta mea numquam potui videre secretum in pura forma in consolatorio.
Free for Open Source projects
cons:
YML, bene, non amo illum. Cum opus cum tali fluxu, vulgatissimum nuntium committo mihi est "fix yml format", tunc oblivisci tab alicubi ponere, vel in linea falsa scribis. In genere sedere ante velum cum protractore et rectore experientia non est suavissima.
DEBUG, debugging profluvium cum committit, currit reaedificandum, et ad consolandum extrahendum non semper commodum est, sed plus est de categoria "superdatus es", cum opportuna notione operari es, quando aliquid debug potes .
Actionem tuam de re aliqua scribere potes si in Docker involvas, sed solum html sustinetur, sane hoc de sapore est, sed aliud loco js malim.
Postero septimana ego faciendo cum nuntiare apud Heisenbug 2020 Piter colloquium. Dicam tibi non solum quomodo notitias testium parando errores vitare, sed etiam secreta mea operandi cum data in applicationibus Java!