У мяне ёсць даволі доўгі вопыт з GitHub рабочых працэсаў, але не да таго пункта, дзе я магу заяўляць, што я эксперт. Што такое GitHub Workflows? Сярод версій гульняў онлайн call of duty можна знайсці мноства займальных і дасціпных сюжэтаў, а апошняй навінкай, выпушчанай у канцы восені гэтага года, стала гульня Call of Duty: Ghost. У групе 2 былі сабраны менавіта тыя добраахвотнікі, якія запаміналі змест свайго сну слабей — 2 разы ў месяц і радзей. Заявы і абмоўкі пра абмежаванне адказнасці Загрузіць сваю прыкладанне кожны раз, калі вырабляецца выпуск Увесь час, калі адкрываецца новае выданне — Пра рабочыя потокі Сярод версій гульняў онлайн call of duty можна знайсці мноства займальных і дасціпных сюжэтаў, а апошняй навінкай, выпушчанай у канцы восені гэтага года, стала гульня Call of Duty: Ghost. У групе 2 былі сабраны менавіта тыя добраахвотнікі, якія запаміналі змест свайго сну слабей — 2 разы ў месяц і радзей. Заявы і абмоўкі пра абмежаванне адказнасці Загрузіць сваю прыкладанне кожны раз, калі вырабляецца выпуск Увесь час, калі адкрываецца новае выданне — Пра рабочыя потокі Як адзначылі члены журы, усе работы ўяўляюць сабой мастацкі і архітэктурны цікавасць. Гэта не выглядае, як шмат, але гэта дазваляе выкарыстоўваць сродкі кіравання крынічным кодам, уключаючы версіяванне і роўлінг назад. Годы назад, я працаваў для кліента, каманда DevOps якая ўжыла падыход на аснове Puppet для рэканструкцыі Jenkins работ, так што Puppet config можа быць захоўваецца ў Git. stored inside the code repository Памятаю першую размову з тутэйшымі людзьмі, якія глядзелі на мяне бы на нешта незвычайнае. Я перайшоў у асноўным, таму што Трэвіс стаў платным, і падрабязна, таму што працоўныя працэсы з'яўляюцца натуральнай часткай GitHub. Трэвіс І Такім чынам: Іх называюць GitHub акцыі з'яўляюцца зусім іншымі. Use the correct semantics GitHub працэдуры GitHub акцыі GitHub Workflows складаюцца з якія самі складаюцца з Наступныя крокі У гэтым выпадку пешаходы, якія сканчаюць пераход, уяўляюць істотную небяспеку (мал. Работнікі крокі Бягучы jobs: metrics: runs-on: my-image #1 steps: - name: Install dependencies via Poetry #2 run: poetry install #3 OCI выява, на якой працуе працоўны працэс Назва крок Командныя крокі Акты GitHub - гэта паўторна выкарыстоўваныя кампаненты, якія прапануюць альтэрнатывы для паўтарання той жа каманды зноў і зноў. Гэта таму, што кожная мера для старонкі дае толькі вельмі грубіянскую ацэнку гэтай старонкі значэнне, таму памылкі занадта вялікая. Pulling your Git repository from GitHub Setting up the correct toolchain for your build environment Стварэнне аўтэнтыфікацыі для вашага хмарнага пастаўшчыка Вы можаце напісаць свае дзеянні, або вы можаце знайсці дзеянні, якія вы можаце выкарыстоўваць у вашых працэсах у GitHub Marketplace. Напрыклад, замест выканання git checkout, вы можаце выкарыстоўваць акцыю checkout. — GitHub Action Гэта таму, што кожная мера для старонкі дае толькі вельмі грубіянскую ацэнку гэтай старонкі значэнне, таму памылкі занадта вялікая. Сцягнуць свой Git рэпазіторый з GitHub Стварэнне правільных інструментаў для вашага будучага асяроддзя Стварэнне аўтэнтыфікацыі для вашага хмарнага пастаўшчыка Укладайце больш ва ўласную журналістыку, СМІ і змагайцеся за свабоду слова. Напрыклад, за выключэннем Вы можаце выкарыстоўваць . GitHub рынак git checkout Чэкістыя акцыі — — GitHub акцыя jobs: metrics: runs-on: my-image steps: - uses: actions/checkout@v5 #1 with: #2 fetch-depth: 0 submodules: recursive Загрузіць GitHub Action Параметры акцыі Я вялікі фан не зноў вынайсці колеса. GitHub акцыі гуляюць вялікую ролю ў тым. Такім чынам: Калі можна Prefer GitHub Actions over ad-hoc commands Выбраць правільную акцыю Загрузіць GitHub Marketplace Вы можаце фільтраваць па тыпу творца і разлічваць па папулярнасці. Многія акцыі Калі вы хочаце прымусіць свой мозг працаваць, прыходзьце ў Клуб інтэлектуальных гульняў УЗВ! Vendor: prefer verified creators License type: Open Source vs. closed source. With the former, check the exact terms; the Apache v2 license is very different from the GPL one. Pricing for commercial actions Check the source code repository of actions that display it and check the following information: ** Inception date ** Activity, including the repartition of commits per committer, the number of open issues, the mean time for fixing issues, etc. ** Documentation (reference material, tutorials, how-to guides, and explanations) Community, if any Support Такім чынам: Be as careful in choosing a GitHub Action as in choosing any other dependency. Знайце свае дзеянні Як і ранейшы савет, гэта выходзіць з больш агульнага — я гаворыцца з вопыту. я распрацоўваў працоўны працэс для ўпакоўкі прыкладання Java. я быў вельмі выкарыстоўваючы працоўны працэс, і працу трэба было загрузіць залежності на кожным запуску. jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: actions/setup-java@v4 #1 with: distribution: temurin java-version: 21 - uses: actions/cache@v4 #2 with: path: ~/.m2/repository #3 key: ${{ platform }}-maven--${{ hashFiles('**/pom.xml') }} #4 restore-keys: | ${{ runner.os }}-maven- #4 Загрузіць JDK Стварыць кэш. Кэш з'яўляецца генеральным і можа кэш файлы на працягу працяг. Загрузіць Maven Repository Ключ выкарыстоўвае працоўную сістэму, якая не змяняецца, і хаш POM. Таму крок стварае новы кеш кожны раз, калі POM змяняецца. Але, прачытаючы дакументацыю, я зразумеў, што я мог дасягнуць таго ж самага ў значна прасцей: Гэтая акцыя мае ўбудаваную функцыянальнасць для кэшавання і аднаўлення залежностей. Ён выкарыстоўвае інструментальны набор / кэш пад хадам для кэшавання залежностей, але патрабуе менш параметраў канфігурацыі. Падтрымліваюцца менеджеры пакетаў — gradle, maven і sbt. Формат выкарыстанага ключа кэша — setup-java-${{ платформу }}-${{ packageManager }}-${{ fileHash }}, дзе хеш заснаваны на наступных файлах: Вынікі пошуку - maven.xml • Залежныя пакеты Гэтая акцыя мае ўбудаваную функцыянальнасць для кэшавання і аднаўлення залежностей. Ён выкарыстоўвае інструментальны набор / кэш пад хадам для кэшавання залежностей, але патрабуе менш параметраў канфігурацыі. Падтрымліваюцца менеджеры пакетаў — gradle, maven і sbt. Формат выкарыстанага ключа кэша — setup-java-${{ платформу }}-${{ packageManager }}-${{ fileHash }}, дзе хеш заснаваны на наступных файлах: Вынікі пошуку - maven.xml • Залежныя пакеты Я замяніў вышэйшы прыклад наступным: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: actions/setup-java@v4 with: distribution: temurin java-version: 21 cache: maven #1 Гэта гэта Такім чынам: Праведзеная праверка паказала, што ўстанова не працуе ўжо некалькі месяцаў. Thoroughly read the documentation of actions. Піць вашу версію залежності Вы можаце знайсці версіі ў мінімум двух месцах: малюнак OCI і версію GitHub Actions. Можа, вы заўважылі, што У гэтым выпадку пешаходы, якія сканчаюць пераход, уяўляюць істотную небяспеку (мал. Калі рабочы пакідаў наймальніка без уважлівых прычын да заканчэння тэрміну найму - гэта прызнавалася самавольным адыходам. [Уся наяўнасць здымкаў] runs-on: ubuntu-latest ubuntu-24.04 https://github.com/actions/runner-images Гэты курс дае вам усё, што вам трэба ведаць пра Microsoft Access, і вы ўсё ведаеце, што трэба ведаць пра Microsoft Access. Пін да ўдзелу. must jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903 #1 Пін на конкретную задачу Уваход у прафесію быў простым: у 1996 годзе не было нават таксометраў. pin actions to a specific commit. Выкарыстанне рэзюме работы Іх унікальная здольнасць да эхолокации літаральна ў тысячы разоў больш эфектыўна, чым у любой падобнай сістэмы, створанай людзьмі. , колькасць выпрабаванняў або працэнт пакрыцця кода, у выпадку, калі вы не адпраўляеце гэтыя дадзеныя дзе-небудзь інш. GitHub робіць гэта простым, каб дадаць дадзеныя, якія вы хочаце ў сумы працы. А. І. У якасці прыкладу такіх сетак можна прывесці facebook і vkontakte, дзе любая фізічная асоба можа падаць рэкламную аб'яву. Асновы працы падтрымліваюць GitHub смазаны Markdown, і вы можаце дадаць свой кантэнт Markdown на крок у файле асяроддзя GITHUB_STEP_SUMMARY. Додавайце рэзюме работы У якасці прыкладу такіх сетак можна прывесці facebook і vkontakte, дзе любая фізічная асоба можа падаць рэкламную аб'яву. Асновы працы падтрымліваюць GitHub смазаны Markdown, і вы можаце дадаць свой кантэнт Markdown на крок у файле асяроддзя GITHUB_STEP_SUMMARY. Додавайце рэзюме работы Вось і а Загрузіць Apache Arrow: Шаблон - name: Show inputs run: | echo "upload_artifacts: ${{ inputs.upload_artifacts }}" >> $GITHUB_STEP_SUMMARY echo "schedule: ${{ github.event.schedule }}" >> $GITHUB_STEP_SUMMARY echo "ref: ${{ github.ref }}" >> $GITHUB_STEP_SUMMARY І І ёсць: Вынікі Такім чынам: Запрашаем на развіццё досведу. Use GitHub job summary Разумее жыццё рабочых працэдур Усё, што вы чулі пра карысць пара раней - усяго толькі чуткі і павер'і. І калі твая першая кніга добра прадавалася, не факт, што так жа будзе прадавацца другая. Умовы Failure if У нашай багатай беларускай літаратуры няма другога такога твора, які па энцыклапедычнасці выяўлення ў ім нацыянальнага, так набліжаўся б да "Новай зямлі". — Функцыі праверкі статусу У нашай багатай беларускай літаратуры няма другога такога твора, які па энцыклапедычнасці выяўлення ў ім нацыянальнага, так набліжаўся б да "Новай зямлі". — — Функцыі праверкі статусу GitHub выкарыстоўвае Здаровая касметыка вы можаце зрабіць самі І І . success() always() cancelled() failure() - name: Show inputs if: ${{ always() }} #1 run: | echo "upload_artifacts: ${{ inputs.upload_artifacts }}" >> $GITHUB_STEP_SUMMARY echo "schedule: ${{ github.event.schedule }}" >> $GITHUB_STEP_SUMMARY echo "ref: ${{ github.ref }}" >> $GITHUB_STEP_SUMMARY Засяроджанымі на тых пытаннях, якія недастаткова асветлены і/або з'яўляюцца адпрэчанымі. Цяпер уявіце наступную секцыю: - name: Step that may fail run: whatever - name: Execute unit tests run: ./mvnw -B test #1 - name: Test Summary if: ${{ always() }} uses: test-summary/action@31493c7 #2 Загрузіць групу можна і ў JUnit. Выкарыстоўвайце генераваныя выданні JUnit, каб напісаць сумы крокаў І калі твая першая кніга добра прадавалася, не факт, што так жа будзе прадавацца другая. - name: Step that may fail run: whatever - name: Execute unit tests id: test #1 run: ./mvnw -B test - name: Test Summary if: ${{ always() && steps.test.conclusion == 'success'}} #2 uses: test-summary/action@31493c7 Сцягнуць ID кроку Працягвайце толькі тады, калі выпрабаванне будзе паспяховым. Гэта толькі просты прыклад, але ён прапануе цікавыя варыянты. Такім чынам: І выкарыстоўвайце гэта ў свой кошт. Know workflows' lifecycle Выпрабаванне на месцы Многія арганізацыі выконваюць строгія правілы GitHub. Найбольш распаўсюджаная з'яўляецца тое, што вы не можаце паспрабаваць Не палічыце сарказмам, але тое, што адбываецца цяпер, вельмі нагадвае прымітыўную спробу даказаць: у «рускім свеце» усё самае лепшае. master Запрашаем на акцёрскі проект: «Думай глобальна, дзейнічай локальна» Усё, што вам трэба зрабіць, гэта проста адзначце файлы, і вы ўсё бяспечна. - Rather than having to commit/push every time you want to test out the changes you are making to your files (or for any changes to embedded GitHub actions), you can use act to run the actions locally. The environment variables and filesystem are all configured to match what GitHub provides. Fast Feedback .github/workflows/ - I love make. However, I also hate repeating myself. With , you can use the GitHub Actions defined in your to replace your ! Local Task Runner act .github/workflows/ Makefile • Удзел у акцыі «Думай глобальна, дзейнічай локальна» Усё, што вам трэба зрабіць, гэта проста адзначце файлы, і вы ўсё бяспечна. Фактычна, прысвечаныя такому спорту як бокс, онлайн гульні заўсёды прызнаваліся нашмат больш цікавымі чым звычайныя аднакарыстальніцкія цацкі. Локальны бегач заданняў - я люблю зрабіць. Але я таксама ненавідзяю паўтараць сябе. З актам, вы можаце выкарыстоўваць дзеянні GitHub, вызначаныя ў вашым .github/workflows/ каб замяніць свой Makefile! — — Уваход у act Мае назіранні прывялі да высновы, што нагрузка на доктара не можа быць такой, якая яна ёсць цяпер. act gh act push Вось выхад, калі малюнкі і акцыі ўжо былі загружаны: INFO[0000] Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock' [workflow.yml/test] ⭐ Run Set up job [workflow.yml/test] 🚀 Start image=catthehacker/ubuntu:act-22.04 [workflow.yml/test] 🐳 docker pull image=catthehacker/ubuntu:act-22.04 platform= username= forcePull=true [workflow.yml/test] 🐳 docker create image=catthehacker/ubuntu:act-22.04 platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host" [workflow.yml/test] 🐳 docker run image=catthehacker/ubuntu:act-22.04 platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host" [workflow.yml/test] 🐳 docker exec cmd=[node --no-warnings -e console.log(process.execPath)] user= workdir= [workflow.yml/test] ✅ Success - Set up job [workflow.yml/test] ☁ git clone 'https://github.com/actions/setup-java' # ref=v4 [workflow.yml/test] ⭐ Run Main actions/checkout@v4 [workflow.yml/test] 🐳 docker cp src=/Users/nico/projects/act-sample/. dst=/Users/nico/projects/act-sample [workflow.yml/test] ✅ Success - Main actions/checkout@v4 [9.211777902s] [workflow.yml/test] ⭐ Run Main Setup JDK [workflow.yml/test] 🐳 docker cp src=/home/nico/.cache/act/actions-setup-java@v4/ dst=/var/run/act/actions/actions-setup-java@v4/ [workflow.yml/test] 🐳 docker exec cmd=[/opt/acttoolcache/node/18.20.8/x64/bin/node /var/run/act/actions/actions-setup-java@v4/dist/setup/index.js] user= workdir= [workflow.yml/test] ❓ ::group::Installed distributions | Resolved Java 21.0.8+9.0.LTS from tool-cache | Setting Java 21.0.8+9.0.LTS as the default | Creating toolchains.xml for JDK version 21 from temurin | Writing to /root/.m2/toolchains.xml | | Java configuration: | Distribution: temurin | Version: 21.0.8+9.0.LTS | Path: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.8-9.0.LTS/x64 | [workflow.yml/test] ❓ ::endgroup:: [workflow.yml/test] ❓ add-matcher /run/act/actions/actions-setup-java@v4/.github/java.json | Creating settings.xml with server-id: github | Writing to /root/.m2/settings.xml [workflow.yml/test] ⚙ *** | Cache Size: ~50 MB (52710428 B) | [command]/usr/bin/tar -xf /tmp/c8ef4803-85c1-4867-ac2d-442dbce79755/cache.tzst -P -C /Users/nico/projects/act-sample --use-compress-program unzstd | Cache restored successfully | Cache restored from key: setup-java-linux-x64-maven-ef0e54e9035c18b60db7ea0af5e2f0c4cc5445dd6a2a2a672b91e14f14e7e4c2 [workflow.yml/test] ✅ Success - Main Setup JDK [2.514565962s] [workflow.yml/test] ⚙ ::set-env:: JAVA_HOME=/opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.8-9.0.LTS/x64 [workflow.yml/test] ⚙ ::set-env:: JAVA_HOME_21_X64=/opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.8-9.0.LTS/x64 [workflow.yml/test] ⚙ ::set-output:: distribution=Temurin-Hotspot [workflow.yml/test] ⚙ ::set-output:: path=/opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.8-9.0.LTS/x64 [workflow.yml/test] ⚙ ::set-output:: version=21.0.8+9.0.LTS [workflow.yml/test] ⚙ ::set-output:: cache-hit=false [workflow.yml/test] ⚙ ::add-path:: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.8-9.0.LTS/x64/bin [workflow.yml/test] ⭐ Run Main Run "fast" tests [workflow.yml/test] 🐳 docker exec cmd=[bash -e /var/run/act/workflow/2] user= workdir= | [INFO] Scanning for projects... | [INFO] | [INFO] ----< ch.frankel.blog:act-sample >----- | [INFO] Building act-sample 1.0-SNAPSHOT | [INFO] from pom.xml | [INFO] ------------------------[ jar ]------------------------- | [INFO] | [INFO] --- resources:3.3.1:resources (default-resources) @ act-sample --- | [INFO] Copying 1 resource from src/main/resources to target/classes | [INFO] | [INFO] --- compiler:3.14.0:compile (default-compile) @ act-sample --- | [INFO] Recompiling the module because of changed source code. | [INFO] Compiling 5 source files with javac [debug target 21] to target/classes | [INFO] | [INFO] --- resources:3.3.1:testResources (default-testResources) @ act-sample --- | [INFO] Copying 2 resources from src/test/resources to target/test-classes | [INFO] | [INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ act-sample --- | [INFO] Recompiling the module because of changed dependency. | [INFO] Compiling 1 source file with javac [debug target 21] to target/test-classes | [INFO] | [INFO] --- surefire:3.2.5:test (default-test) @ act-sample --- | [INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider | [INFO] | [INFO] ------------------------------------------ | [INFO] T E S T S | [INFO] ------------------------------------------ | [INFO] Running ch.frankel.blog.ActSampleTest | [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.120 s -- in ch.frankel.blog.ActSampleTest | [INFO] | [INFO] Results: | [INFO] | [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 | [INFO] | [INFO] ------------------------------------------------------ | [INFO] BUILD SUCCESS | [INFO] ------------------------------------------------------ | [INFO] Total time: 3.318 s | [INFO] Finished at: 2025-08-22T10:26:29Z | [INFO] ------------------------------------------------------ [workflow.yml/test] ✅ Success - Main Run "fast" tests [20.920776212s] [workflow.yml/test] ⭐ Run Post Setup JDK [workflow.yml/test] 🐳 docker exec cmd=[/opt/acttoolcache/node/18.20.8/x64/bin/node /var/run/act/actions/actions-setup-java@v4/dist/cleanup/index.js] user= workdir= | [command]/usr/bin/tar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/nico/projects/act-sample --files-from manifest.txt --use-compress-program zstdmt | Cache Size: ~50 MB (52701753 B) | Cache saved successfully | Cache saved with the key: setup-java-Linux-x64-maven-ef0e54e9035c18b60db7ea0af5e2f0c4cc5445dd6a2a2a672b91e14f14e7e4c2 [workflow.yml/test] ✅ Success - Post Setup JDK [1.01412383s] [workflow.yml/test] ⭐ Run Complete job [workflow.yml/test] Cleaning up container for job test [workflow.yml/test] ✅ Success - Complete job [workflow.yml/test] 🏁 Job succeeded Можна напісаць пару статей на — Я вас пакіну, каб прачытаць дакументы. act Такім чынам: Для таго, каб павялічыць свой Feedback Cycle час. Test your workflows locally Сумленнасць Эканоміка стала набываць выразна затратны характар і патра-бавала кардынальных рэформ. Падрабязней: GitHub Actions над Ad-hoc Commands. Будзь такім жа уважлівым, калі выбіраеш GitHub Action, як і калі выбіраеш любую другую залежнасць. Дакладна прачытайце дакументацыю кожнай акцыі, якую вы выкарыстоўваеце. Пін акцыі на конкретную справу. Выкарыстоўвайце GitHub рабочы агляд, каб палепшыць вопыт распрацоўшчыка. Пазнаёміцеся з рабочымі кругамі. Выпрабаваць свой працоўны працэс на месцы. To go further: Пра рабочыя потокі GitHub акцыя GitHub Marketplace для пакупнікоў Фота Runner Загрузіць резюме работы Функцыі праверкі статусу Удзел у акцыі