Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Hangata ke tlameha ho etsa lipeipi bakeng sa merero ea kaho Java. Ka linako tse ling ke mohloli o bulehileng, ka linako tse ling ha ho joalo. Haufinyane tjena ke nkile qeto ea ho leka ho tsamaisa tse ling tsa polokelo ea ka ho tloha Travis-CI le TeamCity ho ea GitHub Actions, 'me sena ke se tsoileng ho eona.

Re tla iketsetsa eng?

Taba ea pele, re hloka morero oo re tla o etsa, ha re etseng kopo e nyane ho Spring boot / Java 11 / Maven. Ka sepheo sa sengoloa sena, re ke ke ra thahasella mohopolo oa ts'ebeliso ho hang; lits'ebetso tse potileng ts'ebeliso li bohlokoa ho rona, ka hona, molaoli o bonolo oa REST API o tla re lekane.

U ka sheba mehloli mona: github.com/antkorwin/github-actions Mekhahlelo eohle ea ho aha lipeipi e bonahala likopong tsa ho hula morero ona.

JIRA le moralo

Ho bohlokoa ho bolela hore hangata re sebelisa JIRA joalo ka tracker ea litaba, kahoo ha re theheng boto e arohaneng bakeng sa projeke ena mme re kenye lintlha tsa pele moo:

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Hamorao re tla khutlela ho lintho tse khahlisang tseo JIRA le GitHub li ka fanang ka tsona li kopane.

Re iketsetsa kopano ea morero

Morero oa rona oa liteko o hahiloe ka maven, kahoo ho o haha ​​ho bonolo, seo re se hlokang feela ke sephutheloana se hloekileng sa mvn.

Ho etsa sena re sebelisa Liketso tsa Github, re tla hloka ho theha faele sebakeng sa polokelo e hlalosang mosebetsi oa rona, sena se ka etsoa ka faele e tloaelehileng ea yml, nke ke ka re ke rata "yml programming", empa re ka etsa'ng - re e etsa ho .github/ directory workflow/ file build.yml moo re tla hlalosa liketso ha re haha ​​lekala le leholo:

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 - ena ke tlhaloso ea ketsahalo eo script ea rona e tla qalisoa ka eona.

ho: pull_request/push - e bonts'a hore ts'ebetso ena ea ts'ebetso e hloka ho qalisoa nako le nako ha ho sutumetsoa ho monghali le ho hula likopo li etsoa.

E latelang ke tlhaloso ea mesebetsi (sa jobs) le mehato ea ts'ebetso (mehato) bakeng sa mosebetsi ka mong.

mathela-pele - mona re ka khetha sepheo sa OS, ho makatsang ke hore u ka khetha le Mac OS, empa libakeng tsa polokelo ea poraefete sena se theko e boima haholo (ha se bapisoa le Linux).

sebelisa khanya e o lumella ho sebelisa liketso tse ling hape, mohlala, ho sebelisa liketso/seta-java ketso eo re e kenyang tikolohong ea Java 11.

Ka thuso ea le re ka hlakisa liparamente tseo re qalang ketso ka tsona, ha e le hantle tsena ke likhang tse tla fetisetsoa ketsong.

Ho setseng ke ho tsamaisa morero oa ho aha Maven: run: mvn -B clean package folakha -B e re re hloka mokhoa o sa sebetsaneng e le hore maven ka tšohanyetso a se ke a batla ho re botsa ho hong

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

E kholo! Hona joale, nako le nako ha u itlama ho monghali, morero oa ho haha ​​oa qala.

Ho qala liteko ka bohona

Kopano e ntle, empa ha e le hantle, morero o ka bokelloa ka mokhoa o sireletsehileng, empa o sa sebetse. Ka hona, mohato o latelang ke ho iketsetsa liteko tsa liteko. Ntle le moo, ho bonolo haholo ho sheba liphetho tsa ho feta litekong ha o etsa tlhahlobo ea PR - o tseba hantle hore liteko lia feta mme ha ho motho ea lebalang ho tsamaisa lekala la bona pele a kopanya.

