Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to GitHub Actions

Introduction to GitHub Actions

* What is different GitHub Flow and Git Flow?
* What is GitHub Actions?
* How to write the simple workflow?
* What's problem in GitHub Actions UI?
* What's problem with Secrets in GitHub Actions?
* How to write your first GitHub Actions and upload to the marketplace?
* What's a problem with environment variables in GitHub Actions?

Buy me a coffee: https://www.buymeacoffee.com/appleboy
Blog: https://blog.wu-boy.com
Twitter: https://twitter.com/appleboy
Facebook: https://www.facebook.com/appleboy46
Slideshare: https://www.slideshare.net/appleboy
GitHub: https://github.com/appleboy

Bo-Yi Wu

May 15, 2019
Tweet

More Decks by Bo-Yi Wu

Other Decks in Technology

Transcript

  1. About me • Software Engineer in Mediatek • Member of

    Drone CI/CD Platform • Member of Gitea Platform • Member of Gin Golang Framework • Teacher of Udemy Platform: Golang + Drone https://blog.wu-boy.com
  2. (JU)VC'MPX 14 Develop Git Push Git Tag Develop Git Push

    Git Tag Testing Deploy Deploy Deploy Production Staging Production Testing Deploy Staging
  3. Current runtime resource • 1 virtual CPU • Up to

    3.75GB of memory • 100GB of disk space
  4. workflow "Remote ssh commands" { on = "push" resolves =

    [ "Remote ssh commands", ] } main.workflow
  5. action "Remote ssh commands" { uses = "appleboy/ssh-action@master" secrets =

    [ "HOST", "PASSWORD", ] args = [ "--user", "actions", "--script", "whoami", ] } main.workflow
  6. Scheduling a workflow ┌───────────── minute (0 - 59) │ ┌─────────────

    hour (0 - 23) │ │ ┌───────────── day of the month (1 - 31) │ │ │ ┌───────────── month (1 - 12 or JAN-DEC) │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * * * * * workflow "New workflow" { on = "schedule(*/15 * * * *)" resolves = ["Hello World"] }
  7. $ git reset —soft HEAD^ $ git commit -a -m

    ‘foo’ $ git push origin master -f 3FTUBSUUIFKPC
  8. action "Remote ssh commands" { uses = "appleboy/ssh-action@master" secrets =

    [ "HOST", "PASSWORD", ] args = [ "--user", "actions", "--script", "whoami", ] } main.workflow
  9. You need to write CLI flag in command drone-ssh -u

    foo -p foopass -s whoami drone-ssh -u bar -p barpass -s whoami
  10. main.workflow secrets = [ "PASSWORD", ] args = [ "--user",

    "actions", "--script", "whoami", ] secrets = [ "PASSWORD", ] args = [ "--user", "actions", "--script", "whoami", ] 4FSWFS 4FSWFS EPDLFSSVOF1"44803%YYYBQQMFCPZESPOFTTI VBDUJPOTTXIPBNJ
  11. main.workflow secrets = [ "PASSWORD01", ] args = [ "-p",

    "$PASSWORD01", "--script", "whoami", ] secrets = [ "PASSWORD02", ] args = [ "-p", "$PASSWORD02", "--script", "whoami", ] 4FSWFS 4FSWFS
  12. action "Publish" { needs = "Tag" uses = "actions/npm@master" args

    = "publish --access public" secrets = ["NPM_AUTH_TOKEN"] } IUUQTHJUIVCDPNBDUJPOTOQN
  13. kind: pipeline name: default steps: - name: build image: appleboy/drone-ssh

    environment: USERNAME: from_secret: username PASSWORD: from_secret: password
  14. |-- ssh-action (repository) | |__ .github | |__ main.workflow |

    |__ Dockerfile | |__ entrypoint.sh | |__ README.md | |__ LICENSE
  15. FROM appleboy/drone-ssh:1.5.0-linux-amd64 # Github labels LABEL "com.github.actions.name"="SSH Commands" LABEL "com.github.actions.description"="some

    description" LABEL "com.github.actions.icon"="terminal" LABEL “com.github.actions.color"="gray-dark" LABEL "repository"="https://github.com/appleboy/ssh-action" LABEL "homepage"="https://github.com/appleboy" LABEL "maintainer"="Bo-Yi Wu <[email protected]>" LABEL "version"="0.0.1" ADD entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"]
  16. action "Tag Docker Image" { needs = ["build"] uses =

    "actions/docker/cli@master" args = "tag hello:$GITHUB_SHA" }
  17. action "Tag Docker Image" { needs = ["build"] uses =

    "actions/docker/cli@master" args = ["tag", "hello:$GITHUB_SHA"] }
  18. action "Hello World" { uses = "./my-action" env = {

    FIRST_NAME = "Mona" MIDDLE_NAME = "Lisa" LAST_NAME = "Octocat" } }
  19. I don’t know how to get the author email, name

    or commit message 3FTPMWFUIJTQSPCMFNVTJOH(JU)VC"1*SFRVFTU
  20. FROM appleboy/drone-ssh:1.5.0-linux-amd64 # Github labels LABEL "com.github.actions.name"="SSH Commands" LABEL "com.github.actions.description"="some

    description" LABEL "com.github.actions.icon"="terminal" LABEL “com.github.actions.color"="gray-dark" LABEL "repository"="https://github.com/appleboy/ssh-action" LABEL "homepage"="https://github.com/appleboy" LABEL "maintainer"="Bo-Yi Wu <[email protected]>" LABEL "version"="0.0.1" ADD entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] QMFBTFNBLFTVSFUIBUUIFSFJTOPQSPCMFNXJUI%PDLFSpMFJO-"#&-
  21. Some action I created • appleboy/ssh-action • appleboy/scp-action • appleboy/facebook-action

    • appleboy/telegram-action • appleboy/jenkins-action • appleboy/gitlab-ci-ation • appleboy/discord-action