Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

E masani ona ou fausia se paipa mo galuega faufale i Java. O nisi taimi e tatala punaoa, o nisi taimi e leai. Na ou filifili talu ai nei e taumafai e aveese nisi o aʻu faleoloa mai Travis-CI ma TeamCity i GitHub Actions, ma o le mea lea na sau mai ai.

O le a le mea o le a tatou otometi?

Muamua, matou te manaʻomia se poloketi o le a matou faʻaaogaina, seʻi o tatou faia se tamaʻi talosaga ile Spring boot / Java 11 / Maven. Mo faʻamoemoega o lenei tusiga, matou te le fiafia lava i le faʻaogaina o le talosaga; o mea tetele o loʻo siomia ai le talosaga e taua ia i matou, o lea o le a lava mo i matou se pule REST API faigofie.

E mafai ona e va'ai i puna'oa iinei: github.com/antkorwin/github-actions O laasaga uma o le fausiaina o se paipa o loʻo atagia i talosaga toso mo lenei poloketi.

JIRA ma fuafuaga

E taua le fa'apea e masani ona matou fa'aogaina le JIRA e fai ma su'esu'ega fa'amatalaga, se'i o tatou faia se isi laupapa mo lenei poloketi ma fa'aopoopo i ai mataupu muamua:

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

I se taimi mulimuli ane o le a tatou toe foʻi atu i mea manaia e mafai e JIRA ma GitHub ona ofoina faʻatasi.

Matou te otometi le faʻapotopotoga o le poloketi

O la matou suʻega suʻega e fausia e ala i le maven, o lea o le fausiaina e fai si faigofie, pau lava le mea matou te manaʻomia o le mvn clean package.

Ina ia faia lenei mea e faʻaaoga ai Github Actions, matou te manaʻomia le fatuina o se faila i totonu o le fale teu oloa e faʻamatala ai a matou galuega, e mafai ona faia i se faila yml masani, e le mafai ona ou fai atu ou te fiafia i le "yml programming", ae o le a se mea e mafai ona tatou faia - matou te faia i le .github/ directory workflow/ file build.yml lea o le a matou faʻamatalaina ai gaioiga pe a fausia le paranesi matai:

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 - o se faʻamatalaga lea o le mea na tupu o le a faʻalauiloa ai a tatou tusitusiga.

luga: pull_request/push - fa'ailoa mai e mana'omia ona fa'alauiloa lenei fa'agasolo galuega i taimi uma e fai ai se tulei i le matai ma fa'atupu talosaga toso.

O lo'o i lalo le fa'amatalaga o galuega (galuega) ma laasaga o le faʻatinoga (laasaga) mo galuega taitasi.

taufetuli - o iinei e mafai ona tatou filifilia le OS sini, e ofo ai, e mafai foi ona e filifilia Mac OS, ae i luga o faleoloa tumaoti e taugata tele (faʻatusatusa i Linux).

faaaogaina fa'atagaina oe e toe fa'aaoga isi gaioiga, mo se fa'ata'ita'iga, fa'aaoga gaioiga/setup-java gaioiga matou te fa'apipi'iina le si'osi'omaga mo Java 11.

Faatasi ai ma le fesoasoani a i e mafai ona matou faʻamaonia le faʻamaufaʻailoga matou te faʻaalia ai le gaioiga, o le mea moni o finauga ia o le a tuʻuina atu i le gaioiga.

Pau lava le mea o loʻo totoe o le faʻatautaia lea o le poloketi faʻatasi ma Maven: run: mvn -B clean package fuʻa -B fai mai matou te manaʻomia se faiga e le fefaʻasoaaʻi ina ia faʻafuaseʻi ona le manaʻo le maven e fesili mai ia i matou i se mea

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

Matagofie! Ia, o taimi uma e te tuuto atu ai i le matai, e amata le fausiaina o le poloketi.

Otometi fa'ata'ita'iga su'ega