Re tla tsamaisa liteko ha re theha kopo ea ho hula le ho kopanya ho monghali, 'me ka nako e ts'oanang re tla eketsa tlhahiso ea tlaleho mabapi le ho koahela khoutu.

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 }}

Ho koahela liteko, ke sebelisa codecov hammoho le jacoco plugin. codecov e na le ketso ea eona, empa e hloka letšoao ho sebetsa le kopo ea rona ea ho hula:

${{ secrets.CODECOV_TOKEN }} - re tla bona mohaho ona ho feta hanngoe, liphiri ke mokhoa oa ho boloka liphiri ho GitHub, re ka ngola moo li-passwords/tokens/hosts/urls le lintlha tse ling tse sa lokelang ho kenyelletsoa setsing sa khoutu ea polokelo.

O ka eketsa phapang ho liphiri libakeng tsa polokelo ho GitHub:

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

O ka fumana letshwao ho codecov.io Kamora tumello ka GitHub, ho kenyelletsa projeke ea sechaba o hloka feela ho latela sehokelo se kang sena: Lebitso la mosebelisi oa GitHub/[lebitso la repo]. Sebaka sa polokelo ea poraefete le sona se ka eketsoa; ho etsa sena, o hloka ho fana ka litokelo tsa codecov ts'ebelisong ea Github.

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Kenya plugin ea jacoco faeleng ea 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>

Joale codecov bot e tla kenya kopo e 'ngoe le e' ngoe ea rona ea ho hula ebe e eketsa graph ea phetoho ea sekoaelo:

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Ha re kenye analyzer e tsitsitseng

Boholo ba merero ea ka ea mohloli o bulehileng ke sebelisa sonar cloud bakeng sa tlhahlobo ea khoutu e tsitsitseng, ho bonolo haholo ho hokahanya le travis-ci. Kahoo ke mohato o utloahalang ha u fallela ho GitHub Actions ho etsa se tšoanang. 'Maraka oa ketso ke ntho e pholileng, empa lekhetlong lena e ile ea ntumella hanyenyane, hobane ka tloaelo ke ile ka fumana ketso eo ke neng ke e hloka' me ke e eketsa mosebetsing oa ho sebetsa. Empa ho ile ha fumaneha hore sonar ha e tšehetse ho sebetsa ka ketso ea ho sekaseka merero ho maven kapa gradle. Ha e le hantle, sena se ngotsoe litokomaneng, empa ke mang ea se balang ?!

Ha e khonehe ka ketso, kahoo re tla e etsa ka plugin ea 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 - e ka fumanoa ho sonarcloud.io mme o hloka ho e ngodisa diphiring. GITHUB_TOKEN - ena ke lets'oao le hahelletsoeng leo GitHub e e hlahisang, ka thuso ea sonarcloud[bot] e tla khona ho kena ho Git e le hore e re siele melaetsa ka likopo tsa ho hula.

Dsonar.projectKey - lebitso la morero ho sonar, u ka e bona litlhophisong tsa morero.

Dsonar.mokgatlo - lebitso la mokhatlo o tsoang ho GitHub.

Re etsa kopo ea ho hula 'me re emetse sonarcloud[bot] ho tla maikutlong:

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Tsamaiso ea tokollo

Mohaho o hlophisitsoe, liteko li entsoe, 'me re ka etsa tokollo. Ha re shebeng hore na GitHub Actions e ka nolofatsa taolo ea tokollo joang.

Mosebetsing, ke na le merero eo khoutu ea eona e leng ka har'a bitbucket (ntho e 'ngoe le e' ngoe e tšoana le pale eo "Ke ngolla bitbucket motšehare, ke itlama ho GitHub bosiu"). Ka bomalimabe, bitbucket ha e na lisebelisoa tsa taolo ea tokollo e hahelletsoeng kahare. Ena ke bothata, hobane bakeng sa tokollo e 'ngoe le e' ngoe u tlameha ho iketsetsa leqephe ka confluence le ho lahlela likarolo tsohle tse kenyelletsoeng ho lokolloa moo, batla ka matlo a borena a kelello, mesebetsi ka jira, e etsa polokelong. Ho na le menyetla e mengata ea ho etsa phoso, u ka lebala ntho e itseng kapa ua kenya ntho e neng e se e lokolotsoe lekhetlong la ho qetela, ka linako tse ling ha ho hlake hore na kopo ea ho hula ke efe - na ke tšobotsi kapa tokiso ea liphoso, kapa liteko tsa ho hlophisa, kapa ntho ea motheo .

