ã¯ããã«
å»å¹Ž DEV ã®ã¢ã«ãŠã³ããäœæãããã®ã®ãä»ãŸã§å šãæå¹æŽ»çšåºæ¥ãŠããŸããã§ããã
DEV ã«ã¯ ã«ããã«ã« URL ãèšå®åºæ¥ãã®ã§ãåžžã Zenn ã®èšäºãæçš¿ããéã«ã¯ãã¹ãã¹ãããããªãšèããŠãããŸãããããã§ãZenn ã«èšäºãæçš¿ããããèªåçã« DEV ã«ãèšäºãæçš¿ & åæãã GitHub Actions ãäœã£ãŠã¿ãŸããã
ä»ååã㊠GitHub Actions ãèªäœããã®ã§ããããã®äžã§åŸãç¥èŠãæ®ã圢ã§èšäºãæžãããšã«ããŸããããŸããGitHub Actions 㯠TypeScript ã§äœæããŸããã
éçºãã GitHub Actions ã®æŠèŠ
ãŸãã¯ã¶ããšã©ã®ãã㪠GitHub Actions ãäœæããã®ããæŠèŠã«ã€ããŠèª¬æããããŸãã
GitHub ãªããžããªã§ç®¡çããŠãã Zenn ã®èšäºã DEV ã«åæããŠæçš¿ãã GitHub Actions ãäœæããŸããã ãã®éã« DEV ãžæçš¿ããèšäºã«ã¯ Zenn ã®è©²åœèšäºãžã®ã«ããã«ã« URL ãèªåã§èšå®ã§ããŸããããã«ãã DEV ãš Zenn ãžèšäºãã·ãŒã ã¬ã¹ã«ã¯ãã¹ãã¹ãããããšãå¯èœãšãªããŸãã
ä»åäœæãã GitHub Actions ãå©çšããã¯ãŒã¯ãããŒãã¡ã€ã«ã®äžäŸã¯äžèšãšãªããŸãã
# .github/workflows/sync-zenn-with-dev-all.yml
name: "Sync all Zenn articles to DEV"
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: checkout my project
uses: actions/checkout@v2
- name: dev.to action step
uses: nikaera/sync-zenn-with-dev-action@v1
# id ãèšå®ããããšã§ãåŸã®ãžã§ãã§ Output ã§æå®ããå€ãåç
§å¯èœã«ãªã
id: dev-to
with:
# DEV ã® API ããŒãæå®ãã
api_key: ${{ secrets.api_key }}
# (ãªãã·ã§ã³) DEV ã«èšäºãæçš¿ããéã« Zenn ã®ã«ããã«ã« URL ãèšå®ãããå Žåã«æå®ãã
# username: nikaera
# (ãªãã·ã§ã³) æ¹è¡åºåãã§æå®ãã articles ãã©ã«ãå
ã®ãã¡ã€ã«ãã¹ãèšèŒãã txt ãã¡ã€ã«ãæå®ããããšã§ãèšèŒãããèšäºã®ã¿ãåæããããã«ãªãã
# ä»ãã©ã°ã€ã³ãšçµã¿åãããããšã§å·®åã®ã¿ã txt ãã¡ã€ã«ã«èŒããããšãå¯èœã詳现ã«ã€ããŠã¯åŸè¿°ã® Outputs ã®é
ç®ã«èšèŒã
# added_modified_filepath: ./added_modified.txt
# (ãªãã·ã§ã³) Zenn ã® articles 以äžå
šãŠã®èšäºãåžžã« DEV ã«åæãããæå®ãã
# update_all ã true ã®ãšã㯠added_modified_filepath ã¯ç¡èŠãããã
# update_all: false
# äžèšã¢ã¯ã·ã§ã³å®è¡æã« DEV ã«æ°èŠã§åæããèšäºã«é¢ããŠã¯ Zenn ã®ããŒã¯ããŠã³ãããã«
# 該åœãã DEV ã®èšäºã® ID ã dev_article_id ãšããŠèšèŒãããããã«ãªãã
# ä»åŸã¯ãã® ID ãå
ã«åæããããã«ãªãããã該åœãã Zenn ã®èšäºãã³ãããããã
# æ°èŠã§åæããèšäºãç¡ããã°ããã®ãžã§ãã¯å®è¡ããªãã
- name: write article id of DEV to articles of Zenn.
run: |
git config user.name github-actions
git config user.email [email protected]
git add ${{ steps.dev-to.outputs.newly-sync-articles }}
git commit -m "sync: Zenn with DEV [skip ci]"
git push
if: steps.dev-to.outputs.newly-sync-articles
# Outputs ã«ã¯ DEV ã®èšäºæ
å ± (title, url) ãå«ãŸããããã«ãªãããã
# æåŸã«åºåããŠå®è¡çµæã®å
容ã確èªããããšãã§ãã
- name: Get the output articles.
# dev-to ãšãã id ãçŽä»ãããžã§ãã® Outputs ãååŸã㊠echo ã§å
容ãåºåãã
run: echo "${{ steps.dev-to.outputs.articles }}"
ç°¡åã« nikaera/sync-zenn-with-dev-action@v1
ãšãããžã§ãã®å
éšåŠçã«ã€ããŠèª¬æããããŸãã
- Inputs ã®
update_all
åã³added_modified_filepath
ã§åãåã£ãæ å ±ãå ã«ã ã©ã®èšäºã DEV ã«åæããããå€å®ãã - DEV ã«åæããèšäºã®ãã¡ã€ã«ãã¹äžèЧãååŸããŠã
ããããã®èšäºã®ãããã«
dev_article_id
ã®èšèŒããããå€å®ãã - Inputs ã®
api_key
ãå©çšããŠãZenn ã®èšäºã«dev_article_id
ãå«ãŸããŠããã°ã 該åœãã DEV ã®èšäºãæŽæ°ãããå«ãŸããŠããªããã° DEV ã«æ°èŠã§èšäºãäœæãã - Inputs ã®
username
ãå©çšããŠã DEV ã®èšäºã«è©²åœãã Zenn èšäºã®ã«ããã«ã« URL ãèšå®ãã - DEV ã«æ°èŠã§èšäºãäœæããå Žåã¯ã
Zenn ã®è©²åœèšäºã®ãããã«
dev_article_id
ãæžã蟌ã - DEV ã«èšäºãæçš¿ããéãZenn ã¯å¯Ÿå¿ããŠãããã
DEV ã§ã¯å¯Ÿå¿ããŠããªãèšè¿°ã¯åé€ãã (
:::
èšæ³ãäžéšã®ã³ãŒãèšæ³) - èšäºã®å ¬éã¹ããŒã¿ã¹åã³ã¿ã°ãªã©ã«ã€ããŠã DEV ã®èšäºã«åæ ãã1
- æ°èŠã§ DEV ã«èšäºãåæãã Zenn èšäºã®ãã¡ã€ã«ãã¹ãã
Outputs ã®
newly-sync-articles
ã«èšå®ãã (åŸã®ãžã§ãã§dev_article_id
ã®å«ãŸããèšäºãã³ãããããããã) - ã¯ãŒã¯ãããŒã§åæãããèšäºæ
å ±ã¯ Outouts ã®
articles
ã«èšå®ãã
Inputs ãš Outputs ã®å 容äžèЧã«ã€ããŠã¯äžèšã«ãªããŸãã
Inputs
ã㌠| 説æ | å¿ é |
---|---|---|
api_key | DEV ã® API Key ãèšå®ãã | o |
username | Zenn ã® èªåã®ã¢ã«ãŠã³ãå ãèšå®ãã (DEV ã«åæããèšäºã« Zenn ã®ã«ããã«ã« URL ãèšå®ãããå Žåã®ã¿) | x |
added_modified_filepath | æ¹è¡åºåãã§æå®ãã articles ãã©ã«ãå ã®ãã¡ã€ã«ãã¹ãèšèŒãã txt ãã¡ã€ã«ãæå®ããããšã§ãèšèŒãããèšäºã®ã¿ãåæããããã«ãªããPR ãã³ãããå·®åã®ãã¡ã€ã«ã®ã¿ãååŸããããã® GitHub Actions jitterbit/get-changed-files@v1 ãšçµã¿åãããããšã§ãæŽæ°å·®åã®ãã£ãèšäºã®ã¿ãéæåæããããšãå¯èœã2 æŽæ°å·®åã®ãã£ãèšäºã®ã¿ãéæåæããããã®å®éã®ã¯ãŒã¯ãããŒãã¡ã€ã«ã¯ãã¡ã | x |
update_all | Zenn ã®å
šãŠã®èšäºãã©ãããããã©ãããèšå®ãããGitHub Actions ååå®è¡æã®ã¿ true ã«ããäœ¿ãæ¹ãæ³å®ããŠãããããã©ã«ã㯠trueãadded_modified_filepath ããã update_all ãåªå
ããããã added_modified_filepath ãèšå®ããå Žå㯠false ãèšå®ããå¿
èŠãã` | x |
Outputs
ã㌠| 説æ |
---|---|
articles | åæããã DEV ã®èšäºã®ã¿ã€ãã«åã³ URL ãæ ŒçŽãããé å |
newly-sync-articles | DEV ã§æ°ãã«æ°èŠäœæããã Zenn èšäºã®ãã¡ã€ã«ãã¹ãæ ŒçŽãããé åãå®éã®ã¯ãŒã¯ãããŒãã¡ã€ã«ã®è©²åœããèšè¿°ã®ããã«ãå¿ ãã³ãããã«å«ããããã«ããå¿ èŠããã (çç±ã¯åŸè¿°) |
Inputs åã³ Outputs ã«ã€ããŠã¯å ¬åŒãµã€ãã®èª¬æããåç §ãã ããã
Zenn ã®èšäºã DEV ã«åæããããã®ä»çµã¿
Zenn ã®èšäºãæ°èŠã§ DEV ã«åæããéã¯ãDEV ã«èšäºãæ°èŠäœæããå¿ èŠããããŸãããã®éã« Zenn ã®èšäºãš DEV ã®èšäºãçŽä»ããããã®äœããã®ä»çµã¿ãå¿ èŠãšãªããŸããããããªããšãä»åŸ Zenn ã®èšäºå å®¹ãæŽæ°ããéã«ãDEV ã®ã©ã®èšäºã«å 容ãåæãããã°ããããäžæãªããã§ãã
ããã§ãèšäºãåæããããã®ä»çµã¿ãšããŠãdev_article_id
ãšãããã£ãŒã«ãã Zenn ã®ããŒã¯ããŠã³ãããã«è¿œèšããããšã§ DEV ã®åæãã¹ãèšäºãšã®çŽä»ããè¡ãããšã«ããŸãããdev_article_id
ã«ã¯ DEV ã®èšäºäœæ API å®è¡æã®è¿ãå€ã§ãã id
ãèšå®ããŸãã
äžåºŠ id
ã dev_article_id
ãšã㊠Zenn ã®èšäºã«çŽä»ããŠããŸãã°ã次å以éã«èšäºã®åæãè¡ãé㯠DEV ã®èšäºæŽæ° API ãå©çšã§ããŸãã
ãŸããOutputs ã® newly-sync-articles
ã«ã¯æ°èŠã§äœæããã DEV èšäºã® id
ã§ãã dev_article_id
ã远èšããã Zenn èšäºã®ãã¡ã€ã«ãã¹ãæ ŒçŽãããŠããŸãããã®ãããnikaera/sync-zenn-with-dev-action@v1
å®è¡åŸã¯ãäžèšã®ããã« steps.dev-to.outputs.newly-sync-articles
å
ã«æ ŒçŽããããã¡ã€ã«çŸ€ãã³ãããã«åæ ãããå¿
èŠããããŸãã
# `nikaera/sync-zenn-with-dev-action@v1` å®è¡åŸã«å¿
ãå®çŸ©ãã¹ããžã§ã
# DEV ã«æ°èŠã«äœæããèšäºããªããã°å®è¡ããªã (if: steps.dev-to.outputs.newly-sync-articles)
- name: write article id of DEV to articles of Zenn.
run: |
git config user.name github-actions
git config user.email [email protected]
git add ${{ steps.dev-to.outputs.newly-sync-articles }}
git commit -m "sync: Zenn with DEV [skip ci]"
git push
if: steps.dev-to.outputs.newly-sync-articles
äžèšã®ãžã§ãã§ newly-sync-articles
ã«æ ŒçŽããã dev_article_id
ã远èšããã Zenn èšäºã¯éæã³ãããã«åæ ããªããšãZenn ã®å
šãŠã®èšäºãåææ¯ DEV ã«æ°èŠäœæããç¶ãããšããäžå
·åãåŒãèµ·ãããŠããŸãã®ã§ããæ³šæãã ãã
GitHub Actions ãéçºããæé
ãµã¯ããšéçºã«åãçµã¿ããã£ããããDocker ã³ã³ãããå©çšããæ¹æ³ ã§ã¯ãªããJavaScript ãå©çšããæ¹æ³ ã§éçºãé²ããŠããããšã«ããŸããã
TypeScript ã§ GitHub Actions ãäœã
GitHub å ¬åŒã TypeScript ã§ GitHub Actions ãäœãããã® ãã³ãã¬ãŒããããžã§ã¯ã ãçšæããŠãããŠããŸããä»åã¯ãã®ãã³ãã¬ãŒããããžã§ã¯ããå©çšãã圢ã§ãããžã§ã¯ããäœæããŸããã
(äœè«) GitHub Actions ã§ã¯ Docker ã³ã³ãã ãçšããŠã¯ãŒã¯ãããŒãå®è¡å¯èœã§ãããã®ãããå®è¡ç°å¢ã¯èªç±ã«èšå®åºæ¥ãŸãã(Go, Python, Ruby, etc.)
æ©é TypeScript ã®ãã³ãã¬ãŒããããžã§ã¯ããå ã«èªåã® GitHub Actions ãããžã§ã¯ããäœæããŸãã
1. ãã³ãã¬ãŒããããžã§ã¯ããå
ã« GitHub Actions ã® TypeScript ãããžã§ã¯ããäœæãã
2. ãããžã§ã¯ãã®äœæåŸ
git clone
ããŠããŠéçºããæºåãæŽãã
GitHub Actions ãããžã§ã¯ãã®éçºãé²ããããã®æºåãè¡ã
ãã³ãã¬ãŒããããžã§ã¯ãã git clone
ãããããŸã㯠action.yml
ã®å
容ã倿ŽããŸãã
ä»åäœæãã GitHub Actions ã® action.yml
ã¯äžèšãšãªã£ãŠãããŸãã
# action.yml
# GitHub Actions ã®ãããžã§ã¯ãå
name: "Sync Zenn articles to DEV"
# GitHub Actions ã®ãããžã§ã¯ã説ææ
description: "Just sync Zenn articles to DEV."
# GitHub Actions ã®äœè
author: "nikaera"
# GitHub Actions ã«æž¡ããåŒæ°ã®å€å®çŸ©
inputs:
api_key:
# ãã£ãŒã«ãã®æå®ãå¿
é ã§ããã° trueãå¿
é ã§ãªããã° false ãèšå®ãã
# DEV ã® API ããŒã¯åæãè¡ãéã«å¿
é ãªãããtrue ãèšå®ããŠãã
required: true
# ãã£ãŒã«ãã®èª¬ææ
description: "The api_key required to use the DEV API (https://docs.forem.com/api/#section/Authentication)"
username:
required: false
description: "Zenn user's account name. (Fields to be filled in if canonical url is set.)"
articles:
required: false
description: "The directory where Zenn articles are stored."
# ãã£ãŒã«ãã«ã¯ããã©ã«ãå€ãæå®ããããšãå¯èœ
# Zenn ã®èšäºãããã©ã§æ ŒçŽãããŠãããã©ã«ãåãæå®ããŠãã
default: articles
update_all:
require: false
description: "Whether to synchronize all articles."
default: true
added_modified_filepath:
required: false
description: |
Synchronize only the articles in the file path divided by line breaks.
You can use jitterbit/get-changed-files@v1 to get only the file paths of articles that have changed in the correct format.
(https://github.com/jitterbit/get-changed-files)
# GitHub Actions å®è¡åŸã«åç
§å¯èœã«ãªãå€å®çŸ©
outputs:
articles:
description: "A list of URLs of dev.to articles that have been created or updated"
newly-sync-articles:
description: "File path list of newly synchronized articles."
# GitHub Actions ã®å®è¡ç°å¢
runs:
using: "node12"
# ãã³ãã¬ãŒããããžã§ã¯ãã§ã¯ ã³ã³ãã€ã«å
ã dist ã«ãªããã `dist/index.js` ãæå®ããŠãã
main: "dist/index.js"
TypeScript ã®ãã³ãã¬ãŒããããžã§ã¯ãã§ã¯ããã³ãã«ããŒã«ãšã㊠ncc
ãæ¡çšãããŠããŸããGitHub Actions å®è¡æã«äœ¿çšãããã®ã¯ ncc ã«ããã³ã³ãã€ã«ãããåäžã® JavaScript ãã¡ã€ã« (dist/index.js
) ã«ãªããŸãã
ããšã¯ src
ãã©ã«ãå
ã§ããã°ã©ã ãæžããŠãnpm run all && node dist/index.js
ã®ããã«ã³ãã³ãå®è¡ããªããéçºãé²ããŠããã ãã§ãã
(äœè«) GitHub Actions ã®éçºããŒã«ãšã㊠Docker ãå©çšãã act
ãšãããã®ãååšããããã§ããããŒã«ã«ç°å¢ã§æ€èšŒããé㯠æ¢ç¥ã®åé¡ ã«å¯Ÿå¿ããå¿
èŠãããããã§ãããGitHub Actions ã®éçºã§éåžžã«æå¹æŽ»çšã§ãããã§æ°ã«ãªã£ãŠãããŸãã
ä»åã®éçºã§ã¯å©çšããªãã£ãã®ã§ãããä»åŸéçºãé²ããŠããäžã§å©çšããæ©äŒãåºãŠããããªã®ã§ããã®éã¯æ¬èšäºå å®¹ãæŽæ°ãã圢ã§ç¥èŠã远èšããããšèããŠãããŸãã
GitHub Actions ãå®è£ ããéã«å©çšããæ©èœ
GitHub Actions ãå®è£ ããéã«å©çšããæ©èœããå®éã®ã³ãŒãå 容ãæç²ããŠç°¡åã«èª¬æããŠãããŸããäžèšã§ç޹ä»ããå 容㯠GitHub Actions Toolkit ã®æ©èœã§ãã
// main.ts
/**
äžèšã® yml ã® with ã§æå®ããå€ã¯ core.getInput ã§åãåãããšãå¯èœã
- name: dev.to action step
uses: nikaera/sync-zenn-with-dev-action@v1
id: dev-to
with:
# DEV ã® API ããŒãæå®ãã
api_key: ${{ secrets.api_key }}
*/
core.getInput("api_key", { required: true });
core.getInput("update_all", { required: false });
/**
äžèšã® yml ã® steps.<ãžã§ãã§æå®ãã id>.outputs ã§åç
§å¯èœãªå€ãã»ããããããšãå¯èœã
ã»ããããå
å®¹ã¯æååã§ããå¿
èŠãããã
- name: dev.to action step
uses: nikaera/sync-zenn-with-dev-action@v1
id: dev-to
- name: Get the output articles.
run: echo "${{ steps.dev-to.outputs.articles }}"
*/
core.setOutput("articles", JSON.stringify(devtoArticles, undefined, 2));
core.setOutput("newly-sync-articles", newlySyncedArticles.join(" "));
/**
GitHub Actions å®è¡æã«åºåããããã°ãã¬ãã«ããšã«åºåããããšãå¯èœ
core.debug ã¯ããŒã«ã«å®è¡æã®ã¿ã«åºåå
容ã確èªããããšãã§ãã
*/
core.debug("debug");
core.info(`update_all: ${updateAll}`);
core.error(JSON.stringify(error));
äžèšã ãææ¡ããŠãã° GitHub Actions ã®éçºã¯åé¡ãªãè¡ãããšãã§ããŸããã
äœæãã GitHub Actions ãå®éã« GitHub äžã§å®è¡å¯èœã«ãã
ããŒã«ã«ç°å¢ã§äžéãéçºãå®äºããããGitHub ãªããžããªã« push ããåŸã¿ã°ä»ããè¡ããŸããGitHub Actions ã¯ã¿ã°ãèšå®ããªããšå®è¡ã§ããªãããå¿ èŠãªäœæ¥ãšãªããŸãã ä»åã¿ã°ä»ã㯠GitHub äžã§è¡ããŸããã
1. ã¿ã°ã®é
ç®ãã¯ãªãã¯ãã
2.
Create a new release
ãã¿ã³ãã¯ãªãã¯ããŠã¿ã°äœæç»é¢ã«é·ç§»ãã
3.
Publish release
ãã¿ã³ãã¯ãªãã¯ããŠã¿ã°ã®äœæãå®äºãã
äžèšã®äŸã§ã¯ v1
ãšããã¿ã°ãäœæããã®ã§ nikaera/sync-zenn-with-dev-action@v1
ã®ãããªèšè¿°ã§ GitHub Actions ãå©çšå¯èœã«ãªããŸããã ç§ã¯ Zenn ã®èšäºã zenn.dev
ãšãããªããžããªã§ç®¡çããŠãããããæ©éãã®ãªããžããªã« GitHub Actions ãå°å
¥ããŠã¿ãŸãã
Zenn ã®å šãŠã®èšäºã DEV ã«åæããããã®ã¯ãŒã¯ãããŒ
æ¬èšäºã® GitHub Actions ã§ã¯ DEV ã® API ããŒã䜿çšãããããäºåã«ã·ãŒã¯ã¬ãããž API_KEY
ãšããåç§°ã§å€ãç»é²ããŠãããŸããå
¬åŒãµã€ãã®æé ã«åŸã ã·ãŒã¯ã¬ããã®ç»é²ãå®äºãããã該åœãªããžããªã« .github/workflows/sync-zenn-with-dev-all.yml
ãšããã¯ãŒã¯ãããŒãã¡ã€ã«ãäœæããŸãã
# .github/workflows/sync-zenn-with-dev-all.yml
name: "Sync-All Zenn with DEV"
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
if: contains(github.event.head_commit.message, '[skip ci]') == false
steps:
- name: setup node project
uses: actions/checkout@v2
- name: dev.to action step
uses: nikaera/sync-zenn-with-dev-action@v1
id: dev-to
with:
api_key: ${{ secrets.api_key }}
# Zenn ã®èªåã®ã¢ã«ãŠã³ãåãæå®ãããš
# DEV èšäºã®ã«ããã«ã« URL ã« Zenn èšäºã® URL ãæå®ã§ãã
# username: nikaera
update_all: true
- name: write article id of DEV to articles of Zenn.
run: |
git config user.name github-actions
git config user.email [email protected]
git add ${{ steps.dev-to.outputs.newly-sync-articles }}
git commit -m "sync: Zenn with DEV [skip ci]"
git push
if: steps.dev-to.outputs.newly-sync-articles
- name: Get the output articles.
run: echo "${{ steps.dev-to.outputs.articles }}"
äžèšã¯æåå®è¡ãå¯èœãª Zenn ã®èšäºãå šãŠ DEV ã«åæããããã®ã¯ãŒã¯ãããŒãã¡ã€ã«ã«ãªããŸããäœæãå®äºãããã¯ãŒã¯ãããŒãã¡ã€ã«ãå®è¡ããŠãèšäºãæ£åžžã«åæã§ããŠããã確èªããŠã¿ãŸãã
1.
Actions
ã¿ããã¯ãªãã¯ãã
2. äœæãã
Sync-All Zenn with DEV
ã¯ãŒã¯ãããŒãã¡ã€ã«ãéžæãã
3.
Run workflow
ãã¿ã³ãå®è¡ããŠãã¯ãŒã¯ãããŒãå®è¡ãã
4. ã¯ãŒã¯ãããŒã®å®è¡ãæ£åžžã«å®äºããŠããã°ããã°ã« DEV ã®èšäºæ
å ±ãåºåããã
5.
dev.to
ã«ã¢ã¯ã»ã¹ã㊠Zenn ã®èšäºæ
å ±ãæ£åžžã«åæãããŠããããšã確èªãã
æ£åžžã« Zenn ã®å šãŠã®èšäºã DEV ã«åæãããŠããããšã確èªã§ããããæ¬¡ã¯ Zenn ã®èšäºãæ°èŠäœæãããããæŽæ°ããããšãã®ã¿ã« DEV ã«åæããããã®ã¯ãŒã¯ãããŒãã¡ã€ã«ãäœæããŸãã
æŽæ°å·®åã®ãã£ã Zenn èšäºã®ã¿ã DEV ã«åæããããã®ã¯ãŒã¯ãããŒ
main
ãã©ã³ããæŽæ°ããããšãã®ã¿æŽæ°ãããèšäºã®ã¿ã DEV ã«åæããããã®ã¯ãŒã¯ãããŒãã¡ã€ã«ãäœæããŸãã該åœãªããžããªã« .github/workflows/sync-zenn-with-dev.yml
ãšããã¯ãŒã¯ãããŒãã¡ã€ã«ãäœæããŸãã
# .github/workflows/sync-zenn-with-dev.yml
name: "Sync Zenn with DEV"
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
if: contains(github.event.head_commit.message, '[skip ci]') == false
steps:
- name: setup node project
uses: actions/checkout@v2
- name: get modified files
id: files
uses: jitterbit/get-changed-files@v1
- name: output modified files to text
run: |
for changed_file in ${{ steps.files.outputs.added_modified }}; do
echo "${changed_file}" >> added_modified.txt
done
- name: dev.to action step
uses: nikaera/sync-zenn-with-dev-action@v1
id: dev-to
with:
api_key: ${{ secrets.api_key }}
# Zenn ã®èªåã®ã¢ã«ãŠã³ãåãæå®ãããš
# DEV èšäºã®ã«ããã«ã« URL ã« Zenn èšäºã® URL ãæå®ã§ãã
# username: nikaera
added_modified_filepath: ./added_modified.txt
update_all: false
- name: write article id of DEV to articles of Zenn.
run: |
git config user.name github-actions
git config user.email [email protected]
git add ${{ steps.dev-to.outputs.newly-sync-articles }}
git commit -m "sync: Zenn with DEV [skip ci]"
git push
if: steps.dev-to.outputs.newly-sync-articles
- name: Get the output articles.
run: echo "${{ steps.dev-to.outputs.articles }}"
äžèšã¯ãŒã¯ãããŒãã¡ã€ã«ã®äœæãå®äºããããæ©éåäœç¢ºèªã®ããã«ããŸãã«ä»å·çäžã®æ¬èšäºå 容ããªããžããªã« push ããŠã¿ãŸãã
1.
git push
åŸã«è©²åœããã¯ãŒã¯ãããŒã®å®è¡çµæã確èªãã
2.
dev.to
ã«å·çéäžã®å
容ã§èšäºãåæãããŠããããšã確èªãã
ãããŸã§èª¬æããŠãã 2 ã€ã®ã¯ãŒã¯ãããŒãå©çšããããšã§ã倧æµã®ãŠãŒã¹ã±ãŒã¹ã¯ã«ããŒã§ããã¯ãã§ãã
ãããã«
GitHub Actions ã®å匷ã®ããã«åãçµãã ãããžã§ã¯ãã§ãããæãã®å€æ¥œãããŠä»ã«ãè²ã ãªæ©èœã®ã¢ã€ãã¢ãããã®ã§éæå®è£ ããŠãããããšèããŠããŸãã(è±èš³, ã¿ã€ãã«ãã©ãŒããã倿Ž, etc.)
DEV ã« Zenn ã®èšäºãã¯ãã¹ãã¹ããã GitHub Actions ãå ¬éããããšã§ããã€ããäžè©±ã«ãªã£ãŠãã Zenn ãšãããã©ãããã©ãŒã ãæµ·å€ã®æ¹ã«èªç¥ããŠããã ããæ©äŒãåµåºã§ããã®ãããšèããããã³ã·ã§ã³ãäžãã£ãŠããŸããã
ããã¯ããŠãããZenn ã®èšäºãä»ã§ãæå¹æŽ»çšããããã® GitHub Actions ãéçºããéã«ã¯ãæããæ¬èšäºã§ç޹ä»ãã GitHub Actions ã®ã³ãŒããåèã«ãªãã¯ãã§ãã
ãŸããGitHub Actions ã® Marketplace ãšãããã®ãçšæãããŠãããããªã®ã§ãéçºãããçšåºŠå®äºæ¬¡ç¬¬ããã¡ãã«ç³è«ããã®ã詊ããŠã¿ãããšèããŠãããŸãã
åèãªã³ã¯
- DEV Community ð©âð»ðšâð»
- dev.to supports canonical URLs so you can share content without impacting SEO... - DEV Community
- nikaera/sync-zenn-with-dev-action: Just sync Zenn articles to DEV.
- DEV API (beta)
- jitterbit/get-changed-files: Get all of the files changed/modified in a pull request or push’s commits.
- Docker ã³ã³ããã®ã¢ã¯ã·ã§ã³ãäœæãã - GitHub Docs
- JavaScript ã¢ã¯ã·ã§ã³ãäœæãã - GitHub Docs
- actions/typescript-action: Create a TypeScript Action with tests, linting, workflow, publishing, and versioning
- vercel/ncc: Compile a Node.js project into a single file. Supports TypeScript, binary addons, dynamic requires.
- nektos/act: Run your GitHub Actions locally ð
- actions/toolkit: The GitHub ToolKit for developing GitHub Actions.
- æå·åãããã·ãŒã¯ã¬ãã - GitHub Docs
- DeepL ProïŒããã¹ãã®ä»ãWord ãªã©ã®ææžãã»ãã¥ã¢ã«ç¿»èš³
- Qiita
- Crieit - ããã°ã©ããŒãã¯ãªãšã€ã¿ãŒãäœã§ãæ°è»œã«æžããã³ãã¥ããã£
DEV (Forem) ã®ä»æ§äžãã¿ã°ã¯æå€§ã§ã 4 ã€ãŸã§ããèšå®ã§ããªããããZenn ã§èšå®ããã¿ã°ã®å é 4 ã€ãŸã§ DEV ã®èšäºã«ã¯èšå®ããŠããŸã ↩︎
åœç¶ãšããã°åœç¶ã§ãã jitterbit/get-changed-files@v1 ã¯
workflow_dispatch
ã§ã¯ãŒã¯ãããŒãæåå®è¡ããéããforce push
çã§ãã¡ã€ã«å·®åãæ£ç¢ºã«ç¹å®ã§ããªãæäœã«ã¯å¯Ÿå¿ããŠãããŸããã®ã§ããã®å Žåã¯ãšã©ãŒãçºçããŸã ↩︎