E lelei le faʻapotopotoga, ae o le mea moni, e mafai ona faʻapipiʻiina ma le saogalemu se poloketi, ae le o se galuega. O le mea lea, o le isi laasaga o le faʻautometi le suʻega. E le gata i lea, e faigofie tele le vaʻavaʻai i taunuʻuga o le pasia o suʻega pe a e faia se iloiloga PR - e te iloa mautinoa e pasi suʻega ma e leai se tasi na galo e faʻatautaia a latou lala aʻo leʻi faia se fusi.

O le a matou faʻataʻitaʻiina suʻega pe a fatuina se talosaga toso ma tuʻufaʻatasia i le matai, ma i le taimi lava e tasi o le a matou faʻaopoopoina le fatuina o se lipoti i luga o code-coverage.

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

Ina ia aofia ai suʻega, ou te faʻaogaina codecov faʻatasi ma le jacoco plugin. codecov ei ai lana lava gaioiga, ae e manaʻomia se faʻailoga e galue ai ma le matou toso talosaga:

${{ secrets.CODECOV_TOKEN }} - o le a matou vaʻai i lenei fausiaina e sili atu ma le tasi, o mea lilo o se masini mo le teuina o mealilo i GitHub, e mafai ona matou tusia iina upu faʻamaonia / faʻailoga / talimalo / urls ma isi faʻamatalaga e le tatau ona aofia i totonu o le faʻamaumauga faʻamaumauga.

E mafai ona e faʻaopoopoina se fesuiaiga i mealilo i totonu o le fale teu oloa ile GitHub:

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

E mafai ona e maua se faailoga i codecov.io A maeʻa le faʻatagaina e ala i GitHub, e faʻaopoopo se galuega lautele e te manaʻomia e mulimuli i se fesoʻotaʻiga pei o lenei: GitHub igoa fa'aoga/[suiga igoa]. E mafai foʻi ona faʻaopoopoina se fale teu oloa; ina ia faia lenei mea, e tatau ona e tuʻuina atu aia tatau codecov i le talosaga i Github.

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

Faaopopo le jacoco plugin i le POM faila:

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

O lea o le a ulufale le codecov bot a matou talosaga toso taʻitasi ma faʻaopoopo se kalafi suiga suiga:

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

Se'i o tatou fa'aopoopoina se su'esu'ega fa'amau

I le tele o aʻu galuega faʻavae tatala, ou te faʻaogaina le sonar cloud mo le suʻesuʻeina o code code, e faigofie lava ona faʻafesoʻotaʻi i travis-ci. O lea la o se laasaga talafeagai pe a faimalaga i GitHub Actions e fai tutusa. O le maketi gaioiga o se mea manaia, ae o le taimi lea na ou faʻavaivaia ai, ona o le masani na ou maua ai le gaioiga na ou manaʻomia ma faʻaopoopo i le galuega. Ae na foliga mai e le lagolagoina e sonar le galue i se gaioiga mo le suʻeina o galuega faatino i luga o le maven poʻo le gradle. Ioe, o loʻo tusia lenei mea i totonu o faʻamaumauga, ae o ai na te faitauina?!

E le mafai e ala i se gaioiga, o lea o le a matou faia e ala i le mvn plugin:

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 mafai ona maua i sonarcloud.io ma e tatau ona e lesitala i mea lilo. GITHUB_TOKEN - o se faʻailoga faʻapipiʻi lea e gaosia e GitHub, faʻatasi ai ma le fesoasoani o le sonarcloud[bot] o le a mafai ona saini i Git ina ia tuʻu mai ia i matou savali i talosaga toso.

Dsonar.projectKey - le igoa o le poloketi i le sonar, e mafai ona e vaʻai i ai i le faʻatulagaina o galuega.

Dsonar.organization - igoa o le faʻalapotopotoga mai GitHub.

Matou te faia se talosaga toso ma faʻatali mo sonarcloud[bot] e sau i faʻamatalaga:

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

Faʻamatuʻu pulega

Ua uma ona faʻatulagaina le fausiaina, ua uma suʻega, ma e mafai ona matou faia se faʻamalolo. Se'i o tatou va'ai pe fa'afefea ona fa'afaigofie e le GitHub Actions le pulega fa'asa'oloto.