Liketso tsa GitHub li ka re thusa joang? Ho na le ts'ebetso e ntle haholo - tokollo ea tokollo, e u lumella ho theha template ea faele ea lintlha tsa tokollo ho theha mekhahlelo ea likopo tsa ho hula le ho li hlophisa ka bo eona faeleng ea lintlha tsa tokollo:

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Mohlala oa mohlala oa ho theha tlaleho (.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

Kenya mongolo ho hlahisa tokollo (.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 }}

Likopo tsohle tsa ho hula ho tloha joale ho ea pele li tla bokelloa ka lintlha tsa tokollo - boselamose!

Mona potso e ka hlaha: ho thoe'ng haeba bahlahisi ba lebala ho kenya li-tag ho PR? Joale ha ho hlake hore na u ka e kenya sehlopheng sefe, 'me hape u tla tlameha ho sebetsana le eona ka letsoho, ka PR ka 'ngoe ka thoko. Ho lokisa bothata bona, re ka sebelisa ketso e 'ngoe - label verifier - e hlahloba boteng ba li-tag ho kopo ea ho hula. Haeba ho se na li-tag tse hlokahalang, joale cheke e tla hlōleha 'me re tla bona molaetsa ka sena ho kopo ea rona ea ho hula.

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'

Hona joale kopo efe kapa efe ea ho hula e tlameha ho tšoauoa ka e 'ngoe ea li-tag: mofuta: lokisa, mofuta: likarolo, mofuta: litokomane, mofuta: liteko, mofuta: config.

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Tlhaloso e ikemetseng ea likopo tsa ho hula

Kaha re amme taba e joalo e le mosebetsi o atlehang ka likopo tsa ho hula, ho bohlokoa ho bua ka ketso e kang ea labeler, e beha li-tag ho PR ho latela hore na ke lifaele life tse fetotsoeng. Mohlala, re ka tšoaea e le [haha] kopo efe kapa efe ea ho hula e nang le liphetoho bukeng .github/workflow.

Ho e kopanya ho bonolo haholo:

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 }}

Re boetse re hloka faele e hlalosang ngollano lipakeng tsa litsamaiso tsa projeke le lihlooho tsa kopo ea ho hula:

theme:build:
  - ".github/**"
  - "pom.xml"
  - ".travis.yml"
  - ".gitignore"
  - "Dockerfile"

theme:code:
  - "src/main/*"

theme:tests:
  - "src/test/*"

theme:documentation:
  - "docs/**"

theme:TRASH:
  - ".idea/**"
  - "target/**"

Ha kea atleha ho kopanya ketso eo ka bo eona e behang mangolo likopong tsa ho hula ka ketso e lekola boteng ba lileibole tse hlokahalang; match-label ha e batle ho bona mabitso a kentsoeng ke bot. Ho bonahala ho le bonolo ho ngola ketso ea hau e kopanyang mekhahlelo ka bobeli. Empa leha e le ka foromo ena ho bonolo ho e sebelisa; o hloka ho khetha lengolo lethathamong ha o etsa kopo ea ho hula.

Ke nako ea ho tsamaisa

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Ke lekile likhetho tse 'maloa tsa phepelo ka GitHub Actions (ka ssh, ka scp, le ho sebelisa docker-hub), mme nka re, mohlomong, u tla fumana mokhoa oa ho kenya binary ho seva, ho sa tsotelehe hore na pipeline ea hau e khopame hakae. ke.

Ke ratile khetho ea ho boloka lisebelisoa tsohle sebakeng se le seng, kahoo a re shebeng hore na re ka sebelisa joang ho GitHub Packages (ena ke sebaka sa polokelo ea litaba tsa binary, npm, jar, docker).

