แแ แฎแจแแ แแ แแแฌแแแก แแแแกแแแแแแก แแจแแแแแ Java-แแ แกแแแจแแแแแแ แแ แแแฅแขแแแแกแแแแก. แแแแฏแแ แแก แฆแแ แฌแงแแ แแ, แแแแฏแแ แแ แ. แแ แชแแขแ แฎแแแก แฌแแ แแแแแแฌแงแแแขแ แแแแแแแขแแแ แฉแแแ แแแแแแ แแ แกแแชแแแ Travis-CI-แแแ แแ TeamCity-แแแ GitHub Actions-แจแ แแ แแก แแ แแก แแก, แ แแช แแแแแแแแ.
แ แแก แแแแแฎแแแแ แแแขแแแแขแแแแ แแแแก?
แแแ แแแ แ แแแจแ, แฉแแแ แแแญแแ แแแแ แแ แแแฅแขแ, แ แแแแแกแแช แฉแแแ แแแขแแแแขแแแแ แแแ, แแแแแ แแแแแแแแแ แแแขแแ แ แแแแแแแชแแ Spring boot / Java 11 / Maven-แจแ. แแ แกแขแแขแแแก แแแแแแแแกแแแแก แฉแแแ แกแแแ แแแ แแ แแแแแแขแแ แแกแแแแแ แแแแแแแชแแแก แแแแแแแ, แฉแแแแแแแก แแแแจแแแแแแแแแแ แแแแแแแชแแแก แแ แแแแแ แแ แกแแแฃแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แ, แแแแขแแ แแแ แขแแแ REST API แแแแขแ แแแแ แ แกแแแแแ แแกแ แแฅแแแแ แฉแแแแแแแก.
แฌแงแแ แแแแแก แแแฎแแ แจแแแแซแแแแ แแฅ:
JIRA แแ แแแแแแแแ
แฆแแ แก แแแแก แแฅแแ, แ แแ แฉแแแ แฉแแแฃแแแแ แแ แแแงแแแแแ JIRA-แก, แ แแแแ แช แกแแแแแฎแแก แขแ แแแแ แก, แแกแ แ แแ, แแแแแ แจแแแฅแแแแ แชแแแแ แแแคแ แแ แแ แแแฅแขแแกแแแแก แแ แแแแแแแขแแ แแแ แแแแ แกแแแแแฎแแแ:
แชแแขแ แแแแแแแแแแแ แฉแแแ แแแแฃแแ แฃแแแแแแ แแแแก, แแฃ แ แ แกแแแแขแแ แแกแ แแแแแแแก แจแแฃแซแแแแ JIRA-แ แแ GitHub-แแ แจแแกแแแแแแแ แแแแแแแแชแแแจแ.
แฉแแแ แแแขแแแแขแแแแ แแแ แแ แแแฅแขแแก แแฌแงแแแแก
แฉแแแแ แกแแขแแกแขแ แแ แแแฅแขแ แแแแแฃแแแ maven-แแก แแแจแแแแแแ, แแแแขแแ แแแกแ แแจแแแแแ แกแแแแแแ แแแ แขแแแแ, แ แแช แฉแแแ แแแญแแ แแแแ แแ แแก mvn แกแฃแคแแ แแแแแขแ.
Github Actions-แแก แแแแแงแแแแแแ แแแแก แแแกแแแแแแแแแ, แฉแแแ แฃแแแ แจแแแฅแแแแ แคแแแแ แกแแชแแแจแ, แ แแแแแแช แแฆแฌแแ แก แฉแแแแก แกแแแฃแจแแ แแ แแชแแกแก, แแก แจแแแซแแแแ แแแแแแแแก แฉแแแฃแแแแ แแแ yml แคแแแแแ, แแแ แแแขแงแแ, แ แแ แแแแฌแแแก "yml แแ แแแ แแแแ แแแ", แแแแ แแ แ แ แแฅแแแ - แฉแแแ แแแแก แแแแแแแแ .github/ directory workflow/ แคแแแแ build.yml, แ แแแแแจแแช แแฆแแฌแแ แ แแแฅแแแแแแแแก แกแแแแแแกแขแ แ แคแแแแแแแก แแจแแแแแแกแแก:
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 โ แแก แแ แแก แแ แฆแแแแกแซแแแแแก แแฆแฌแแ แ, แ แแแแแแแช แฉแแแแ แกแแ แแแขแ แแแแฌแงแแแ.
on: pull_request/push โ แแแฃแแแแแแก, แ แแ แแก แกแแแฃแจแแ แแแแแแ แฃแแแ แแแแฌแงแแก แงแแแแ แฏแแ แแ, แ แแชแ แแกแขแแขแแแ แฎแแแแ แแแซแแ แแ แแฅแแแแแ pull-แแก แแแแฎแแแแแแ.
แฅแแแแแ แแแชแแแฃแแแ แแแแแแแแแแแก แแฆแฌแแ แ (แกแแแฃแจแแ) แแ แจแแกแ แฃแแแแแก แแขแแแแแ (แแแแแฏแแแ) แแแแแแฃแแ แแแแชแแแแกแแแแก.
แแแจแแแแฃแแ - แแฅ แฉแแแ แจแแแแแซแแแ แจแแแแ แฉแแแ แกแแแแแแ OS, แแแกแแแแแ แแ, แ แแ แแฅแแแ แจแแแแซแแแแ แแแ แฉแแแ Mac OS, แแแแ แแ แแแ แซแ แกแแชแแแแแจแ แแก แกแแแแแแ แซแแแ แแ (แแแแฃแฅแกแแก แจแแแแ แแแแ).
แแแแแงแแแแแแก แกแแจแฃแแแแแแก แแแซแแแแ แฎแแแแฎแแ แแแแแแงแแแแ แกแฎแแ แแแฅแแแแแแแแ, แแแแแแแแแ, แแแฅแแแแแแแแแก/setup-java แแแฅแแแแแแแก แแแแแงแแแแแแ แฉแแแ แแแแแกแขแแแแ แแแ แแแ แแแแก Java 11-แแกแแแแก.
แกแแจแฃแแแแแแ แแ แแแ แฉแแแ แจแแแแแซแแแ แแแแแกแแแฆแแ แแ แแก แแแ แแแแขแ แแแ, แ แแแแแแแแแช แแแฌแงแแแ แแแฅแแแแแแแก, แแ แกแแแแแแ แแก แแ แแก แแ แแฃแแแแขแแแ, แ แแแแแแแช แแแแแแชแแแ แแแฅแแแแแแแก.
แ แฉแแแ แแฎแแแแ แแ แแแฅแขแแก แแจแแแแแ Maven-แแแ แแ แแแ: run: mvn -B clean package
แแ แแจแ -B แแแแแแก, แ แแ แฉแแแ แแแญแแ แแแแ แแ แแแแขแแ แแฅแขแแฃแแ แ แแแแแ, แ แแแ แแแแแแแ แฃแชแแ แแ แแแแแแแแแก แ แแฆแแชแแก แแแแฎแแ
แแแแ! แแฎแแ, แงแแแแ แฏแแ แแ, แ แแแแกแแช แแฅแแแ แแแแแแแฃแแแแแก แแกแ แฃแแแแ แแแกแขแแ แก, แแฌแงแแแ แแ แแแฅแขแแก แแจแแแแแแแแ.
แขแแกแขแแก แแแจแแแแแก แแแขแแแแขแแแแชแแ
แแกแแแแแแ แแแ แแแ, แแแแ แแ แกแแแแแแแแแแจแ, แแ แแแฅแขแ แจแแแซแแแแ แฃแกแแคแ แแฎแแ แแฌแงแแแแแ แแงแแก, แแแแ แแ แแ แ แแแฃแจแแแก. แแแแขแแ, แจแแแแแแ แแแแแฏแ แแ แแก แขแแกแขแแก แแแจแแแแแก แแแขแแแแขแแแแชแแ. แแแ แแ แแแแกแ, แกแแแแแแ แแแกแแฎแแ แฎแแแแแแ แขแแกแขแแแแก แฉแแแแ แแแแก แจแแแแแแแแก แแแแแแแแแ แแแ, แ แแแแกแแช PR แแแแแฎแแแแแก แแแแแแแ - แแฃแกแขแแ แแชแแ, แ แแ แขแแกแขแแแ แแแแแก แแ แแ แแแแก แแแแแแฌแงแแ แแแแแกแ แคแแแแแแแก แแแจแแแแ แจแแ แฌแงแแแก แแแแแแแแแแแ.
แฉแแแ แฉแแแแขแแ แแแ แขแแกแขแแแก pull-แแก แแแแฎแแแแแก แจแแฅแแแแกแแก แแ แแแแแ แแแแแแแแแ แแแกแขแแ แจแ แแ แแแแแแ แแฃแแแ แแแแแแแขแแแ แแแแแ แแจแแก แจแแฅแแแแก แแแแแก แแแคแแ แแแก แจแแกแแฎแแ.
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 }}
แขแแกแขแแแแก แแแกแแคแแ แแ, แแ แแแงแแแแ codecov-แก jacoco แแแแแแแขแแแ แแ แแแ. codecov-แก แแฅแแก แกแแแฃแแแ แ แแแฅแแแแแแ, แแแแ แแ แแแก แกแญแแ แแแแ แแแขแแแ, แ แแ แแแฃแจแแแก แฉแแแแก แแแแฎแแแแแ:
${{ secrets.CODECOV_TOKEN }}
โ แฉแแแ แแแแฎแแแ แแ แแแแกแขแ แฃแฅแชแแแก แแ แแแ แแฎแแ, secrets แแ แแก GitHub-แจแ แกแแแแฃแแแแแแแก แจแแแแฎแแแก แแแฅแแแแแแ, แฉแแแ แจแแแแแซแแแ แแแแฌแแ แแ แแฅ แแแ แแแแแ/แขแแแแแแแ/แฐแแกแขแแแ/urls แแ แกแฎแแ แแแแแชแแแแแ, แ แแแแแแแช แแ แฃแแแ แแงแแก แจแแขแแแแแ แกแแชแแแแก แแแแแก แแแแแจแ.
แแฅแแแ แจแแแแซแแแแ แแแแแแขแแ แชแแแแแ แกแแแแฃแแแแแแแแก GitHub-แแก แกแแชแแแแก แแแ แแแแขแ แแแจแ:
แจแแแแซแแแแ แแแแฆแแ แแแขแแแ แแแกแแแแ แแแ
แแแแแแขแแ jacoco แแแแฃแแ 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>
แแฎแแ codecov แแแขแ แจแแแงแแแแก แฉแแแแก แแแแแแฃแ แแแแฎแแแแแก แแ แแแแแแขแแแก แแแคแแ แแแก แชแแแแแแแแก แแ แแคแแแก:
แแแแแ แแแแแแแขแแ แกแขแแขแแแฃแ แ แแแแแแแแขแแ แ
แฉแแแ แฆแแ แแแแแก แแ แแแฅแขแแแแก แฃแแแขแแกแแแแจแ แแ แแแงแแแแ แกแแแแ แแก แฆแ แฃแแแแก แกแขแแขแแแฃแ แ แแแแแก แแแแแแแแกแแแแก, แกแแแแแแ แแแ แขแแแแ แแแแแแจแแ แแแ travis-ci-แกแแแ. แแกแ แ แแ, แแแแแแฃแ แ แแแแแฏแแ GitHub Actions-แจแ แแแแ แแชแแแกแแก แแแแแแก แแแแแแแแ. แกแแแแฅแแแแ แแแแแ แ แแแแแ แ แ แแแแ, แแแแ แแ แแแฏแแ แแ แชแแขแ แแแแแแชแแ แ, แ แแแแแ แฉแแแแแก แแแแ แแแแแแ แแก แแฅแชแแ, แ แแแแแแช แแญแแ แแแแแแ แแ แแแแแแแขแ แกแแแฃแจแแ แแ แแชแแกแแ. แแแแ แแ แแฆแแแฉแแแ, แ แแ แกแแแแ แ แแ แฃแญแแ แก แแฎแแ แก แแแแแแแ แแ แแ แแแแแแ แแ แแแฅแขแแแแก แแแแแแแแ แแแฅแแแแแแแ แแฃแจแแแแแก. แ แ แแฅแแ แฃแแแ, แแก แแแแฃแแแแขแแชแแแจแ แฌแแ แแ, แแแแ แแ แแแ แแแแฎแฃแแแแก?!
แแก แจแแฃแซแแแแแแแ แแแฅแแแแแแแก แกแแจแฃแแแแแแ, แแแแขแแ แฉแแแ แแแแก แแแแแแแแแแ 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 - แแแฆแแแ แจแแกแแซแแแแแแแ
Dsonar.projectKey โ แแ แแแฅแขแแก แกแแฎแแแฌแแแแแ แกแแแแ แจแ, แจแแแแซแแแแ แแฎแแแแ แแ แแแฅแขแแก แแแ แแแแขแ แแแจแ.
แแกแแแแ .แแ แแแแแแแชแแ - แแ แแแแแแแชแแแก แกแแฎแแแ GitHub-แแแ.
แฉแแแ แแแแแแแแ แแแแฎแแแแแก แแ แแแแแแแแแ sonarcloud[bot]-แก แแแแแแขแแ แแแจแ:
แแแแแจแแแแแก แแแแแฏแแแแขแ
build แแแแคแแแฃแ แแ แแแฃแแแ, แขแแกแขแแแ แฉแแขแแ แแ แแ แฉแแแ แจแแแแแซแแแ แแแแแแแฅแแแงแแแ. แแแแแ แจแแแฎแแแแ, แแฃ แ แแแแ แจแแฃแซแแแ GitHub Actions-แก แแแแแแแกแฃแคแแแแแก แแแ แแแ แแแแ แแ แฃแคแ แ แแแแแแ.
แกแแแกแแฎแฃแ แจแ แแแฅแแก แแ แแแฅแขแแแ, แ แแแแแแ แแแแแก แแแแแช แแ แแก bitbucket-แจแ (แงแแแแแคแแ แ แแกแแ, แ แแแแ แช แแ แแแแแแจแ: โแแฆแแ แแแขแแแแแขแก แแฌแแ , แฆแแแแ GitHub-แก แแฌแแ โ). แกแแแฌแฃแฎแแ แแ, bitbucket-แก แแ แแฅแแก แฉแแจแแแแแฃแแ แแแแแจแแแแแก แแแ แแแแก แแแกแขแ แฃแแแแขแแแ. แแก แแ แแแแแแแ, แ แแแแแ แงแแแแแ แแแแแจแแแแแกแแแแก แฎแแแแ แฃแแแ แจแแฅแแแแ แแแแ แแ แจแแ แฌแงแแแจแ แแ แแฅ แแแแแแแแแ แแแแแจแแแแแจแ แจแแแแแแแ แงแแแแ แแแฎแแกแแแแแแแแ, แแแซแแแแแ แแแแแแแก แกแแกแแฎแแแแแ, แแแแชแแแแแ แฏแแ แแจแ, แแแแแแแแแแ แกแแชแแแจแ. แจแแชแแแแแก แแแจแแแแแก แแ แแแแแ แจแแแกแ แแ แกแแแแแก, แจแแแแซแแแแ แแแแแแฌแงแแ แ แแฆแแช แแ แจแแแงแแแแแ แแก, แ แแช แฃแแแ แแแแแฅแแแงแแแ แแแแ แแ แแก, แแแแฏแแ แฃแแ แแแแ แแแฃแแแแแ แแ, แ แ แฃแแแ แแแแแฃแแแแแแแแแก แแแแฎแแแแแก แแแแกแแคแแแแชแแแก - แแก แคแฃแแฅแชแแแ แแฃ แจแแชแแแแแแแก แแแแแกแฌแแ แแแ, แแฃ แขแแกแขแแแแก แ แแแแฅแขแแ แแแ, แแ แ แแฆแแช แแแคแ แแกแขแ แฃแฅแขแฃแ แฃแแ.
แ แแแแ แแแแแแฎแแแ แแแ GitHub-แแก แฅแแแแแแแแ? แแ แแก แจแแกแแแแจแแแแ แฅแแแแแแ - แแแแแจแแแแแก แจแแแฅแแแแแ, แแก แกแแจแฃแแแแแแก แแแซแแแแ แแแแงแแแแ แแแแแจแแแแแก แจแแแแจแแแแแแก แคแแแแแก แจแแแแแแ, แ แแ แแแแงแแแแ แแแแฎแแแแแก แแแขแแแแ แแแแ แแ แแแขแแแแขแฃแ แแ แแแแฏแแฃแคแแ แแกแแแ แแแแแจแแแแแก แจแแแแจแแแแแแก แคแแแแจแ:
แแแแแแแแ แจแแแแแแ แแแแแ แแจแแก แแแกแแงแแแแแแแ (.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
แแแแแแขแแ แกแแ แแแขแ แแแแแจแแแแแก แแแแแฎแแแแก แจแแกแแฅแแแแแแ (.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 }}
แแแแแ แแแแ แแแแแแแแก แงแแแแ แแแแฎแแแแ แแแขแแแแขแฃแ แแ แจแแแ แแแแแแ แแแแแจแแแแแก แแแขแแแจแ - แแแแแ!
แแฅ แจแแแซแแแแ แแแฉแแแแก แแแแฎแแ: แ แ แแแฎแแแแ, แแฃ แแแแแแแแแ แแแก แแแแแแฌแงแแแแแ แขแแแแแแก แฉแแกแแ แแแแ แจแ? แแแ แ แแแฃแแแแแ แแ แ แแแแ แแแขแแแแ แแแจแ แฉแแกแแ แแ แแกแแ แฎแแแแ แแแแแฌแแแก แกแแฅแแ, แแแแแแฃแ แแแแ แแ แชแแ-แชแแแแ. แแ แแ แแแแแแแก แแแแแกแแญแ แแแแ, แฉแแแ แจแแแแแซแแแ แแแแแแแงแแแแ แกแฎแแ แแแฅแแแแแแ - แแขแแแแขแแแแก แแแแแแแกแขแฃแ แแแแแ - แแก แแแแฌแแแแก แขแแแแแแก แแ แกแแแแแแก pull แแแแฎแแแแแแ. แแฃ แแ แแ แแก แกแแญแแ แ แขแแแแแ, แแแจแแ แจแแแแฌแแแแ แแแ แแแฎแแ แฎแแแแ แแ แฉแแแ แแแแฎแแแ แจแแขแงแแแแแแแแก แแแแก แจแแกแแฎแแ แฉแแแแก pull แแแแฎแแแแแจแ.
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'
แแฎแแ แแแแแกแแแแ แ pull-แแแแฎแแแแ แฃแแแ แแงแแก แแแแแจแแฃแแ แแ แ-แแ แแ แขแแแแ: type:fix, type:features, type:documentation, type:tests, type:config.
แแแงแแแแแก แแแแฎแแแแแแแก แแแขแแแแขแฃแ แ แแแแขแแชแแ
แแแแแแแแ แฉแแแ แจแแแแฎแแ แแกแแ แแแแแก, แ แแแแ แแชแแ แแคแแฅแขแฃแ แ แแฃแจแแแแ pull-แแก แแแแฎแแแแแแแแ, แฆแแ แก แแแแแ แแแ แแกแแ แฅแแแแแแแแ, แ แแแแ แแชแแ labeler, แแก แแแแแกแแแก แขแแแแแก PR-แจแ, แ แแแแแก แกแแคแฃแซแแแแแแช แจแแแชแแแแ แคแแแแแแ. แแแแแแแแแ, แฉแแแ แจแแแแแซแแแ แแฆแแแแจแแแ, แ แแแแ แช [build] แแแแแกแแแแ แ pull แแแแฎแแแแ, แ แแแแแแช แจแแแชแแแก แชแแแแแแแแแก แแแ แแฅแขแแ แแแจแ .github/workflow
.
แแแกแ แแแแแแจแแ แแแ แกแแแแแแ แแแ แขแแแแ:
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 }}
แฉแแแ แแกแแแ แแแญแแ แแแแ แคแแแแ, แ แแแแแแช แแฆแฌแแ แก แแแ แแกแแแแแแแชแแแก แแ แแแฅแขแแก แแแ แแฅแขแแ แแแแกแ แแ แแแแฎแแแแแก แแแแแแก แจแแ แแก:
theme:build:
- ".github/**"
- "pom.xml"
- ".travis.yml"
- ".gitignore"
- "Dockerfile"
theme:code:
- "src/main/*"
theme:tests:
- "src/test/*"
theme:documentation:
- "docs/**"
theme:TRASH:
- ".idea/**"
- "target/**"
แแ แแแ แแแแแฎแแ แฎแ แแ แแแฅแแแแแแแก แแแฌแงแแแแแแ, แ แแแแแแช แแแขแแแแขแฃแ แแ แแแแแกแแแก แแแแแแแแก pull-แแก แแแแฎแแแแแแจแ แฅแแแแแแแ, แ แแแแแแช แแแแฌแแแแก แกแแญแแ แ แแแแแแแแแก แแ แกแแแแแแก; match-label-แก แแ แกแฃแ แก แแแแแแฎแแก แแแขแแก แแแแ แแแแแขแแแฃแแ แแแแแแแแ. แ แแแแ แช แฉแแแก, แฃแคแ แ แแแแแแแ แกแแแฃแแแ แ แแแฅแแแแแแแก แแแฌแแ แ, แ แแแแแแช แแแ แแแแแแแก แแ แแแ แแขแแแก. แแแแ แแ แแ แคแแ แแแแแช แแ, แแแกแ แแแแแงแแแแแ แกแแแแแแ แแแกแแฎแแ แฎแแแแแแ; แแฅแแแ แฃแแแ แแแ แฉแแแ แแขแแแแขแ แกแแแแแ, แ แแแแกแแช แจแแฅแแแแ แแแงแแแแแก แแแแฎแแแแแแก.
แแแแแแแแแแก แแ แแ
แแ แแชแแแ แแแแแแแแแแก แ แแแแแแแแ แแแ แแแแขแ GitHub Actions-แแก แกแแจแฃแแแแแแ (ssh-แแก แแแจแแแแแแ, scp-แแก แกแแจแฃแแแแแแ แแ docker-hub-แแก แแแแแงแแแแแแ) แแ แจแแแแซแแแ แแแฅแแ, แ แแ, แกแแแแ แแฃแแแ, แแแแแแ แแ แแแแแ แกแแ แแแ แแ แแขแแแ แแแแก แแแแก, แ แแช แแ แฃแแแ แแแฎแ แแแ แแงแแก แแฅแแแแ แแแแกแแแแแ. แแ แแก.
แแแแแฌแแแ แแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแ แ แแแแแแแ แจแแแแฎแแแก แแแ แแแแขแ, แแกแ แ แแ, แแแแแ แจแแแฎแแแแ แ แแแแ แแแแแแแแแกแแ GitHub แแแแแขแแแจแ (แแก แแ แแก แกแแชแแแ แแแแแ แฃแแ แจแแแแแ แกแแกแแแแก, npm, jar, docker).
แกแแ แแแขแ แแแแแ แแก แกแฃแ แแแแก แจแแกแแฅแแแแแแ แแ GitHub แแแแแขแแแจแ แแแแแฅแแแงแแแแแกแแแแก:
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 }}"
แแแ แแแ แ แแแจแ, แฉแแแ แฃแแแ แแแแจแแแแ แฉแแแแ แแแแแแแชแแแก JAR แคแแแแ, แ แแก แจแแแแแแแช แแแแแแแแแแแ แแแ GitHub แแแแแ แแก แ แแแกแขแ แแกแ แแ แฉแแแแ แกแฃแ แแแแก แกแแฎแแแก. แแฅ แแ แแก แ แแแแแแแแ แฎแ แแแ, แ แแแแแแช แฏแแ แแ แจแแแแฎแแแแ แแ:
- แแแแกแขแ แฃแฅแชแแ, แ แแแแ แแชแแ: echo โ::set-output name=NAME::VALUEโ แแแซแแแแ แกแแจแฃแแแแแแก แแแแงแแแแ แชแแแแแแก แแแแจแแแแแแแ แแแแแแแแ แ แกแแคแแฎแฃแ แแ, แ แแแ แจแแแแแแ แแแกแ แฌแแแแแฎแแ แจแแกแแซแแแแแแ แแงแแก แงแแแแ แกแฎแแ แกแแคแแฎแฃแ แแ.
- แจแแแแซแแแแ แแแแฆแแ แฌแแแ แกแแคแแฎแฃแ แแ แแแแแแแแฃแแ แชแแแแแแก แแแแจแแแแแแแ แแ แแแแแฏแแก แแแแแขแแคแแแแขแแ แแก แแแจแแแแแแ: ${{ steps.global_env.outputs.DOCKERHUB_IMAGE_NAME }}
- แกแขแแแแแ แขแฃแแ GITHUB_REPOSITORY แชแแแแแ แแแแฎแแแก แกแแชแแแแก แกแแฎแแแก แแ แแแก แแคแแแแแแก (โแแคแแแแแแ/แ แแแ-แกแแฎแแแโ). แแแแกแแแแแก, แ แแ แแ แฎแแแแแแ แงแแแแแคแแ แ แแแแแแญแ แแ, แแแ แแ แกแแชแแแแก แกแแฎแแแแกแ, แแแแแแแงแแแแแ bash แกแแแขแแฅแกแก: ${GITHUB_REPOSITORY#*/}
แจแแแแแ แฉแแแ แฃแแแ แแแแจแแแแ แแแแแ แแก แกแฃแ แแแ:
docker build -t "docker.pkg.github.com/antkorwin/github-actions/github-actions:latest"
แจแแแแ แ แแแกแขแ แจแ:
docker login docker.pkg.github.com -u $GITHUB_ACTOR -p ${{secrets.GITHUB_TOKEN}}
แแ แแแแแแฅแแแงแแแ แกแฃแ แแแ GitHub Packages Repository-แจแ:
docker push "docker.pkg.github.com/antkorwin/github-actions/github-actions"
แแแแแกแแฎแฃแแแแแก แแแ แกแแแก แแแแแแแแแก แแแแแแ, แฉแแแ แแแงแแแแแ แแแ แแแ แชแแคแ แแแก แแแแแขแแก SHA แฐแแจแแแแ - GITHUB_SHA แแฅ แแกแแแ แแ แแก แแแฃแแแกแแแ, แแฃ แแกแแ แแแแแแแแแแก แแแแแแแ แแ แ แแฎแแแแ แแแกแขแแ แจแ แจแแ แฌแงแแแกแแก, แแ แแแแ pull-แแแแฎแแแแแก แจแแฅแแแแก แแแฎแแแแแแแช. แแแแแแแ, แแแจแแ SHA แจแแแซแแแแ แแ แแแแฎแแแแแแก แฐแแจแก, แ แแแแแกแแช แฉแแแ แแฎแแแแแ git แแกแขแแ แแแจแ, แ แแแแแ แฅแแแแแแแแ/แจแแแแฌแแแแแก แฅแแแแแแ แฅแแแแก แแแแแก แฃแแแแแแฃแ แฐแแจแก, แ แแแ แแแแแแแ แแแชแแแแก แฉแแฎแฃแ แ แฅแแแแแแแแ PR-แจแ.
แแฃ แงแแแแแคแแ แ แแแ แแแ แแแแแแแแ, แจแแแแแ แแแฎแกแแแ แแแแแขแแแแก แแแแงแแคแแแแแแก (https://github.com/antkorwin/github-actions/packages) แกแแชแแแจแ, แแแฎแแแ แแแแแ แแก แแฎแแ แกแฃแ แแแก:
แแฅ แแกแแแ แจแแแแซแแแแ แแฎแแแแ แแแแแ แแก แกแฃแ แแแแก แแแ แกแแแแแก แกแแ.
แ แฉแแแ แแฎแแแแ แฉแแแแ แกแแ แแแ แแก แแแแคแแแฃแ แแชแแ แแ แ แแแกแขแ แแแ แแฃแจแแแแแกแแแแก แแ แกแแ แแแกแแก แแแแแขแแแ แแแ. แแ แแแแแ แกแฎแแ แแ แแก แแแกแแฃแแ แแ แแแแแ, แแฃ แ แแแแ แแแแแแแแ แแก systemd-แแก แแแจแแแแแแ.
แแแแแขแแ แแแแ
แแแแแ แจแแแฎแแแแ แแแ แขแแ แแแ แแแแขแก, แแฃ แ แแแแ แฃแแแ แแแแแแแแแ แฏแแแแ แแแแแแแก แจแแแแฌแแแแ แฉแแแแ แแแแแแแชแแแกแแแแก GitHub Actions-แแก แแแแแงแแแแแแ. แฉแแแแก แฉแแขแแแ แแแแก แแแแแแแชแแแก แแฅแแก แแฅแขแแแแขแแ แ, แแกแ แ แแ, แฉแแแ แแ แแแญแแ แแแแ API-แก แแแฌแแ แ แแแกแ แกแขแแขแฃแกแแก แจแแกแแแแฌแแแแแแ; แฉแแแ แฃแแแ แแแแแแแแแ แงแแแแแคแแ แ แแแ แแแชแแแแกแแแแก. แแฅแแแ แฃแแ แแแแ แฃแแแ แแแแงแแแแแ แแแกแแแแซแแแ: 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"}
แฉแแแ แแฎแแแแ แแแญแแ แแแแ แแแแแฌแแ แแ แแแแแแแแ แกแแ แแแ แแก แจแแกแแแแฌแแแแแแ cron-แแก แแแแแงแแแแแแ แแ แแฃ แแแฃแแแแแแแแ แแก แแ แแแแแกแฃแฎแแแก, แแแจแแ แแแแแแแแแแแแแ แจแแขแงแแแแแแแแก แขแแแแแ แแแแก แกแแจแฃแแแแแแ.
แแแ แแแแ, แแแแแ แแแแ แแแแแ, แแฃ แ แแแแ แฃแแแ แแแฃแจแแแ cron แกแแแฃแจแแ แแแแแแ:
on:
schedule:
- cron: '*/5 * * * *'
แแก แแแ แขแแแแ, แแแ แช แแ แแแแแฏแแ แแ, แ แแ Github-แจแ แจแแแแซแแแแ แจแแฅแแแแ แแกแแแ แแแแแแแแแ, แ แแแแแแแช แกแแแ แแแ แแ แฏแแแแ แแแแฐแฃแแแแจแ. แแแขแแแแแ แแแแฃแแแแขแแชแแแจแแ:
แแแแแ แจแแแแแแฌแแแ แกแแ แแแ แแก แกแขแแขแฃแกแ แฎแแแแ 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"
แแแ แแแ แ แแแจแ, แฉแแแ แแแแแฎแแแ แชแแแแแจแ แแแแก, แ แแช แกแแ แแแ แแ แฃแแแกแฃแฎแ แแแแฎแแแแแก, แจแแแแแ แแขแแแแ แแแแแฌแแแแ, แ แแ แกแขแแขแฃแกแ แแ แแก UP แแ แแฃ แแก แแกแ แแ แแ แแก, แแแจแแ แจแแชแแแแแ แแแแแแแแ แ. แแฃ แแฅแแแ แแญแแ แแแแแ แแแฅแแแแแแแก โแแแแแขแแแ แแแโ แแฅแแแแ แฎแแแแแแ, แแแจแแ แแแกแแกแแแแแ 1 - แจแแกแแคแแ แแกแ แแแ แแฆแ.
- 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 }}
แฉแแแ แแแแแแแแแ แขแแแแแ แแแแก แแฎแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ แแแฅแแแแแแ แแแ แแแฎแแ แฎแแ แฌแแแ แแขแแแแ. แจแแขแงแแแแแแแแก แแแกแแแแแแแแ แแแงแแแแแ appleboy/telegram-action-แก; แจแแแแซแแแแ แฌแแแแแแฎแแ, แแฃ แ แแแแ แฃแแแ แแแแฆแแ แแแขแแก แแแขแแแ แแ แฉแแขแแก ID แแแแฃแแแแขแแชแแแจแ:
แแ แแแแแแแฌแงแแแ Github-แแ แกแแแแฃแแแแแแแก แฉแแฌแแ แ: URL แกแแ แแแ แแกแแแแก แแ แขแแแแแแแ แขแแแแแ แแแแก แแแขแแกแแแแก.
แแแแฃแก แขแ แแแ - JIRA แแแ แแแชแแแแกแแแแก
แแแแแแ แแ, แ แแ JIRA-แจแ แแแแแ แฃแแแแแแ แแ แแแแแ แฃแแแแ. แแกแแแแ แฏแแ แแแแแฎแแแก แกแแขแฃแแชแแ แกแขแแแ-แแแแแแ, แ แแแแกแแช แแแแแแแแแ แแแแ แจแแฅแแแแก แคแฃแแฅแชแแ, แแแแแ แแแแแแก แคแแแแแแ, แแแแ แแ แแแแแแฌแงแแ แกแแแแแฎแแก JIRA-แจแ แแแแแขแแแ. แ แ แแฅแแ แฃแแแ, แแฃ แแก แงแแแแแคแแ แ แแ แ แแแแแแแ แแแแแแแ, แฃแคแ แ แแแแแแ แแฅแแแแแแ, แแแแ แแ แกแแแแแแแแแแจแ แฉแแแ แแฌแแ แ แแแแก IDE-แจแ, แแแแ แแแแ แคแแแแแแแแก bitbucket-แจแ แแ GitHub-แจแ แแ แจแแแแแ แฉแแแ แแแแ แแแแชแแแแแก Jira-แจแ, แแแแกแแแแแก แกแแญแแ แแ แแฎแแแ แคแแแฏแ แแแแก แแแฎแกแแ. , แแแแฏแแ แฎแแแแฎแแ แจแแแแ แกแแกแขแแแแจแ แแ แ.แจ. แ แแแแกแแช แแจแแแแแแ แแ แแแฎแกแแแ, แ แ แฃแแแ แแแแแแแแ แจแแแแแ, แแแจแแ แแแคแแก แฎแแแแฎแแ แแแฎแกแแแก แแแ แ แแ แแฅแแก. แจแแแแแแ, แแแแแ แกแแแแแแแ แแฅแแแ แฃแแแ แแแฎแแ แฏแแ แแ แ แแแแแแแแแก แแแคแแก แแแแแฎแแแแแแ.
GitHub แแกแแแ แแแแแแฎแแแ แแแ แแ แ แฃแขแแแฃแ แแแแชแแแแจแ; แแแแฌแงแแแแแแแแก, แฉแแแ แจแแแแแซแแแ แแแขแแแแขแฃแ แแ แแแแแแแขแแแแ แกแแแแแฎแแแ แแแแ_แแแแแฎแแแแแก แกแแแขแจแ, แ แแแแกแแช แแแแแแแแแแแแแ pull-แแก แแแแฎแแแแแก. แงแแแแแคแแ แ แ แแช แแฅแแแ แฃแแแ แแแแแแแแ แแ แแก แคแแแแแแแแแก แแแกแแฎแแแแแแก แแแแแแแชแแแก แแแชแแ:
[ะธะผั ะฟัะพะตะบัะฐ]-[ะฝะพะผะตั ัะฐัะบะฐ]-ะฝะฐะทะฒะฐะฝะธะต
แแแแแแแแแ, แแฃ แแ แแแฅแขแแก แแแกแแฆแแแ "GitHub Actions" แแ แแก GA, แแแจแแ GA-8-jira-bot
แจแแแซแแแแ แแงแแก แคแแแแแแ GA-8 แแแแแแแแแก แแแแกแแฎแแ แชแแแแแแแแ.
JIRA-แกแแแ แแแขแแแ แแชแแ Atlassian-แแก แแแฅแแแแแแแแแ แแฃแจแแแแก, แแกแแแ แแ แแ แแแ แกแ แฃแแงแแคแแแ, แฃแแแ แแแฅแแแก, แ แแ แแแแแแ แแ แแแแแแแ แกแแแ แแแ แแ แแแแแแแแแแ. แแแแ แแ แฉแแแ แแแแแแฎแแแแแ แแฎแแแแ แแแ, แแแแช แแแแแแแแแ แแฃแจแแแแก แแ แแฅแขแแฃแ แแ แแแแแแงแแแแแ.
แฏแแ แฃแแแ แจแแฎแแแแแ JIRA-แจแ แแแฅแแแแแแแ: 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 }}
แแแแกแแแแแก แแฅแแแ แฃแแแ แแแแฆแแ แแแขแแแ JIRA-แจแ, แ แแแแ แแแแแแแแ แแก แแฆแฌแแ แแแแ แแฅ:
แฉแแแ แแแแแแฆแแแ แแแแแแแแแก แแแแแขแแคแแแแขแแ แก แคแแแแแแแก แกแแฎแแแแแแ:
- 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}}
แแฃ แแซแแแ GitHub แแแแแ แแ, แจแแแแซแแแแ แแแแแแ แแแฅแแแแแแ แแ แแแแชแแแแกแแแแก, แแแแ แแ แแ แแแแแฌแแ แแแแแ แแแแแฌแแ แ grep-แแก แแแแแงแแแแแแ แคแแแแแแแก แกแแฎแแแแก แแแแแงแแแแแแ, แ แแแแแ Atlassian-แแก แแ แแแฅแแแแแแแก แแ แแแแแ แแ แแ แกแฃแ แแ แฉแแแก แแ แแแฅแขแแ แแฃแจแแแแ. , แแแแก แแแกแแ แแแแแแ, แแฃ แ แ แแงแ แแ แแกแฌแแ แ แแฅ - แฃแคแ แ แแแขแฎแแแก, แแแแ แ แแแแแแก แแแแแแ แฎแแแแแแ.
แ แฉแแแ แแฎแแแแ แแแแชแแแแก แแแแแขแแแ โแแแแแก แแแแแฎแแแแแกโ แกแแแขแจแ, แแแแฎแแแแแก แจแแฅแแแแกแแก:
- name: Transition issue
if: ${{ success() }}
uses: atlassian/gajira-transition@master
with:
issue: ${{ steps.find_issue.outputs.ISSUE_ID }}
transition: "Code review"
แแแแกแแแแแก แแ แแก แกแแแชแแแแฃแ แ แแแฅแแแแแแ GitHub-แแ, แ แแช แแแก แกแญแแ แแแแ แแ แแก แฌแแแ แแขแแแแ แแแฆแแแฃแแ แกแแแแแฎแแก ID แแ แแแขแแ แแแแชแแ JIRA-แจแ, แ แแแแแแช แฉแแแ แแแแแแแแแ แแแแแ.
แแแแแแแแฃแ แแ, แจแแแแซแแแแ แแแแแแขแแแแ แแแแชแแแแแ แแแกแขแแ แจแ แจแแ แฌแงแแแกแแก แแ แกแฎแแ แฆแแแแกแซแแแแแแ GitHub แกแแแฃแจแแ แแแแแแแแแ. แแแแแแแ, แแก แงแแแแแคแแ แ แแแแแแแแแแฃแแแ แแฅแแแแก แคแแแขแแแแแกแ แแ แ แฃแขแแแฃแแ แแ แแชแแกแแแแก แแแขแแแแขแแแแชแแแก แกแฃแ แแแแแ.
แแแกแแแแแแ
แแฃ แแแแแฎแแแแแ แแแแกแแแฃแ DEVOPS แแแแแ แแแแก, แฉแแแ แแแแคแแ แแ แงแแแแ แแขแแแ, แแแ แแ แจแแกแแซแแแ แคแฃแแฅแชแแแแแ แแแแกแ, แแคแแฅแ แแ, แแฃ แกแชแแแแ, แจแแแแซแแแแ แแแแแแ แ แแแแ แฅแแแแแแ แแแแแ แแ แแแฎแแแ แแแแก แกแแแกแแฎแฃแ แแแ แแแขแแแ แแชแแแกแแแแก, แแกแ แ แแ, แฉแแแ แแแแแ แแฃแแแแ, แ แแ แแแแกแแแแแ แจแแแแแ แฃแแแ. แฃแแแ แแงแแก แกแแคแฃแซแแแแแแ แแ แแแกแแแแแแแก แแแแแขแแแ แจแแกแแซแแแแแแแ แแแกแ แแแแแงแแแแแแก แกแแคแฃแซแแแแแ.
แแแแแแแแ:
- แแแแแ แ แแแ แแแฅแแแแแแแแแ แงแแแแ แจแแแแฎแแแแแกแแแแก, แแก แซแแแแแ แแแแแ แแ. แแแ แฃแแแขแแกแแแแจแ, แแฅแแแ แแกแแแ แจแแแแซแแแแ แแแแแฎแแแแ แฌแงแแ แแก แแแแก, แ แแแ แแแแแแ, แแฃ แ แแแแ แฃแแแ แแแแแแแ แแ แแกแแแแกแ แแ แแแแแแ แแ แแแแแแฅแแแงแแแ แคแฃแแฅแชแแแก แแแแฎแแแแ แแแขแแ แก แแแ แแแแแ GitHub แกแแชแแแจแ.
- แแกแแแแแแแกแแแแก แกแแแแแแ แแแแขแคแแ แแแก แจแแ แฉแแแ: Linux, mac os, windows แกแแแแแแ แกแแแแขแแ แแกแ แคแฃแแฅแชแแแ.
- Github Packages แจแแกแแแแจแแแแ แ แแ แแ แแก, แแแกแแฎแแ แฎแแแแแแ แแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแ แ แแแแแแแก แจแแแแฎแแ, แแฅแแแ แแ แแญแแ แแแแแ แกแแ แคแแแแ แกแฎแแแแแกแฎแแ แคแแแฏแ แแแจแ, แงแแแแแคแแ แ แแแฃแกแแก แแ แแ แแ แแ แ แแแฌแแแแฃแแแแแก แ แแแแฃแกแจแแ แแ แแแแแแฃแ แแ แแ แแก แแแขแแแ แแ แแแฃแแ GitHub Actions-แแแ. Docker แ แแแกแขแ แแก แแฎแแ แแแญแแ แ แฃแคแแกแ แแแ แกแแแจแ แแกแแแ แแแ แแ แฃแแแ แแขแแกแแแแ.
- GitHub แแแแแแก แกแแแแฃแแแแแแแแก Build แแฃแ แแแแแแจแ, แแแแขแแ แแแกแ แแแแแงแแแแแ แแแ แแแแแแกแ แแ แแแจแแแแแก แจแแกแแแแฎแแ แแ แช แแกแ แกแแจแแแแแแ. แงแแแแ แฉแแแ แแฅแกแแแ แแแแแขแแก แแ แแก, แแ แแแ แแกแแแแก แจแแแซแแแ แกแแแแฃแแแแก แกแฃแคแแ แกแแฎแแ แแแแแฎแแ แแแแกแแแจแ.
- แฃแคแแกแ แฆแแ แแแแแก แแ แแแฅแขแแแแกแแแแก
Cons:
- YML, แแแ แแ, แแ แแก แแ แแแแฌแแแก. แแกแแ แแแแแแแแ แแฃแจแแแแแกแแก แงแแแแแแ แแแแ แชแแแแแฃแแ commit แแแกแแฏแ, แ แแช แแแฅแแก แแ แแก โfix yml formatโ, แฎแแ แกแแแแ แแแแฌแงแแแแ แฉแแแแ แแแก แแแแแแ, แฎแแ แแ แแกแฌแแ แฎแแแแ แฌแแ . แแแแแแแ, แแแ แแแแก แฌแแ แฏแแแแ แแ แแขแ แแขแแ แแแ แแ แกแแฎแแแแแแแแ แแ แแ แแก แงแแแแแแ แกแแกแแแแแแแ แแแแแชแแแแแแ.
- แแแแแ แแแ, แแแแแแแก แแแแแ แแแ แจแแแแแฎแแแแแแแ, แแฆแแแแแแก แแแจแแแแ แแ แแแแกแแแจแ แแแแแขแแแ แงแแแแแแแแก แแ แแ แแก แแแกแแฎแแ แฎแแแแแ, แแแแ แแ แแก แฃแคแ แ แแแขแแ แแ แแก โแแฅแแแ แแแแแแญแแ แแแโ แแแขแแแแ แแแก; แแฅแแแ แแแฉแแแฃแแ แฎแแ แ แแแกแแฎแแ แฎแแแแแ IDEA-แกแแแ แแฃแจแแแแแก, แ แแแแกแแช แจแแแแซแแแแ แ แแแแแก แแแแแ แแแ. .
- แแฅแแแ แจแแแแซแแแแ แแแฌแแ แแ แแฅแแแแ แฅแแแแแแ แแแแแกแแแแ แแ, แแฃ แแแก Docker-แจแ แแแแแแขแแแ, แแแแ แแ แแฎแแแแ Javascript แแ แแก แแฎแแ แแแญแแ แแแ, แ แ แแฅแแ แฃแแแ, แแก แแแแแแแแแแก แกแแแแแฎแแ, แแแแ แแ แแ แกแฎแแ แ แแแแก แแแ แฉแแแแแ js-แแก แแแชแแแแ.
แจแแแแฎแกแแแแแ, แ แแ แกแแชแแแ แงแแแแ แกแแ แแแขแแ แแ แแก แแฅ:
แแแแแแแ แแแแ แแก แแแแแแแจแแ
แแแแแ แแจแ Heisenbug 2020 Piter แแแแคแแ แแแชแแแแ. แแ แแแขแงแแแ แแ แ แแฎแแแแ, แแฃ แ แแแแ แแแแชแแแแ แแแแแแแ แจแแชแแแแแแ แขแแกแขแแก แแแแแชแแแแแแก แแแแแแแแแแกแแก, แแ แแแแ แแแแแแแแ แแแ Java แแแแแแแชแแแแจแ แแแแแชแแแแ แแแแ แแแแแแแ แแฃแจแแแแแก แกแแแแฃแแแแแแแแก!
แฌแงแแ แ: www.habr.com