I le galuega, o loʻo i ai aʻu galuega faʻavae o loʻo i totonu o le bitbucket (o mea uma lava e pei o lena tala "Ou te tusi i le bitbucket i le ao, tautino i GitHub i le po"). Ae paga lea, o le bitbucket e leai ni mea faigaluega e fa'asa'oloto ai. O se faʻafitauli lea, aua mo faʻasalalauga taʻitasi e tatau ona e faia ma le lima se itulau i le faʻafeiloaʻiga ma lafo uma foliga o loʻo aofia ai i le faʻamalolo iina, suʻesuʻe i totonu o maota o le mafaufau, galuega i jira, faia i le fale teu oloa. E tele avanoa e fai ai se mea sese, e mafai ona galo ia te oe se mea pe ulufale i se mea ua uma ona tatalaina i le taimi mulimuli, o nisi taimi e le o manino pe o le a le faʻavasegaina o se talosaga toso e pei o - o se faʻaaliga poʻo se faʻapipiʻi bug, poʻo suʻega suʻega, poʻo se mea fa'apitoa .

E mafai faapefea e GitHub gaioiga ona fesoasoani ia i tatou? O loʻo i ai se gaioiga sili - faʻasaʻo faʻataʻitaʻiga, e mafai ai ona e setiina se faʻataʻitaʻiga faila faila faʻamaumauga e faʻatulaga ai vaega o talosaga toso ma faʻapipiʻi otometi i latou i le faila faʻamatalaga faʻamaumauga:

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

Fa'ata'ita'iga fa'ata'ita'iga mo le fa'atulagaina o se lipoti (.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

Fa'aopoopo se fa'amatalaga e fa'atupu ai se fa'ata'ita'iga fa'amatu'u (.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 }}

O talosaga toso uma mai le taimi nei o le a aoina otometi i faʻamaumauga faʻasaʻo - faʻataulāitu!

O iinei e ono tulaʻi mai ai le fesili: faʻafefea pe a galo i le au atinaʻe le tuʻuina o pine i le PR? Ona le manino lea po o le fea vaega e tu'u i ai, ma e tatau ona e taulimaina ma le lima, ma PR ta'itasi eseese. Ina ia foia lenei faʻafitauli, e mafai ona matou faʻaogaina se isi gaioiga - faʻamaonia igoa - e siaki ai le iai o faʻailoga i luga o le talosaga toso. Afai e leai ni faʻailoga manaʻomia, o le a le manuia le siaki ma o le a matou vaʻai i se feʻau e uiga i lenei mea i la matou talosaga toso.

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'

Ole taimi nei e tatau ona makaina soʻo se toso-talosaga i se tasi o pine: ituaiga:fix, type:features, type:documentation, type:tests, type:config.

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

Auto-faamatalaga o talosaga toso

Talu ai na matou paʻi atu i se autu e pei o se galuega aoga ma talosaga toso, e aoga le talanoa e uiga i se gaioiga e pei o le faʻailoga, e tuʻu ai pine i le PR e faʻavae i luga o faila ua suia. Mo se faʻataʻitaʻiga, e mafai ona tatou faʻailogaina o le [fausia] soʻo se talosaga toso e iai suiga i le lisi .github/workflow.

Faʻafesoʻotaʻi e matua faigofie lava:

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

Matou te manaʻomia foʻi se faila e faʻamatala ai le fesoʻotaʻiga i le va o faʻatonuga o le poloketi ma autu o talosaga toso:

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

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

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

theme:documentation:
  - "docs/**"

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

Ou te leʻi manuia i le faʻapipiʻiina o le gaioiga e otometi ona tuʻu igoa i talosaga toso ma le gaioiga e siaki ai le i ai o faʻailoga manaʻomia; e le manaʻo le faʻailoga-igoa e vaʻai i igoa faʻaopoopo e le bot. E foliga mai e faigofie ona tusi lau oe lava gaioiga e tuʻufaʻatasia ai vaega uma e lua. Ae e oʻo lava i lenei fomu e faigofie tele ona faʻaoga; e tatau ona e filifilia se igoa mai le lisi pe a fatuina se talosaga toso.

Ua oʻo i le taimi e faʻapipiʻi ai

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