Script bakeng sa ho aha setšoantšo sa docker le ho se phatlalatsa ho 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 }}"

Ntlha ea pele, re hloka ho haha ​​​​faele ea JAR ea kopo ea rona, ka mor'a moo re bala tsela e eang ho GitHub docker registry le lebitso la setšoantšo sa rona. Ho na le maqheka a 'maloa mona ao re so kang ra a bona:

  • mohaho o kang: echo ":: set-output name=NAME::VALUE" e u lumella ho beha boleng ba phetoho mohatong oa hona joale, e le hore e ka baloa mehatong e meng kaofela.
  • o ka fumana boleng ba ho feto-fetoha ha sete mohatong o fetileng ka ho tsebahatsa mohato ona: ${{steps.global_env.outputs.DOCKERHUB_IMAGE_NAME }}
  • Mofuta o tloaelehileng oa GITHUB_REPOSITORY o boloka lebitso la polokelo le mong'a eona ("mong'a/repo-name"). Ho khaola ntho e ngoe le e ngoe moleng ona ntle le lebitso la polokelo, re tla sebelisa bash syntax: ${GITHUB_REPOSITORY#*/}

E latelang re hloka ho aha setšoantšo sa docker:

docker build -t "docker.pkg.github.com/antkorwin/github-actions/github-actions:latest"

Kena ho registry:

docker login docker.pkg.github.com -u $GITHUB_ACTOR -p ${{secrets.GITHUB_TOKEN}}

'Me u phatlalatse setšoantšo ho GitHub Packages Repository:

docker push "docker.pkg.github.com/antkorwin/github-actions/github-actions"

E le ho bonts'a mofuta oa setšoantšo, re sebelisa linomoro tsa pele ho tloha ho SHA hash ea boitlamo - GITHUB_SHA ho boetse ho na le li-nuances mona, haeba u etsa lihahi tse joalo eseng feela ha u kopanya ho master, empa hape ho ea ka pōpo ea kopo ea ho hula. ketsahalo, ebe SHA e kanna ea se ke ea ts'oana le hashe eo re e bonang nalaneng ea git, hobane ketso / ketso ea ho tsoa e iketsetsa hashe ea eona e ikhethang ho qoba liketso tse thibelang PR.

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Haeba ntho e 'ngoe le e' ngoe e sebetsa hantle, ebe u bula karolo ea liphutheloana (https://github.com/antkorwin/github-actions/packages) sebakeng sa polokelo, u tla bona setšoantšo se secha sa docker:

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Ha u le moo u ka bona lethathamo la liphetolelo tsa setšoantšo sa docker.

Sohle se setseng ke ho lokisa seva sa rona hore se sebetse le ngoliso ena le ho qala ts'ebeletso hape. Mohlomong ke tla bua ka mokhoa oa ho etsa sena ka systemd ka nako e 'ngoe.

Tlhokomelo

Ha re shebeng khetho e bonolo ea ho etsa tlhahlobo ea bophelo bo botle bakeng sa ts'ebeliso ea rona re sebelisa GitHub Actions. Sesebelisoa sa rona sa boot se na le actuator, kahoo ha ho hlokahale hore re ngole API ho lekola boemo ba eona; re se re entse ntho e ngoe le e ngoe bakeng sa botsoa. U hloka feela ho hula moamoheli: 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"}

Seo re se hlokang feela ke ho ngola mosebetsi ho hlahloba seva ho sebelisa cron, 'me haeba ka tšohanyetso e sa re arabe, joale re tla romela tsebiso ka thelekramo.

Taba ea pele, a re boneng mokhoa oa ho tsamaisa cron workflow:

on:
  schedule:
    - cron:  '*/5 * * * *'

Ho bonolo, ha ke kholoe le hore ho Github u ka etsa liketsahalo tse sa lumellaneng le li-webhooks ho hang. Lintlha li teng litokomaneng: help.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule

Ha re hlahlobeng boemo ba seva ka letsoho ka li-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"

Ntlha ea pele, re boloka ho feto-fetoha seo seva se arabileng kopo, mohato o latelang re hlahloba hore na boemo ke UP 'me, haeba ho se joalo, joale re tsoa ka phoso. Haeba o hloka ho "feta" ketso ka matsoho a hau, joale tsoa 1 - sebetsa se loketseng.

  - 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 }}

