Sample React application for Trying to Use DevSecOps tools.
Warning
Since it costs money to maintain the AWS environment created with copilot-cli for the demo environment, I plan to use GitHub-Pages
for future demos. I have archived this branch.
デモ環境に対してcopilot-cli
で作ったAWS環境を維持するのにお金がかかるのはもったいないので,以降はgithub-pages
を使ってデモを動かそうと思います。このブランチをアーカイブとして残してあります。
- PREPARINGの設定を先にやる。
- commit時にはpre-commitとgit-secretが作動。
- push時にはGitHub ActionsによりSAST(semgrep),UnitTest(jest),Dependency Check(trivy)が実行される。
- github-pagesにデプロイされる。 # TODO: more info
このRepositoryで学べること。
- ghalint: GitHub Actionsで実行されるworkflows用のlinter
- github-comment: GitHub Actionsで実行されるCIが失敗したときにコメントとしてエラーを出力する。
- semgrep: GitHub Actionsで実行するSASTツール
- trivy: イメージのスキャンやdependency checkができる。dependency checkはGitHub Actionsで実行,イメージスキャンはTODO
- github-actoins.md
- matrixでバージョンや環境を変えて並列テスト
- pathsフィルター
- GitHub Environments variablesやsecretsの使い方
- WorkflowのバッチをREADME.mdにつける
- CodeQLを使ってスキャン結果等を出力する
- zipを作ってartifactとして配置する
- RepositoryのReleasesを自動作成
- github-pagesにデプロイする。
- pre-commit: git commit前に特定のツールを実行し,失敗ならcommitさせない。
- hadolint
- ESLint
- Prettier(Formatter)
- Markdown linter
- git-secret: git commit時にクレデンシャルのパターンにマッチするものがあれば,commitさせない。
- hadolint: Dockerfileのlinter
- markdownlint
- zenkaku: 半角スペースを可視化
- Code spell checker
- ESLint
- Prettier
- CODEOWNERSの使い方 TODO: そのうちドキュメント化する
- RepositoryのTemplates関連
- branchルールセットについて TODO: そのうちドキュメント化する
create-react-app
で作られるデフォルトそのまま。
- Reopsitoryをforkしてcloneする。
- ghコマンドをインストールする。
- RepositoryのsettingsからEnvironmentを作る。
- ローカルに3環境分の.envファイルを作成する。これによってブラウザからどの環境のアプリ化識別する。
# 作成
for environment in development staging production;
do
touch .env.${environment}
echo $REACT_APP_MESSAGE=${environment} > .env.${environment}
done
- github actions enrironment variablesに登録/更新する。
source ./update_github_actions_variables.sh
- GitHub Actionsがスキャン結果のファイルをアップロードできるようにGitHubリポジトリの設定を変更。詳細はsemgrepのyamlを参照。
- Personal access tokensを作り,repository secretsに登録する。 TODO: 一旦これくらいで作成。もっと権限しぼれるかも
- repository secretsに登録する。
- pre-commit
- git secret
- VSCodeのExtensionsもお好みでインストール。TODO: Devcontainer化する。
error.mdを参照。