Sa ou taumafai i le tele o filifiliga e ala i le GitHub Actions (e ala i le ssh, e ala i le scp, ma le faʻaogaina o le docker-hub), ma e mafai ona ou fai atu, e foliga mai, o le ae mauaina se auala e faʻapipiʻi ai le binary i le server, e tusa lava po o le a le piʻopiʻo o lau paipa. o.

Ou te fiafia i le filifiliga o le teuina uma o atinaʻe i se nofoaga e tasi, o lea seʻi o tatou vaʻavaʻai pe faʻafefea ona faʻapipiʻi i GitHub Packages (o se fale teu oloa mo mea e lua, npm, fagu, docker).

Faʻamatalaga mo le fausiaina o se ata faʻapipiʻi ma lolomiina i 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 }}"

Muamua, matou te manaʻomia le fausiaina o le faila JAR o la matou talosaga, a maeʻa ona matou faʻatatauina le ala i le GitHub docker resitala ma le igoa o la matou ata. E i ai nai togafiti iinei tatou te leʻi mauaina i le taimi nei:

  • o se fausaga e pei o: echo “::set-output name=NAME::VALUE” e mafai ai ona e setiina le tau o se fesuiaiga i le laasaga o loo i ai nei, ina ia mafai ona faitau i isi laasaga uma.
  • e mafai ona e maua le tau o le seti fesuiaiga i le laasaga muamua e ala i le faailoaina o lenei laasaga: ${{ steps.global_env.outputs.DOCKERHUB_IMAGE_NAME }}
  • O le tulaga GITHUB_REPOSITORY fesuiaiga e teu ai le igoa o le fale teu oloa ma lona pule ("owner/repo-name"). Ina ia tipi mea uma mai lenei laina sei vagana ai le igoa o le fale teu oloa, o le a matou faʻaogaina le syntax bash: ${GITHUB_REPOSITORY#*/}

O le isi mea e manaʻomia ona tatou fausia le ata o le docker:

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

Ulufale i le resitala:

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

Ma lolomi le ata ile GitHub Packages Repository:

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

Ina ia faʻaalia le faʻaaliga o le ata, matou te faʻaogaina numera muamua mai le SHA hash of the commit - GITHUB_SHA o loʻo i ai foʻi nuances iinei, pe a fai e te faia na mea e le gata pe a tuʻufaʻatasia i le matai, ae faʻapea foʻi ma le tosoina o le talosaga. mea na tupu, ona le mafai lea e le SHA ona fetaui ma le hash lea tatou te vaʻaia i le git history, aua o gaioiga / siaki gaioiga e faia ai lana lava hash tulaga ese e aloese ai mai gaioiga faʻalavelave i le PR.

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

Afai e lelei mea uma, ona tatalaina lea o le vaega o afifi (https://github.com/antkorwin/github-actions/packages) i totonu o le fale teu oloa, o le a e vaʻai i se ata fou o le docker:

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

O iina e mafai ai foi ona e vaʻai i se lisi o faʻaaliga o le ata o le docker.

Pau lava le mea o loʻo totoe o le faʻatulagaina o la matou 'auʻaunaga e galulue ma lenei resitala ma toe amata le auaunaga. Atonu o le a ou talanoa pe faʻafefea ona fai lenei mea e ala i le systemd i se isi taimi.

Mataitu

Sei o tatou tilotilo i se filifiliga faigofie ile auala e fai ai se siaki soifua maloloina mo la tatou talosaga e faʻaaoga ai GitHub Actions. O loʻo i ai i le matou taʻaloga taʻavale se gaioiga, o lea matou te le manaʻomia ai ona tusia se API e siaki ai lona tulaga; ua uma ona matou faia mea uma mo le paie. E na'o lou mana'omia e toso le talimalo: 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"}

Pau lava le mea matou te manaʻomia o le tusia lea o se galuega e siaki ai le server e faʻaaoga ai le cron, ma afai faʻafuaseʻi na te le tali mai ia i matou, ona matou lafoina lea o se faʻamatalaga i le telegram.

Muamua, seʻi o tatou vaʻai pe faʻafefea ona faʻatautaia se faʻasologa o galuega cron:

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

E faigofie, e le mafai ona ou talitonu i Github e mafai ona e fatuina mea e le fetaui i totonu o webhooks. O faʻamatalaga o loʻo i totonu o faʻamaumauga: help.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule

Sei o tatou siaki le tulaga o le server ma le lima e ala i le 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"

Muamua, matou te faʻasaoina i totonu o se fesuiaiga le mea na tali mai ai le server i le talosaga, i le isi laasaga matou te siakiina o le tulaga o le UP ma, afai e le o le tulaga lea, ona matou o ese lea ma se mea sese. Afai e te manaʻomia e "lofāina" se gaioiga i ou lima, ona ulufafo 1 - auupega talafeagai.

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

Matou te lafo i le telegram pe a le manuia le gaioiga i le laasaga muamua. E lafo se fe'au matou te fa'aoga appleboy/telegram-action; e mafai ona e faitau pe fa'apefea ona maua se fa'ailoga bot ma talatalanoa id i totonu o fa'amaumauga: github.com/appleboy/telegram-action

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

Aua nei galo e tusi i mea lilo ile Github: URL mo le server ma faʻailoga mo le telegram bot.

Ala ponesi - JIRA mo le paie

Sa ou folafola atu o le a ma toe foi i le JIRA, ma ua ma toe foi mai. E fiaselau taimi na ou matauina ai se tulaga i tulaga i luga ole taimi na faia ai e le au atinaʻe se faʻaaliga, tuʻufaʻatasia se lala, ae galo e toso le mataupu ile JIRA. Ioe, afai e faia uma nei mea i se nofoaga e tasi, o le a sili atu ona faigofie, ae o le mea moni matou te tusia le code i le IDE, tuʻufaʻatasia lala i bitbucket poʻo GitHub, ona toso lea o galuega i Jira, mo lenei mea tatou te manaʻomia le tatalaina o faamalama fou. , o nisi taimi e toe ulufale i totonu ma isi. A e manatua lelei le mea e tatau ona e faia i le isi mea, ona leai lea o se mea e toe tatalaina ai le laupapa. O se taunuuga, i le taeao i se tulaga e te manaʻomia e faʻaalu se taimi e faʻafouina ai le laupapa galuega.

GitHub o le a fesoasoani foi ia i matou i lenei galuega masani; mo le amataga, e mafai ona matou toso otometi mataupu i le code_review koluma pe a matou tuʻuina atu se talosaga toso. Pau lava le mea e tatau ona e faia o le mulimuli lea i le tauaofiaga o igoa o le lālā:

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

mo se faʻataʻitaʻiga, afai o le ki o le poloketi "GitHub Actions" o GA, ona GA-8-jira-bot e mafai ona avea ma lala mo le faʻatinoina o le GA-8 galuega.

Faʻatasi ma le JIRA e galue e ala i gaioiga mai Atlassian, latou te le atoatoa, e tatau ona ou fai atu o nisi oi latou e leʻi aoga mo aʻu. Ae o le a tatou talanoaina naʻo mea e mautinoa e aoga ma faʻaaogaina malosi.

Muamua e tatau ona e ulufale i le JIRA e faʻaaoga ai le gaioiga: 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 }}