Re romella ho thelekramo ha feela ketso e hlolehile mohatong o fetileng. Ho romella molaetsa re sebelisa appleboy/telegraph-action; o ka bala ka mokhoa oa ho fumana lets'oao la bot le id ea puisano litokomaneng: github.com/appleboy/telegram-action

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Se ke oa lebala ho ngola liphiri ho Github: URL ea seva le li-tokens tsa bot ea thelekramo.

Pina ea bonase - JIRA bakeng sa botsoa

Ke ile ka tšepisa hore re tla khutlela JIRA, ’me re khutlile. Ka makhetlo a makholo ke bone boemo ba ho ema ha bahlahisi ba etsa karolo, ba kopanya lekala, empa ba lebala ho hulela bothata ho JIRA. Ha e le hantle, haeba sena sohle se ne se etsoa sebakeng se le seng, ho ne ho tla ba bonolo, empa ha e le hantle re ngola khoutu ho IDE, re kopanya makala ho bitbucket kapa GitHub, ebe re hula mesebetsi ho Jira, bakeng sa sena re hloka ho bula lifensetere tse ncha. , ka linako tse ling kena hape joalo-joalo. Ha u hopola ka ho phethahetseng seo u lokelang ho se etsa ka mor'a moo, joale ha ho na thuso ho bula boto hape. Ka lebaka leo, hoseng ha u ema u lokela ho qeta nako u ntlafatsa boto ea mosebetsi.

GitHub e tla boela e re thuse mosebetsing ona o tloaelehileng; ho qala, re ka hula litaba ka bohona kholeng ea code_review ha re fana ka kopo ea ho hula. Seo u hlokang ho se etsa feela ke ho latela kopano ea mabitso ea lekala:

[имя проекта]-[номер таска]-название

mohlala, haeba senotlolo sa morero "GitHub Actions" ke GA, joale GA-8-jira-bot e ka ba lekala la ho phethahatsa mosebetsi oa GA-8.

Ho kopanngoa le JIRA ho sebetsa ka liketso tsa Atlassian, ha lia phethahala, ke tlameha ho bolela hore tse ling tsa tsona ha lia ka tsa nthusa ho hang. Empa re tla tšohla feela tse sebetsang hantle le tse sebelisoang ka mafolofolo.

Pele o hloka ho kena ho JIRA o sebelisa ketso: 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 }}

Ho etsa sena, o hloka ho fumana lets'oao ho JIRA, mokhoa oa ho etsa sena o hlalositsoe mona: confluence.atlassian.com/cloud/api-tokens-938839638.html

Re ntša sekhetho sa mosebetsi ho tsoa lebitsong la lekala:

  - 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}}

Haeba u batla 'marakeng oa GitHub, u ka fumana ketso bakeng sa mosebetsi ona, empa ke ile ka tlameha ho ngola ntho e tšoanang ke sebelisa grep ke sebelisa lebitso la lekala, hobane ketso ena e tsoang ho Atlassian e ne e sa batle ho sebetsa morerong oa ka ka tsela leha e le efe. , ho fumana hore na phoso ke efe moo - nako e telele ho feta ho etsa ntho e tšoanang ka matsoho a hau.

Ho setseng ke ho fetisetsa mosebetsi ho kholomo ea "Code review" ha u etsa kopo ea ho hula:

  - name: Transition issue
    if: ${{ success() }}
    uses: atlassian/gajira-transition@master
    with:
      issue: ${{ steps.find_issue.outputs.ISSUE_ID }}
      transition: "Code review"

