Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
カスタム GitHub Actions 超入門
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Tomohiko Ozawa
August 10, 2023
Technology
3.8k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
カスタム GitHub Actions 超入門
Tomohiko Ozawa
August 10, 2023
More Decks by Tomohiko Ozawa
See All by Tomohiko Ozawa
ベンチャー入社後の3年間でDevOps実践して開発・運用体験を劇的に改善した話
kota65535
1
490
Other Decks in Technology
See All in Technology
Claude起点の仕様駆動開発
tanakaseiya
0
390
FactoryBotアンチパターン / factory_bot anti-patterns
toshimaru
0
140
データ品質を壊しながらSnowflakeのAIに分析させてみた
kawanago
0
520
予測不能な実行エージェントを安全にサクッと試せるサンドボックス環境の話
sansantech
PRO
0
120
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
3
640
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
520
FinTech 1-2 : Overview of FinTech
ks91
PRO
0
150
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
130
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
180
Deep Data Security 機能解説
oracle4engineer
PRO
2
710
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
310
形式手法を使って仕様をコーディングしよう
mikanichinose
0
180
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
390
Automating Front-end Workflow
addyosmani
1369
210k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
540
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
What's in a price? How to price your products and services
michaelherold
247
13k
Odyssey Design
rkendrick25
PRO
2
860
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
440
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
740
Transcript
© 2023 SRE Holdings Corporation 証券コード:2980 © 2023 SRE Holdings
Corporation GitHub Actions 2023/08/09 Oracle Cloud Hangout Cafe LT
© 2023 SRE Holdings Corporation SRE Holdings 2 2014 2019
SRE / AI DX DX IT
© 2023 SRE Holdings Corporation • ( @kota65535) • •
⁃ ⁃ ⁃ ⁃ CI/CD ⁃ 3
© 2023 SRE Holdings Corporation • Custom Actions • JavaScript
• Agenda 4
© 2023 SRE Holdings Corporation Custom Action
© 2023 SRE Holdings Corporation • • ⁃ ⁃ ⁃
⁃ Custom Actions 6
© 2023 SRE Holdings Corporation • JavaScript ⁃ Runner Node.js
JavaScript ⁃ : https://github.com/actions/hello-world-javascript-action • Docker ⁃ Runner Docker ⁃ ⁃ : https://github.com/actions/hello-world-docker-action • Composite ⁃ ⁃ : https://github.com/microsoft/action-python 7
© 2023 SRE Holdings Corporation JavaScript
© 2023 SRE Holdings Corporation • Minimal • https://github.com/kota65535/hello-world-javascript-action Minimal
JavaScript 9 . ├── README.md ├── action.yml ├── index.js ├── node_modules ├── package-lock.json └── package.json ⁃ action.yml • ⁃ index.js • JavaScript ⁃ node_modules • NPM node_modules ⁃ package.json & package-lock.json • NPM package.json
© 2023 SRE Holdings Corporation • • ⁃ ⁃ ⁃
⁃ ⁃ ⁃ action.yml 10
© 2023 SRE Holdings Corporation • inputs ⁃ Map ⁃
⁃ or not • outputs ⁃ Map • runs ⁃ ⁃ ⁃ JavaScript • using : Node • main : action.yml 11 inputs: who-to-greet: description: 'Who to greet' required: true default: 'World' outputs: time: description: 'The time we greeted you' runs: using: 'node16' main: 'index.js'
© 2023 SRE Holdings Corporation • JavaScript • @actions/core ⁃
JavaScript ⁃ index.js 12 const core = require('@actions/core'); try { // const nameToGreet = core.getInput('who-to-greet'); // core.info(`Hello ${nameToGreet}!`); ...
© 2023 SRE Holdings Corporation index.js 13 try { //
const nameToGreet = core.getInput('who-to-greet'); // core.info(`Hello ${nameToGreet}!`); // const time = (new Date()).toTimeString(); // core.setOutput("time", time); } catch (error) { // Fail core.setFailed(error.message); }
© 2023 SRE Holdings Corporation • • @actions/core • ⁃
@actions/github Octokit GitHub API package.json & package-lock.json 14 // Octokit const octokit = getOctokit(token); // Issue await octokit.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, "LGTM!" });
© 2023 SRE Holdings Corporation • index.js • ⁃ node_modules
Commit ⁃ ncc Bundle Commit • husky pre-commit • TypeScript • https://github.com/actions/typescript-action node_modules 15
© 2023 SRE Holdings Corporation • https://github.com/kota65535/hello-world-javascript-action-test • 16 steps:
- name: Checkout uses: actions/checkout@v3 - name: Greet uses: kota65535/hello-world-javascript-action@main with: who-to-greet: foo
© 2023 SRE Holdings Corporation 17
© 2023 SRE Holdings Corporation &
© 2023 SRE Holdings Corporation • Semantic Versioning : v1.2.3
• v1 • • Release 19 name: Release on: workflow_dispatch: inputs: version: description: Released version type: string required: true ...
© 2023 SRE Holdings Corporation Release 20 jobs: release: runs-on:
ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Configure git uses: kota65535/github-git-config-action@v1 with: user.name: Tomohiko Ozawa user.email:
[email protected]
- name: Get major version run: echo "MAJOR_VERSION=$(perl -ne 'print $1 if /^(.*?)\.(.*?)\.(.*?)$/' <<< '${{ inputs.version }}')" >> $GITHUB_ENV - name: Run npm version run: npm version ${{ inputs.version }} - name: Update the major version tag run: git tag -f v${{ env.MAJOR_VERSION }} - name: Push the version commit and tags run: | git pull --rebase --autostash git push origin HEAD git push -f --tags
© 2023 SRE Holdings Corporation • Release 21 main v1.2.4
v1 v1 v1.2.3
© 2023 SRE Holdings Corporation • GitHub Marketplace • ⁃
⁃ GitHub Marketplace 22
© 2023 SRE Holdings Corporation • name ⁃ ⁃ •
description ⁃ • branding ⁃ ⁃ icon • Feather ⁃ color • action.yml 23 name: "Terraform Plan to PR Comment" description: "Notify Terraform plan result as a pull request comment" branding: icon: "cloud" color: "purple"
© 2023 SRE Holdings Corporation • action.yml • Publish this
Action to the GitHub Marketplace 24
© 2023 SRE Holdings Corporation • ⁃ : Continuous Integration,
Security, Utilities, Chat • Publish release GitHub Marketplace 25
© 2023 SRE Holdings Corporation • 26
© 2023 SRE Holdings Corporation Custom Action CI/CD
© 2023 SRE Holdings Corporation