Ina ia faia lenei mea, e tatau ona e mauaina se faʻailoga i le JIRA, pe faʻapefea ona fai lenei mea o loʻo faʻamatalaina iinei: confluence.atlassian.com/cloud/api-tokens-938839638.html

Matou te aveese le faʻamatalaga o galuega mai le igoa o le lala:

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

Afai e te suʻeina i le maketi GitHub, e mafai ona e mauaina se gaioiga mo lenei galuega, ae e tatau ona ou tusia le mea lava e tasi e faʻaaoga ai le grep e faʻaaoga ai le igoa o le lala, aua o lenei gaioiga mai Atlassian e leʻi manaʻo e galue i laʻu galuega i soʻo se auala , ia iloa po o le a le mea na sese iina - umi atu nai lo le faia o le mea lava e tasi i ou lima.

Pau lava le mea o loʻo totoe o le faʻanofoina lea o le galuega i le koluma "Code review" pe a fatuina se talosaga toso:

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

O loʻo i ai se gaioiga faʻapitoa mo lenei mea ile GitHub, pau lava le mea e manaʻomia o le ID ID na maua i le laasaga muamua ma le faʻatagaina i le JIRA na matou faia i luga.

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

I le auala lava e tasi, e mafai ona e tosoina galuega pe a tuʻufaʻatasia i totonu o le matai, ma isi mea na tutupu mai GitHub workflow. I se tulaga lautele, e faʻalagolago uma i ou mafaufauga ma le manaʻo e faʻautometi faiga masani.