Ho na le ketso e khethehileng bakeng sa sena ho GitHub, seo e se hlokang feela ke ID ea taba e fumanoeng mohatong o fetileng le tumello ho JIRA eo re e entseng ka holimo.

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Ka mokhoa o ts'oanang, o ka hula mesebetsi ha o kopanya ho master, le liketsahalo tse ling ho tsoa ho GitHub workflow. Ka kakaretso, tsohle li itšetlehile ka monahano oa hau le takatso ea ho iketsetsa mekhoa e tloaelehileng.

fumanoeng ke

Haeba u sheba setšoantšo sa khale sa DEVOPS, re koahetse mekhahlelo eohle, ntle le mohlomong ho sebetsa, ke nahana hore ha u leka, u ka fumana ketso e itseng 'marakeng bakeng sa ho kopanngoa le tsamaiso ea li-desk, kahoo re tla nka hore pipeline e fetohile. ka botlalo mme ho ka fihleloa liqeto ho ipapisitsoe le ts'ebeliso ea eona.

Li-Circles tsa lihele tse nang le GitHub Actions (ho aha pipeline ea CI/CD bakeng sa morero oa Java)

Melemo:

  • Sebaka sa 'maraka se nang le liketso tse lokiselitsoeng liketsahalong tsohle, sena se monate haholo. Ho tse ngata tsa tsona, o ka sheba le khoutu ea mohloli ho utloisisa mokhoa oa ho rarolla bothata bo ts'oanang kapa ho romella kopo ea sebopeho ho sengoli ka kotloloho sebakeng sa polokelo ea GitHub.
  • Ho khetha sethala sa ho kopanya: Linux, mac os, windows ke tšobotsi e khahlisang haholo.
  • Liphutheloana tsa Github ke ntho e ntle haholo, ho bonolo ho boloka lisebelisoa tsohle sebakeng se le seng, ha ho hlokahale hore u palama lifensetere tse fapaneng, ntho e 'ngoe le e' ngoe e ka har'a sebaka sa ho tobetsa mouse e le 'ngoe kapa tse peli' me e kopantsoe ka ho phethahetseng le GitHub Actions. Ts'ehetso ea ngoliso ea Docker ho mofuta oa mahala le eona ke monyetla o motle.
  • GitHub e pata liphiri ka har'a likutu tsa kaho, kahoo ho e sebelisa ho boloka li-password le li-tokens ha ho tšose hakaalo. Nakong ea liteko tsohle tsa ka, ha ho mohla nkileng ka khona ho bona sephiri ka sebopeho sa sona se hloekileng ho console.
  • Mahala bakeng sa merero ea Open Source

Chelete:

  • YML, hantle, ha ke mo rate. Ha u sebetsa ka phallo e joalo, molaetsa o tloaelehileng oa boitlamo oo ke nang le oona ke "lokisa yml format", ebe u lebala ho beha tabo kae-kae, kapa u e ngola molaong o fosahetseng. Ka kakaretso, ho lula ka pel'a skrine ka protractor le 'musi hase phihlelo e monate ka ho fetisisa.
  • TLHOKOMELISO, ho lokisa phallo ka li-commissions, ho aha bocha, le ho hlahisa khomphutha ha se kamehla ho leng bonolo, empa ke karolo ea "u feletsoe ke matla"; o tloaetse ho sebetsa ka IDEA e bonolo, ha o khona ho lokisa eng kapa eng. .
  • U ka ngola ketso ea hau ho eng kapa eng haeba u e phuthela ka Docker, empa ke javascript feela e tšehetsoeng ka tlhaho, ehlile ena ke taba ea tatso, empa nka khetha ho hong ho fapana le js.

E-re ke u hopotse hore polokelo e nang le lingoloa tsohle e teng mona: github.com/antkorwin/github-actions

Bekeng e tlang ke tla be ke etsa le tlaleha kopanong ea Heisenbug 2020 Piter. Ke tla u bolella eseng feela mokhoa oa ho qoba liphoso ha u lokisetsa lintlha tsa tlhahlobo, empa hape u arolelane liphiri tsa ka tsa ho sebetsa le lisebelisoa tsa data lits'ebetsong tsa Java!

Source: www.habr.com