Seiji Villafranca
github.com/SeijiV13
seijivillafranca.com
github.com/SeijiV13
Senior Developer, Wypoon Technologies Netherlands
Microsoft MVP
Auth0 Ambassador
Community Lead, AngularPH,
Author
seijivillafranca.com
Github Actions
Github Actions
continuous integration and continuous delivery (CI/CD) platform
Automates
Build
Test
Deployment
Github Actions
Provides Linux, Windows, and macOS virtual machines to run workflows
Flow overview
Github Actions
Code changes
Pull request
(feature branch)
Master
Test
Build
Deploy
Test
Build
Deploy
Github Actions
Components
Workflows
Events
Jobs
Actions
Runners
Workflows
Run one or more jobs.
Defined by a YAML file
Defined in
.github/workflowsworkflow 1
workflow 2
Multiple workflows
workflow 3
build and test pull requests
deploy application
adds label when issue is created
Workflows
Example Workflow
name: Build, Test and Deploy
run-name: Deploy to ${{ inputs.deploy_target }} by @${{ github.actor }}
on:
push:
branches:
- main
- 'releases/**'Events
specific activity in a repository that triggers a workflow run
push
pull request
issues
fork
Jobs
set of steps in a workflow
Shell script that will be executed, or an action that will be run
configure a job's dependencies with other jobs
Build job
Test Job (needs the build file from build job
Jobs
Example Jobs syntax
jobs:
job1:
job2:
needs: job1
job3:
needs: [job1, job2]Actions
Custom application for the GitHub Actions platform that performs a repeated task
Custom or Github Marketplace
Actions
The metadata filename must be either action.yml or action.yaml or
| Type | Operating system |
|---|---|
| Docker container | Linux |
| JavaScript | Linux, macOS, Windows |
| Composite Actions | Linux, macOS, Windows |
Actions
Marketplace
Github Actions Alerts
Deploy Github pages site
Github Actions Linting
Actions
Example Action
name: 'Hello World'
description: 'Greet someone and record the time'
inputs:
who-to-greet: # id of input
description: 'Who to greet'
required: true
default: 'World'
outputs:
time: # id of output
description: 'The time we greeted you'
runs:
using: 'node16'
main: 'index.js'Runners
Runs your workflows when they're triggered.
GitHub provides Ubuntu Linux, Microsoft Windows, and macOS runners
Runners varies based on specific requirements (hardware configuration and operating system)
on: [push]
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: A job to say hello
steps:
- name: Hello world action step
id: hello
uses: octocat/hello-world-javascript-action@v1.1
with:
who-to-greet: 'Mona the Octocat'
# Use the output from the `hello` step
- name: Get the output time
run: echo "The time was ${{ steps.hello.outputs.time }}"A Quick Demo!
Github Actions
github.com/SeijiV13
seijivillafranca.com
fb.com/seiji.villafranca
Thank you
and happy coding!
Runners
Larger Runners