I have quite a long experience with GitHub workflows, but not up to the point where I can claim I'm an expert. Gayunpaman, ako ay lumikha ng isang bagong workflow, at ito ay nag-iisip sa akin upang mag-script ang post na ito. Ano ang mga workflow ng GitHub? Ang isang workflow ay isang configurable na automated na proseso na mag-execute ang isa o higit pang mga trabaho. Ang workflows ay defined sa pamamagitan ng isang YAML file na naka-check sa iyong repository at ay mag-execute kapag itinatag sa pamamagitan ng isang event sa iyong repository, o sila ay maaaring itinatag manually o sa isang defined schedule. Ang mga workflows ay defined sa directory .github/workflows sa isang repository. Ang isang repository ay maaaring magkaroon ng maraming workflows, ang bawat isa ay maaaring gawin ng isang iba't ibang set ng mga trabaho, tulad ng: Pagbuo at pagsusuri ng pull requests I-deploy ang iyong application sa bawat pagkakataon na lumikha ng isang release Magdagdag ng isang label sa lahat ng isang bagong issue ay buksan Tungkol sa workflows A ang Ang workflows ay defined sa pamamagitan ng isang YAML file na naka-check sa iyong repository at ay mag-execute kapag itinatag ng isang event sa iyong repository, o sila ay maaaring itinatag manually o sa isang defined schedule. workflow Ang mga workflow ay defined sa Ang isang repository ay maaaring magkaroon ng maraming workflows, kung saan ang bawat isa ay maaaring gawin ng isang iba't ibang pakikipagtulungan ng mga gawain, tulad ng: .github/workflows Pagbuo at pagsusuri ng pull requests I-deploy ang iyong application sa bawat pagkakataon na lumikha ng isang release Magdagdag ng isang label sa lahat ng isang bagong issue ay buksan Tungkol sa workflows Samakatuwid, ang isang workflow ay mababago sa isang Jenkins job, na inihayag sa YAML sa halip ng XML. Gayunpaman, ang pangunahing pagkakaiba ay na ang configuration ng workflow ay Ito ay hindi tulad ng maraming, ngunit ito ay nagbibigay-daan sa paggamit ng mga paraan ng pag-management ng source code, kabilang ang pag-versioning at pag-rolling back. taon na ang nakalipas, nagtatrabaho ako para sa isang customer na ang DevOps team ay nagtatrabaho ng isang Puppet-based approach upang i-reconstruct Jenkins mga trabaho upang ang Puppet config ay maaaring i-save sa Git. Ito ay isang malaking pagsubok! stored inside the code repository Tingnan na ang GitHub ay medyo late sa party. Bago ito inilapat ng workflows, ginagamit ko ang isang third-party na serbisyo na tinatawag na I switched sa pangunahing dahil ang Travis ay naka-pay at sa pangunahing dahil ang workflows ay native na bahagi ng GitHub. Ipasok sa ang tip: Ang mga ito ay tinatawag na Ang GitHub Actions ay ganap na iba. Use the correct semantics Mga workflow ng GitHub Mga aksyon sa GitHub Ang mga workflow ng GitHub ay binubuo ng Ang mga ito ay binubuo ng Ano ang Reference Steps mga komento, at ilang mga optional na mga parameter, kabilang ang isang pangalan. mga trabaho ang step ang run jobs: metrics: runs-on: my-image #1 steps: - name: Install dependencies via Poetry #2 run: poetry install #3 OCI imahe sa kung saan ang workflow ay gumagana Step ang pangalan Mga komento Ang GitHub Actions ay mga reusable components na nag-aalok ng mga alternatibo sa pag-repeating ng parehong komento nang higit pa. Ang isang aksyon ay isang pre-defined, reusable na set ng mga trabaho o code na gumagana ng anumang mga trabaho sa loob ng isang workflow, na nagbabago ang halaga ng repetitive code na inilagay mo sa iyong mga file ng workflow. Pagkuha ng iyong Git repository mula sa GitHub I-set up ang tunay na toolchain para sa iyong build environment I-set up ang authentication para sa iyong cloud provider Maaari mong i-writ ang iyong mga aksyon, o maaari mong mahanap ang mga aksyon upang gamitin sa iyong workflows sa GitHub Marketplace. Halimbawa, sa halip ng pag-execute git checkout, maaari mong gamitin ang mga aksyon na checkout. Ang GitHub Action ay Ang isang aksyon ay isang pre-defined, reusable na set ng mga trabaho o code na gumagana ng anumang mga trabaho sa loob ng isang workflow, na nagbabago ang halaga ng repetitive code na inilagay mo sa iyong mga file ng workflow. Pagkuha ng iyong Git repository mula sa GitHub I-set up ang tunay na toolchain para sa iyong build environment I-set up ang authentication para sa iyong cloud provider Maaari mong i-writ ang iyong mga aksyon, o maaari mong mahanap ang mga aksyon upang gamitin sa iyong workflows sa GitHub Marketplace. Halimbawa, sa halip ng pag-execute git checkout, maaari mong gamitin ang mga aksyon na checkout. Ang GitHub Action ay jobs: metrics: runs-on: my-image steps: - uses: actions/checkout@v5 #1 with: #2 fetch-depth: 0 submodules: recursive Tungkol sa GitHub Action Mga Parameter ng Aksiyon Ako ay isang malaking tagahanga ng hindi re-inventing ang wheel. GitHub Actions ay may malaking papel sa ito. ang tip: Kapag ang posible. Prefer GitHub Actions over ad-hoc commands Piliin ang Right Action Ang mga host ng GitHub Marketplace Ang mga aksyon ay itinatag sa pamamagitan ng mga kategorya. Maaari mong i-filter sa pamamagitan ng creator type at i-sort sa pamamagitan ng popularity. maraming mga aksyon Kapag bumalik na ako sa UP, i'll start building a new me. 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 ang tip: Be as careful in choosing a GitHub Action as in choosing any other dependency. Alam mo ang iyong mga aksyon Tulad ng unang tip, ito ay nagmula mula sa isang mas generic na ito — ako ay nagsasalita mula sa karanasan. I was developing a workflow to package a Java application. I was heavily using the workflow, at ang trabaho ay nangangailangan upang i-download ang dependencies sa bawat run. 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 I-install ang JDK Pag-set up ng isang cache. Ang cache ay generic at maaaring cache ang mga file sa pamamagitan ng mga run. I-cache ang local Maven repository Cache dependencies. Ang key ay gumagamit ng runner OS, na hindi gumagana, at ang POM's hash. Sa gayon, ang step ay lumikha ng isang bagong cache sa bawat pagkakataon na ang POM ay gumagana. Gayunpaman, sa paglipas ng dokumento, natagpuan ko na maaari kong makakuha ng parehong bagay sa isang mas simpleng paraan: Ang aksyon ay may isang built-in functionality para sa caching at pagbawi ng dependencies. Ito ay gumagamit ng toolkit/cache sa ilalim ng cap para sa caching dependencies ngunit nangangailangan ng mas mababang mga setting ng configuration. Ang mga managers ng pakete na ginagamit ay gradle, maven at sbt. Ang format ng ginagamit na key ng cache ay setup-java-${{ platform }}-${{ packageManager }}-${{ fileHash }}, kung saan ang hash ay batay sa mga sumusunod na mga file: ang napili ng mga taga-hanga: */pom.xml Caching mga pakete dependencies Ang aksyon ay may isang built-in functionality para sa caching at pagbawi ng dependencies. Ito ay gumagamit ng toolkit / cache sa ilalim ng cap para sa caching dependencies ngunit nangangailangan ng mas mababang mga setting ng configuration. Ang mga managers ng pakete na sumusuporta ay gradle, maven at sbt. Ang format ng ginagamit na cache key ay: , kung saan ang hash ay batay sa mga sumusunod na mga file: setup-java-${{ platform }}-${{ packageManager }}-${{ fileHash }} ang napili ng mga taga-hanga: */pom.xml - ang Caching mga pakete dependencies Substitute ko ang mga sumusunod na sumusunod sa mga sumusunod na sumusunod: 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 Ito ang ang tip: Paggamit ng isang oras sa dokumento ay maaaring makatulong sa iyo upang i-save ang mga araw ng pag-aaral. Thoroughly read the documentation of actions. Pin ang iyong dependency version Ang seksyon na ito ay binubuo ng mga generic advice at gumagamit ito sa bersyon ng GitHub workflows. Ipinapakita mo ang mga bersyon sa halos dalawang lugar: ang image ng OCI at ang bersyon ng GitHub Actions. Maaari mong makita ang sa mga sumusunod. sa panahon ng pag-script na ito, ito ay nagpapakita sa Kapag ang isang babae ay unang contemplating isang relasyon sa isang tiyak na tao, isa ng ang unang bagay na siya ay naghahanap para sa pagtawa at ng isang positibong saloobin. [Ang lahat ng mga imahe ay magagamit]. runs-on: ubuntu-latest ubuntu-24.04 https://github.com/actions/runner-images Ang pag-version ng Actions ay gumagana sa iba't ibang paraan, dahil ang mga ito ay nagpapakita sa pag-reference ng isang GitHub repo: o isang tag o isang commit SHA. Habang ang image ng OCI ay sa mga kamay ng GitHub, ang pag-action ay ang responsibilidad ng kanyang provider. Ito ay nangangahulugan na ang lahat ng may mga kompromiso ay maaaring i-modify ang nilalaman ng isang pangunahing tag. Pin ang isang commit. must jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903 #1 Pin sa isang espesyal na commit 💡 Tip: Tanggapin ang seguridad nang malaki at pin actions to a specific commit. Paggamit ng Job Summary Sa isang regular na workflow, ang kabuuang halaga ng mga line ng log ay maaaring maging malaking. Ang ilan sa mga ito ay maaaring magagamit, ang ilan sa mga ito ay maaaring hindi, ngunit dahil mayroon lamang ang isang standard output at standard error, ang lahat ay nagsisimula sa parehong lugar. Gayunpaman, maaari mong mag-focus sa anumang impormasyon, , ang bilang ng mga test run o ang porsyento ng code coverage, sa kaso na hindi mo i-send ang data na ito sa ibang lugar. GitHub ay gumagawa ng simpleng i-add ang data na gusto mo sa job summary. ang g. Maaari mong i-set ang ilang mga custom Markdown para sa bawat trabaho upang i-visit ito sa pahina ng summary ng isang workflow run. Maaari mong gamitin ang mga summary ng trabaho upang i-visit at i-group ang mga pangunahing nilalaman, tulad ng mga summary ng mga resulta ng pagsubok, upang ang isang tao na ipakita ang resulta ng isang workflow run ay hindi kailangang pumunta sa mga log para makita ang mahalaga na impormasyon na may kaugnayan sa run, tulad ng mga disappointments. Ang mga summaries ng trabaho ay sumusuporta sa GitHub flavored Markdown, at maaari mong magdagdag ng iyong pangkalahatan ng Markdown para sa isang step sa GITHUB_STEP_SUMMARY environment file. GITHUB_STEP_SUMMARY ay unikahan para sa bawat step sa isang trabaho. I-update ang isang job summary Maaari mong i-set ang ilang mga custom Markdown para sa bawat trabaho upang i-visit ito sa pahina ng summary ng isang workflow run. Maaari mong gamitin ang mga summary ng trabaho upang i-visit at i-group ang mga pangunahing nilalaman, tulad ng mga summary ng mga resulta ng pagsubok, upang ang isang tao na ipakita ang resulta ng isang workflow run ay hindi kailangang pumunta sa mga log para makita ang mahalaga na impormasyon na may kaugnayan sa run, tulad ng mga disappointments. Ang mga summaries ng trabaho ay sumusuporta sa GitHub flavored Markdown, at maaari mong magdagdag ng iyong Markdown content para sa isang step sa ang environment file. Ito ay isang katangian para sa bawat step sa isang trabaho. GITHUB_STEP_SUMMARY GITHUB_STEP_SUMMARY I-update ang isang job summary Eto ang a Tungkol sa Apache Arrow: ang sample - 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 ang ay ang: ang resulta ang tip: Magbigay ng experience sa developer. Use GitHub job summary Paglalarawan ng ang life cycle ng workflow Ang mga workflow ay gumagana ng mga step sequentially. Ang isang failure na step ay umalis ng lahat ng mga steps, at ang workflow ay nagsisimula sa isang Sa halimbawa sa itaas, ito ay nangangahulugan na hindi namin makakuha ng anumang pagsusuri summary sa lahat kung ang anumang mga sumusunod na step ay hindi makakuha ng. ang condition. Failure if Maaari mong gamitin ang mga sumusunod na status check function bilang mga ekspresyon sa if conditionals. Ang isang default status check of success() ay gumagamit kung hindi mo gumagamit ng isa sa mga function na ito. Mga Status Check Function Maaari mong gamitin ang mga sumusunod na status check function bilang mga ekspresyon sa if conditionals. Ang isang default status check of success() ay gumagamit kung hindi mo gumagamit ng isa sa mga function na ito. Mga Status Check Function GitHub ay gumagamit sa pamamagitan ng default, ngunit ang mga opsyon ay naglalaman na ang at ang . 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 Always run ang step, kahit na ang mga previous steps ay na-successful o hindi Imagine ang mga sumusunod na sequence: - 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 Ang mga test ng unit ay gumagawa ng JUnit reports. Gamit ang generated JUnit reports upang i-writing ang isang step summary Kung ang unang step ay hindi gumagana, ang summary ay gumagana kahit na ang mga test ay gumagana o hindi. Kung hindi, ito ay hindi gumagana. Upang pag-iwanag ito, kailangan nating i-refined ang kondisyon na higit pa upang ang summary step ay gumagana lamang kung ang unit test step ay gumagana. - 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 I-set ang step's id I-run lamang kung ang test step ay lumabas na Ito ay lamang isang simpleng halimbawa, ngunit nag-aalok ito ng mga interesado na mga pagpipilian. ang tip: Gawin ito sa iyong advantage. Know workflows' lifecycle Lokasyon ng Test Maraming mga organisasyon ang gumagamit ng mga karaniwang mga regulasyon ng GitHub. Ang pinakamalaking ito ay na hindi mo maaaring i-push sa : Ang bawat commit ay dapat pumunta sa pamamagitan ng isang pull request. Habang ito ay makakalimutan para sa mga itinatag na mga proyekto, ito ay hindi nagsisimula ng mga proyekto mula sa mabilis na iterate habang nagbibigay ang komit na kasaysayan. Sa konteksto ng pag-unlad ng GitHub workflows, ito ay katumbas na crippling. master Nagsimula ang Proyekto ng Act: “Tingnan ang global, ginagawa ang local” I-run ang iyong GitHub Actions locally! Bakit gusto mong gawin ito? Dalawang mga dahilan: - 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 Introduction sa Act “Tingnan ang global, ginagawa ang local” I-run ang iyong GitHub Actions locally! Bakit gusto mong gawin ito? Dalawang mga dahilan: Fast Feedback - Sa halip na kailangan mong mag-commit / push sa bawat beses na nais mong i-test ang mga pagbabago na ikaw ay gumawa ng sa iyong .github / workflows / mga file (o para sa anumang mga pagbabago sa embedded GitHub action), maaari mong gamitin ang action upang i-execute ang mga action locally. Local Task Runner - I love making. However, I also hate repeating myself. With act, maaari mong gamitin ang GitHub Actions defined sa iyong .github/workflows/ upang baguhin ang iyong Makefile! Introduction sa Act may isang GitHub CLI integration na nag-activate ang workflow ayon sa parehong event. Mag-simulate ang isang push: act gh act push Narito ang output kapag ang mga imahe at mga aksyon ay na-download: 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 Mayroon akong ilang mga post sa Tapos, merong mga commercial na over na. act ang tip: Pagbabago ang iyong feedback cycle. Test your workflows locally ang summary Gamitin ang mga correct semantics, paghahatid sa pagitan ng workflows at mga aksyon. Pumili ng GitHub Actions sa mga ad-hoc command. Gayunpaman, ikaw ay magkakahalaga sa pagpipilian ng isang GitHub Action tulad ng sa pagpipilian ng anumang iba pang dependency. Tingnan ang dokumentasyon ng bawat action na ginagamit mo. Pin mga aksyon sa anumang commit. Gamitin ang GitHub job summary upang mapabuti ang developer experience. Alam mo ang life cycle ng workflows. I-test ang iyong workflows sa lokal. To go further: Tungkol sa Workflows GitHub ng Aksiyon GitHub Mga Marketplace Mga Imahe ng Runner Magdagdag ng isang job summary Status check ng mga function Introduction sa Act