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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
アカウント統制の健康診断
kenichinakamura
1
210
構造で守らせる データ・法務・セキュリティ・開発チームとつくる AI時代のデータガバナンスとデータ基盤のリアル
legalontechnologies
PRO
2
610
Claude Code on Bedrock で統制をかける小ネタ集/claude-code-bedrock-governance-tips
emiki
1
13k
国際カードブランドルール変更に伴うクレジットカード決済取引仕様変更について
k1style
0
240
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
0
170
野良MCPサーバーを排除せよ!MCPサーバーのガバナンス
yukiogawa
1
250
AWS Continuum for Penetration Testing に Deep Dive してみる
asanoharuki
2
1.4k
Patterns in AI Driven Software Development
akosma
PRO
0
220
Let's Change Our World—Again
snoozer05
PRO
6
700
cdk deployとcdkd deploy、実際にデプロイして5倍速近くの差を実測した
yama3133
1
100
CSS2026:OWS研究会・招待講演「世界観を、実装する」
atsush1_sada
2
340
DevelopersIO2026 -バックアップは“消されないこと”が9割-
yoshida0129
0
420
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
350
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Building the Perfect Custom Keyboard
takai
2
920
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
860
Ruling the World: When Life Gets Gamed
codingconduct
0
420
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Side Projects
sachag
456
43k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
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