sailiiliga

Afai e te vaʻavaʻai i le ata mataʻina o le DEVOPS, ua uma ona matou ufiufi vaega uma, sei vagana ua faʻagaioi, ou te manatu afai e te taumafai, e mafai ona e mauaina se gaioiga i le maketi mo le tuʻufaʻatasia ma le fesoasoani-desk system, o lea o le a tatou manatu ai ua liliu le paipa. ia mae'ae'a ma e mafai ona faia fa'ai'uga e fa'atatau i lona fa'aoga.

Li'o o seoli ma GitHub Actions (fausiaina o se paipa CI/CD mo se galuega Java)

Pros:

  • Maketi fa'atasi ai ma gaioiga ua saunia mo taimi uma, e manaia tele lenei mea. I le tele o latou, e mafai foʻi ona e vaʻavaʻai i le code source e malamalama ai pe faʻafefea ona foia se faʻafitauli tutusa poʻo le lafoina o se talosaga faʻapitoa i le tusitala saʻo i le GitHub repository.
  • Filifilia o le faʻatulagaina faʻatulagaina mo le faʻapotopotoga: Linux, mac os, windows o se mea manaia tele.
  • Github Packages o se mea sili, e faigofie le teuina uma o atinaʻe i se nofoaga e tasi, e te le tau faaseʻe i faʻamalama eseese, o mea uma o loʻo i totonu o le laina o le tasi pe lua kiliki kisi ma faʻapipiʻi atoatoa ma GitHub Actions. O le lagolago resitala a Docker i le free version o se avanoa lelei foi.
  • GitHub natia mealilo i le fausiaina o ogalaau, o lea o le faʻaaogaina e teu ai faʻaupuga ma faʻailoga e le faʻafefe. I aʻu suʻesuʻega uma, sa le mafai lava ona ou vaʻaia le mealilo i lona foliga mama i totonu o le faʻamafanafanaga.
  • E leai se totogi mo poloketi Open Source

Cons:

  • YML, lelei, ou te le fiafia ia te ia. Pe a galue i sea tafega, o le savali masani masani o loʻo ia te aʻu o le "fix yml format", o nisi taimi e galo ia te oe e tuʻu se laupepa i se mea, o nisi taimi e te tusia i luga o le laina sese. I se tulaga lautele, o le nofo i luma o le lau ma se protractor ma se pule e le o se aafiaga sili ona manaia.
  • DEBUG, faʻapipiʻiina o le tafe ma taʻutinoga, toe faʻaleleia, ma faʻapipiʻiina i le faʻamafanafanaga e le faigofie i taimi uma, ae sili atu i le vaega "ua e sili atu"; ua e masani e galue ma le IDEA talafeagai, pe a mafai ona e faʻapipiʻi soʻo se mea. .
  • E mafai ona e tusia lau gaioiga i luga o soʻo se mea pe afai e te afifiina i Docker, ae naʻo le javascript e lagolagoina, ioe o se mea o le tofo, ae ou te manaʻo i se isi mea nai lo le js.

Sei ou faamanatu atu ia te oe o le fale teu oloa ma tusitusiga uma o loʻo i ai iinei: github.com/antkorwin/github-actions

O le vaiaso a sau o le a ma faafiafia ai lipoti i le Heisenbug 2020 Piter conference. O le a ou taʻu atu ia te oe e le gata i le auala e aloese ai mai mea sese pe a saunia faʻamaumauga o suʻega, ae faʻasoa foi aʻu mealilo o le galue ma seti faʻamaumauga i Java applications!

puna: www.habr.com