Ngokuvamile kufanele ngakhe ipayipi lamaphrojekthi wokwakha e-Java. Kwesinye isikhathi iwumthombo ovulekile, kwesinye isikhathi awunjalo. Muva nje nginqume ukuzama ukususa ezinye zezindawo zami zokuphinda ngizisuse ku-Travis-CI kanye ne-TeamCity ngiziyise e-GitHub Actions, futhi yilokhu okwaphuma kuyo.
Sizokwenzani ngokuzenzakalelayo?
Okokuqala, sidinga iphrojekthi esizoyenza ngokuzenzakalelayo, masenze isicelo esincane ku-Spring boot / Java 11 / Maven. Ngezinjongo zalesi sihloko, ngeke sibe nentshisekelo kulogic yohlelo nhlobo; ingqalasizinda eseduze nohlelo lokusebenza ibalulekile kithi, ngakho-ke isilawuli esilula se-REST API sizosanela.
Ungabuka imithombo lapha:
JIRA nokuhlela
Kuhle ukusho ukuthi sivame ukusebenzisa i-JIRA njengesilandeleli sezinkinga, ngakho-ke ake sakhe ibhodi ehlukile yale phrojekthi futhi sengeze izindaba zokuqala lapho:
Ngemva kwesikhashana sizobuyela kulokho okuthakazelisayo i-JIRA ne-GitHub enganikeza ngokuhlangene.
Senza ngokuzenzakalelayo ukuhlanganiswa kwephrojekthi
Iphrojekthi yethu yokuhlola yakhiwe nge-maven, ngakho-ke ukuyakha kulula kakhulu, esikudingayo iphakethe elihlanzekile le-mvn.
Ukwenza lokhu sisebenzisa Izenzo ze-Github, sizodinga ukudala ifayela endaweni yokugcina echaza ukuhamba komsebenzi wethu, lokhu kungenziwa ngefayela le-yml elivamile, angikwazi ukusho ukuthi ngithanda "uhlelo lwe-yml", kodwa yini esingayenza - sikwenza kokuthi .github/ directory workflow/ file build.yml lapho sizochaza khona izenzo lapho sakha igatsha eliyinhloko:
name: Build
on:
pull_request:
branches:
- '*'
push:
branches:
- 'master'
jobs:
build:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.11
- name: Maven Package
run: mvn -B clean package -DskipTests
on — lena incazelo yomcimbi lapho kuzokwethulwa khona umbhalo wethu.
ku: pull_request/push - kukhombisa ukuthi lokhu kugeleza komsebenzi kudinga ukwethulwa ngaso sonke isikhathi lapho kuphushwa ku-master futhi kwakhiwa izicelo zokudonsa.
Okulandelayo yincazelo yemisebenzi (imisebenzi) kanye nezinyathelo zokwenza (izinyathelo) ngomsebenzi ngamunye.
iyagijima - lapha singakhetha i-OS eqondiwe, ngokumangalisayo, ungakhetha ngisho ne-Mac OS, kodwa kumakhosombe angasese lokhu kubiza kakhulu (uma kuqhathaniswa ne-Linux).
kusebenzisa ikuvumela ukuthi usebenzise kabusha ezinye izenzo, isibonelo, usebenzisa izenzo/ukusetha-isenzo se-java esifaka imvelo ye-Java 11.
Ngosizo luka nge singacacisa amapharamitha esethula ngawo isenzo, empeleni lawa ama-agumenti azodluliselwa esenzweni.
Okusele nje ukuqhuba iphrojekthi yokwakha noMaven: run: mvn -B clean package
ifulege -B ithi sidinga imodi engasebenzisani ukuze i-maven ingafuni ukusibuza okuthile
Kuhle! Manje, ngaso sonke isikhathi lapho uzibophezela ku-master, ukwakhiwa kwephrojekthi kuyaqala.
Ukuqaliswa kokuhlola okuzenzakalelayo
Umhlangano muhle, kodwa empeleni, iphrojekthi ingahlanganiswa ngokuphepha, kodwa ingasebenzi. Ngakho-ke, isinyathelo esilandelayo ukwenza ngokuzenzakalelayo ama-run okuhlola. Ngaphezu kwalokho, kulula kakhulu ukubheka imiphumela yokuphasa izivivinyo lapho wenza isibuyekezo se-PR - uyazi ngokuqinisekile ukuthi ukuhlolwa kuyaphumelela futhi akekho okhohliwe ukuqhuba igatsha lakhe ngaphambi kokwenza ukuhlanganisa.
Sizosebenzisa izivivinyo lapho sidala isicelo sokudonsa futhi sihlanganise okuyinhloko, futhi ngesikhathi esifanayo sizokwengeza ukudalwa kombiko mayelana nokufakwa kwekhodi.
name: Build
on:
pull_request:
branches:
- '*'
push:
branches:
- 'master'
jobs:
build:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.11
- name: Maven Verify
run: mvn -B clean verify
- name: Test Coverage
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
Ukumboza izivivinyo, ngisebenzisa i-codecov ngokuhlanganyela ne-jacoco plugin. I-codecov inesenzo sayo, kodwa idinga ithokheni ukuze isebenze nesicelo sethu sokudonsa:
${{ secrets.CODECOV_TOKEN }}
- sizobona lokhu kwakhiwa izikhathi ezingaphezu kwesisodwa, izimfihlo ziyindlela yokugcina izimfihlo ku-GitHub, singabhala lapho amaphasiwedi/amathokheni/amahosti/ama-url kanye nenye idatha okungafanele ifakwe kusisekelo sekhodi yendawo.
Ungangeza okuhlukile kuzimfihlo kuzilungiselelo zendawo yokugcina ku-GitHub:
Ungathola ithokheni ku
Engeza i-plugin ye-jacoco kufayela le-POM:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.4</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<!-- attached to Maven test phase -->
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<reportFormat>plain</reportFormat>
<includes>
<include>**/*Test*.java</include>
<include>**/*IT*.java</include>
</includes>
</configuration>
</plugin>
Manje i-codecov bot izofaka isicelo sethu ngasinye sokudonsa futhi ingeze igrafu yokushintsha ikhava:
Ake sengeze umhlaziyi omile
Kumaphrojekthi wami amaningi omthombo ovulekile ngisebenzisa ifu le-sonar ukuze ngihlaziye ikhodi emile, kulula kakhulu ukuxhuma ku-travis-ci. Ngakho-ke kuyisinyathelo esinengqondo lapho uthuthela ku-GitHub Actions ukwenza okufanayo. Imakethe yesenzo iyinto epholile, kodwa kulokhu ingenze ngehlisa kancane, ngoba ngenxa yomkhuba ngithole isenzo engangisidinga ngase ngengeza ekuhambeni komsebenzi. Kepha kwavela ukuthi i-sonar ayikusekeli ukusebenza ngesenzo sokuhlaziya amaphrojekthi ku-maven noma i-gradle. Yiqiniso, lokhu kubhaliwe emibhalweni, kodwa ubani oyifundayo?!
Akwenzeki ngesenzo, ngakho-ke sizokwenza nge-plugin ye-mvn:
name: SonarCloud
on:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
jobs:
sonarcloud:
runs-on: ubuntu-16.04
steps:
- uses: actions/checkout@v1
- name: Set up JDK
uses: actions/setup-java@v1
with:
java-version: 1.11
- name: Analyze with SonarCloud
# set environment variables:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# run sonar maven plugin:
run: mvn -B verify sonar:sonar -Dsonar.projectKey=antkorwin_github-actions -Dsonar.organization=antkorwin-github -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=$SONAR_TOKEN -Dsonar.coverage.jacoco.xmlReportPaths=./target/site/jacoco/jacoco.xml
SONAR_TOKEN - ingatholakala ku
Dsonar.projectKey — igama lephrojekthi kusonar, ungalibona kuzilungiselelo zephrojekthi.
I-Dsonar.inhlangano - Igama lenhlangano evela ku-GitHub.
Senza isicelo sokudonsa futhi silinde i-sonarcloud[bot] ukuthi ize kumazwana:
Ukuphathwa kokukhishwa
Isakhiwo silungisiwe, ukuhlola sekuqalisiwe, futhi singakwazi ukukhipha. Ake sibheke ukuthi Izenzo ze-GitHub zingenza kanjani ukuphathwa kokukhishwa kube lula kakhulu.
Emsebenzini, nginamaphrojekthi anesisekelo sekhodi ku-bitbucket (yonke into ifana naleyo ndaba "Ngibhalela i-bitbucket emini, ngizibophezele ku-GitHub ebusuku"). Ngeshwa, i-bitbucket ayinawo amathuluzi okuphatha ukukhishwa okwakhelwe ngaphakathi. Lokhu kuyinkinga, ngoba ekukhishweni ngakunye kufanele udale ngesandla ikhasi ngokuhlangana bese uphonsa zonke izici ezifakwe ekukhululweni lapho, ukucinga ngezigodlo zengqondo, imisebenzi ku-jira, izibopho endaweni yokugcina. Maningi amathuba okwenza iphutha, ungakhohlwa okuthile noma ufake okuthile osekuvele kukhululwe ngeledlule, kwesinye isikhathi akucaci kahle ukuthi isicelo sokudonsa singasihlukanisa sithini - siyisici noma ukulungisa amaphutha, noma ukuhlela ukuhlolwa, noma okuthile kwengqalasizinda .
Izenzo ze-GitHub zingasisiza kanjani? Kunesenzo esihle - ukukhishwa okusalungiswa, kukuvumela ukuthi usethe isifanekiso sefayela lamanothi okukhipha ukuze umise izigaba zezicelo zokudonsa futhi uziqoqe ngokuzenzakalelayo kufayela lamanothi okukhishwa:
Isibonelo sesifanekiso sokusetha umbiko (.github/release-drafter.yml):
name-template: 'v$NEXT_PATCH_VERSION'
tag-template: 'v$NEXT_PATCH_VERSION'
categories:
- title: ' New Features'
labels:
- 'type:features'
# в эту категорию собираем все PR с меткой type:features
- title: ' Bugs Fixes'
labels:
- 'type:fix'
# аналогично для метки type:fix и т.д.
- title: ' Documentation'
labels:
- 'type:documentation'
- title: ' Configuration'
labels:
- 'type:config'
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
template: |
## Changes
$CHANGES
Engeza umbhalo ukuze ukhiqize ukukhishwa okusalungiswa (.github/workflows/release-draft.yml):
name: "Create draft release"
on:
push:
branches:
- master
jobs:
update_draft_release:
runs-on: ubuntu-18.04
steps:
- uses: release-drafter/release-drafter@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Zonke izicelo zokudonsa kusukela manje kuqhubeke zizoqoqwa kumanothi okukhululwa ngokuzenzakalelayo - umlingo!
Lapha umbuzo ungase uphakame: kuthiwani uma abathuthukisi bekhohlwa ukubeka amathegi ku-PR? Khona-ke akucaci ukuthi uzoyifaka kusiphi isigaba, futhi uzophinde ubhekane nayo mathupha, nge-PR ngayinye ngokwehlukana. Ukuze silungise le nkinga, singasebenzisa esinye isenzo - isiqinisekisi selebula - sihlola ukuba khona komaka esicelweni sokudonsa. Uma bengekho omaka abadingekayo, khona-ke isheke lizohluleka futhi sizobona umlayezo mayelana nalokhu esicelweni sethu sokudonsa.
name: "Verify type labels"
on:
pull_request:
types: [opened, labeled, unlabeled, synchronize]
jobs:
triage:
runs-on: ubuntu-18.04
steps:
- uses: zwaldowski/match-label-action@v2
with:
allowed: 'type:fix, type:features, type:documentation, type:tests, type:config'
Manje noma yisiphi isicelo sokudonsa kumele simakwe ngomunye womaki: hlobo:lungisa, uhlobo:izici, uhlobo:imibhalo, uhlobo:izivivinyo, uhlobo:config.
Isichasiselo esizenzakalelayo sezicelo zokudonsa
Njengoba sithinte esihlokweni esinjalo njengomsebenzi ophumelelayo ngezicelo zokudonsa, kufanelekile ukukhuluma ngesenzo esinjalo njengelebula, sibeka amathegi ku-PR ngokusekelwe ekutheni yimaphi amafayela ashintshiwe. Isibonelo, singamaka njengokuthi [sakha] noma yisiphi isicelo sokudonsa esiqukethe izinguquko kuhla lwemibhalo .github/workflow
.
Ukuyixhuma kulula kakhulu:
name: "Auto-assign themes to PR"
on:
- pull_request
jobs:
triage:
runs-on: ubuntu-18.04
steps:
- uses: actions/labeler@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
Sidinga futhi ifayela elichaza ukuxhumana phakathi kwezinkomba zephrojekthi nezihloko zesicelo sokudonsa:
theme:build:
- ".github/**"
- "pom.xml"
- ".travis.yml"
- ".gitignore"
- "Dockerfile"
theme:code:
- "src/main/*"
theme:tests:
- "src/test/*"
theme:documentation:
- "docs/**"
theme:TRASH:
- ".idea/**"
- "target/**"
Angiphumelelanga ukubhanqa isenzo esibeka ngokuzenzakalelayo amalebula ezicelweni zokudonsa ngesenzo esihlola ubukhona bamalebula adingekayo; ilebula yokufanisa ayifuni ukubona amalebula engezwe yi-bot. Kubonakala kulula ukubhala isenzo sakho esihlanganisa zombili izigaba. Kodwa ngisho nakuleli fomu kulula kakhulu ukuyisebenzisa; udinga ukukhetha ilebula ohlwini lapho udala isicelo sokudonsa.
Isikhathi sokuphakela
Ngizamile izinketho ezimbalwa zokuthunyelwa nge-GitHub Actions (nge-ssh, nge-scp, nokusebenzisa i-docker-hub), futhi ngingasho ukuthi, cishe, uzothola indlela yokulayisha kanambambili kuseva, noma ngabe iphayiphi lakho ligwegwile kangakanani. kuyinto.
Ngithande inketho yokugcina yonke ingqalasizinda isendaweni eyodwa, ngakho-ke ake sibheke ukuthi singathumela kanjani ku-GitHub Packages (lena inqolobane yokuqukethwe kanambambili, npm, jar, docker).
Iskripthi sokwakha isithombe sedokhu futhi sisishicilele ku-GitHub Packages:
name: Deploy docker image
on:
push:
branches:
- 'master'
jobs:
build_docker_image:
runs-on: ubuntu-18.04
steps:
# Build JAR:
- uses: actions/checkout@v1
- name: set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.11
- name: Maven Package
run: mvn -B clean compile package -DskipTests
# Set global environment variables:
- name: set global env
id: global_env
run: |
echo "::set-output name=IMAGE_NAME::${GITHUB_REPOSITORY#*/}"
echo "::set-output name=DOCKERHUB_IMAGE_NAME::docker.pkg.github.com/${GITHUB_REPOSITORY}/${GITHUB_REPOSITORY#*/}"
# Build Docker image:
- name: Build and tag image
run: |
docker build -t "${{ steps.global_env.outputs.DOCKERHUB_IMAGE_NAME }}:latest" -t "${{ steps.global_env.outputs.DOCKERHUB_IMAGE_NAME }}:${GITHUB_SHA::8}" .
- name: Docker login
run: docker login docker.pkg.github.com -u $GITHUB_ACTOR -p ${{secrets.GITHUB_TOKEN}}
# Publish image to github package repository:
- name: Publish image
env:
IMAGE_NAME: $GITHUB_REPOSITORY
run: docker push "docker.pkg.github.com/$GITHUB_REPOSITORY/${{ steps.global_env.outputs.IMAGE_NAME }}"
Okokuqala, sidinga ukwakha ifayela le-JAR lohlelo lwethu lokusebenza, ngemva kwalokho sibale indlela eya ebhukwini le-docker le-GitHub kanye negama lesithombe sethu. Kunamaqhinga ambalwa lapha esingakawaboni:
- ukwakhiwa okufana nokuthi: echo “::set-output name=NAME::VALUE” ikuvumela ukuthi usethe inani loguquko esinyathelweni samanje, ukuze lifundeke kuzo zonke ezinye izinyathelo.
- ungathola inani lesethi eguquguqukayo esinyathelweni sangaphambilini ngokusebenzisa inkomba yalesi sinyathelo: ${{ steps.global_env.outputs.DOCKERHUB_IMAGE_NAME }}
- Okuhluka okujwayelekile kwe-GITHUB_REPOSITORY kugcina igama lenqolobane kanye nomnikazi wayo (“umnikazi/igama-repo-repo”). Ukuze sisike yonke into kulo mugqa ngaphandle kwegama lenqolobane, sizosebenzisa i-bash syntax: ${GITHUB_REPOSITORY#*/}
Okulandelayo sidinga ukwakha isithombe se-docker:
docker build -t "docker.pkg.github.com/antkorwin/github-actions/github-actions:latest"
Ngena ngemvume kusibhalisi:
docker login docker.pkg.github.com -u $GITHUB_ACTOR -p ${{secrets.GITHUB_TOKEN}}
Futhi ushicilele isithombe ku-GitHub Packages Repository:
docker push "docker.pkg.github.com/antkorwin/github-actions/github-actions"
Ukuze sibonise inguqulo yesithombe, sisebenzisa amadijithi okuqala asuka ku-SHA hash yesithembiso - GITHUB_SHA kukhona futhi ama-nuances lapha, uma wenza ukwakhiwa okunjalo hhayi kuphela lapho uhlanganisa okuyinhloko, kodwa futhi ngokuvumelana nokudala isicelo sokudonsa. umcimbi, khona-ke i-SHA ingase ingafani ne-hash esiyibona emlandweni we-git, ngoba isenzo/isenzo sokuphuma senza i-hashi yaso eyingqayizivele ukuze kugwenywe izenzo ezivimbayo ku-PR.
Uma konke kuhambe kahle, bese uvula isigaba samaphakheji (https://github.com/antkorwin/github-actions/packages) endaweni yokugcina, uzobona isithombe sedokhi esisha:
Lapho ungabona nohlu lwezinguqulo zesithombe se-docker.
Okusele nje ukulungisa iseva yethu ukuthi isebenze nalokhu kubhaliswa bese iqalisa kabusha isevisi. Mhlawumbe ngizokhuluma ngendlela yokwenza lokhu nge-systemd ngesinye isikhathi.
Ukuqapha
Ake sibheke inketho elula yokuthi ungahlola kanjani impilo yohlelo lwethu lokusebenza usebenzisa Izenzo ze-GitHub. Uhlelo lwethu lokusebenza lwe-boot lune-actuator, ngakho-ke asidingi ngisho nokubhala i-API ukuze sihlole isimo sayo; sesivele senze konke ngenxa yamavila. Udinga nje ukudonsa umsingathi: SERVER-URL:PORT/actuator/health
$ curl -v 127.0.0.1:8080/actuator/health
> GET /actuator/health HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/7.61.1
> Accept: */*
< HTTP/1.1 200
< Content-Type: application/vnd.spring-boot.actuator.v3+json
< Transfer-Encoding: chunked
< Date: Thu, 04 Jun 2020 12:33:37 GMT
{"status":"UP"}
Konke esikudingayo ukubhala umsebenzi ukuhlola iseva usebenzisa i-cron, futhi uma ngokuzumayo engasiphenduli, khona-ke sizothumela isaziso ku-telegram.
Okokuqala, ake sithole ukuthi singakusebenzisa kanjani ukugeleza komsebenzi we-cron:
on:
schedule:
- cron: '*/5 * * * *'
Kulula, angikholwa nokuthi ku-Github ungakha imicimbi engangeni kuma-webhooks nhlobo. Imininingwane ikumadokhumenti:
Ake sihlole isimo seseva mathupha nge-curl:
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"
Okokuqala, silondoloza kokuguquguqukayo lokho iseva esabela ngayo esicelweni, esinyathelweni esilandelayo sihlola ukuthi isimo siPHEZULU futhi, uma kungenjalo, bese siphuma ngephutha. Uma udinga "ukweqa" isenzo ngezandla zakho, ke phuma 1 - isikhali esifanele.
- 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 }}
Sithumela kuthelegramu kuphela uma isenzo sihlulekile esinyathelweni sangaphambilini. Ukuthumela umlayezo sisebenzisa i-appleboy/telegram-action; ungafunda mayelana nendlela yokuthola ithokheni ye-bot kanye ne-id yokuxoxa emibhalweni:
Ungakhohlwa ukubhala ezimfihlo ku-Github: I-URL yeseva namathokheni we-telegraph bot.
Ithrekhi yebhonasi - JIRA yamavila
Ngathembisa ukuthi sizobuyela eJIRA, futhi sesibuyile. Izikhathi ezingamakhulu ngiye ngabona isimo sokuma lapho onjiniyela benza isici, bahlanganisa igatsha, kodwa bakhohlwa ukuhudulela udaba ku-JIRA. Yiqiniso, uma konke lokhu kwenziwa endaweni eyodwa, kungaba lula, kodwa empeleni sibhala ikhodi ku-IDE, sihlanganise amagatsha ku-bitbucket noma i-GitHub, bese sihudulela imisebenzi ku-Jira, kulokhu sidinga ukuvula amawindi amasha. , ngezinye izikhathi ngena futhi futhi njll. Uma ukhumbula kahle ukuthi yini okudingeka uyenze ngokulandelayo, akukho phuzu lokuvula ibhodi futhi. Ngenxa yalokho, ekuseni endaweni yokuma udinga ukuchitha isikhathi ubuyekeza ibhodi lomsebenzi.
I-GitHub izophinde isisize kulo msebenzi ovamile; okokuqala, singahudula izinkinga ngokuzenzakalelayo kukholomu ye-code_review lapho sithumela isicelo sokudonsa. Odinga ukukwenza ukulandela umhlangano wokuqamba amagatsha:
[имя проекта]-[номер таска]-название
isibonelo, uma ukhiye wephrojekthi "GitHub Actions" ungu-GA, khona-ke GA-8-jira-bot
kungaba igatsha lokuqalisa umsebenzi we-GA-8.
Ukuhlanganiswa ne-JIRA kusebenza ngezenzo ezivela ku-Atlassian, aziphelele, kufanele ngisho ukuthi ezinye zazo azizange zingisebenzele nhlobo. Kodwa sizoxoxa kuphela ngalezo ezisebenzayo futhi ezisetshenziswa ngenkuthalo.
Okokuqala udinga ukungena ngemvume ku-JIRA usebenzisa isenzo: i-atlassian/gajira-login
jobs:
build:
runs-on: ubuntu-latest
name: Jira Workflow
steps:
- name: Login
uses: atlassian/gajira-login@master
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
Ukuze wenze lokhu, udinga ukuthola ithokheni ku-JIRA, ukuthi ungakwenza kanjani lokhu kuchazwe lapha:
Sikhipha isihlonzi somsebenzi egameni legatsha:
- 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}}
Uma usesha endaweni yemakethe ye-GitHub, ungathola isenzo salo msebenzi, kodwa bekufanele ngibhale into efanayo ngisebenzisa i-grep ngisebenzisa igama legatsha, ngoba lesi senzo esivela ku-Atlassian besingafuni ukusebenza kuphrojekthi yami nganoma iyiphi indlela. , ukuthola ukuthi yini eyayingalungile lapho - isikhathi eside kunokwenza into efanayo ngezandla zakho.
Okusele wukuhambisa umsebenzi kukholamu “Yokubuyekeza Ikhodi” lapho udala isicelo sokudonsa:
- name: Transition issue
if: ${{ success() }}
uses: atlassian/gajira-transition@master
with:
issue: ${{ steps.find_issue.outputs.ISSUE_ID }}
transition: "Code review"
Kunesenzo esikhethekile salokhu ku-GitHub, okudingayo nje i-ID yodaba etholwe esinyathelweni sangaphambilini kanye nokugunyazwa ku-JIRA esikwenze ngenhla.
Ngendlela efanayo, ungahudula imisebenzi lapho uhlanganisa okuyinhloko, neminye imicimbi ukusuka ekuhambeni komsebenzi kwe-GitHub. Ngokuvamile, konke kuncike emcabangweni wakho kanye nesifiso sokushintsha izinqubo zesimiso.
okutholakele
Uma ubheka umdwebo wakudala we-DEVOPS, sihlanganise zonke izigaba, ngaphandle kokuthi mhlawumbe sisebenze, ngicabanga ukuthi uma uzama, ungathola isenzo esithile emakethe sokuhlanganiswa nohlelo lwedeski losizo, ngakho sizothatha ngokuthi ipayipi lijikile. kucace futhi kungafinyelelwa esiphethweni ngokusekelwe ekusetshenzisweni kwayo.
Izinzuzo:
- Indawo yemakethe enezenzo esezilungile zazo zonke izikhathi, lokhu kuhle kakhulu. Eziningi zazo, ungabheka nekhodi yomthombo ukuze uqonde ukuthi ungayixazulula kanjani inkinga efanayo noma uthumele isicelo sesici kumbhali ngqo endaweni yokugcina ye-GitHub.
- Ukukhetha inkundla okuhloswe ngayo yokuhlanganisa: I-Linux, i-mac os, amafasitela kuyisici esithokozisayo.
- I-Github Packages iyinto enhle, kulula ukugcina yonke ingqalasizinda endaweni eyodwa, akudingeki ukuthi udlulele kumafasitela ahlukene, yonke into ingaphakathi kwe-radius yokuchofoza okukodwa noma okubili kwegundane futhi ihlanganiswe ngokuphelele ne-GitHub Actions. Ukusekelwa kokubhaliswa kwe-Docker enguqulweni yamahhala nakho kuyinzuzo enhle.
- I-GitHub ifihla izimfihlo kumalogi wokwakha, ngakho-ke ukuyisebenzisa ukugcina amaphasiwedi namathokheni akwesabisi kangako. Phakathi nakho konke ukuhlola kwami, angizange ngikwazi ukubona imfihlo ngendlela yayo emsulwa kukhonsoli.
- Kumahhala kumaphrojekthi womthombo ovulekile
Umthengi:
- YML, angimthandi. Uma usebenza ngokugeleza okunjalo, umlayezo wokuzibophezela ovame kakhulu enginawo uthi "lungisa ifomethi ye-yml", ngezinye izikhathi uyakhohlwa ukubeka ithebhu endaweni ethile, ngezinye izikhathi uyibhala emugqeni ongalungile. Ngokuvamile, ukuhlala phambi kwesikrini nge-protractor nerula akuyona into ejabulisayo kakhulu.
- I-DEBUG, ukulungisa iphutha lokugeleza ngokuzibophezela, ukusebenzisa ukwakha kabusha, nokukhiphela ikhonsoli akulula ngaso sonke isikhathi, kodwa kungaphezulu kwesigaba esithi “weqiwe kakhulu”; ujwayele ukusebenza nge-IDEA elula, lapho ungakwazi ukulungisa noma yini. .
- Ungabhala isenzo sakho kunoma yini uma usigoqa ku-Docker, kodwa i-javascript kuphela esekelwa ngokomdabu, vele lokhu kuyindaba yokunambitha, kodwa ngingathanda okunye esikhundleni se-js.
Ake ngikukhumbuze ukuthi inqolobane enayo yonke imibhalo ilapha:
Ngesonto elizayo ngizobe nginandisa
umbiko engqungqutheleni ye-Heisenbug 2020 Piter. Ngizokutshela hhayi kuphela ukuthi ungagwema kanjani amaphutha lapho ulungiselela idatha yokuhlola, kodwa futhi wabelane ngezimfihlo zami zokusebenza namasethi wedatha kuzinhlelo zokusebenza ze-Java!
Source: www.habr.com