GitHub Enterpriseユーザー会

GitHub Enterpriseのユーザー会が総代理店のマクニカネットワークスさん主催で開催されたので参加しました。今回はエンドユーザーとして登壇し、サイオステクノロジーでの導入事例も話してきました。写真は撮らなかった。。。開会から懇親会終わるまでで、7時間近く。長すぎ疲れたがとても有意義でした。登壇するとチヤホヤされて懇親会での情報交換捗る。ISMSがらみの話とか、コストの配賦のこととか(価格とか。。。)、技術的ではないところが生々しく貴重。

GitHubアップデート

  • 全ての企業はSoftware Companyではなく、Innovation Companyなのだ
  • ロードマップ
    • Issue Deletion: 古くなった課題を検索結果から削除する機能[beta]
    • Activity Dashboard: 組織のパフォーマンスを可視化する[WIP] <- これスクリーンショットしか見れなかったけどいい感じ!
    • Admin Visibility to Collaborator Invitations: Outside Collaboratorsの招待をコントロールする
    • Unrecognized Account Activity Notification
    • GitHub Actions [Beta]: Serverless DevOpsを実現する。まだアプライアンスには来ないし、おそらくアプライアンスに来てもインパクトは少ない。すでにサーバー持ってるのだからGitHub APIで普通に作ればいいだけだし。一方でSaaS版の方では強烈な機能ですね。エコシステムゴロシとなるのか、それともActionsの上にエコシステムが花開くのか。にわかに大好きなpulumiもActionsを調べてる時に見つけたのでした
    • Contents Attachement API [Beta]:
    • Issue Templateがどうにかしたって(聞き逃した)
  • InnerSource
    • 「書くべきコードはすでにもう書かれている」
    • InnerSourceとは、OpenSourceプロジェクトのように内部開発すること
    • 価値は、オープンなコラボレーション・開発者間の信頼関係・新しいアイディアの共有
    • 透明性、ガバナンスは大事

イントラマート事例

  • 概要
    • 開発本部 阿久沢さん
    • 合計100名ぐらい、70名が開発、サポート15名
    • organizationは100以上、機能単位で作ってる
    • リポジトリ1,150個、Jenkinsでビルドしてる。
  • GHE導入に至る課題
    • 動作しない不完全なコードがコミットされたり、Jenkinsビルドでエラーが発生。レビューが必要
    • レビューをしてもらうためにコミットしなければならない
  • 解決
    • AWS EC2上にGHEとJenkinsをおいて、ECSでビルド&テストするようにした
    • git-svnSubVersionから移行した。タグ付けされたものだけ移行して、過去の履歴はSVNを見る
    • チェッカーツールを独自に作った
      • モジュール名の命名規則、誤字脱字などもチェック
      • チェックが通らないとマージさせない
    • 他システム連携
      • Jenkins Organization Folder Pluginを利用。GHE操作に反応してJenkinsが動作
      • Redmine連携: pre-receive hookを利用してコミットコメントにリファレンス#が付いてないと弾く
      • Coverity連携: 静的解析ツール
      • API活用: pythonでJenkinsジョブとして実行している。
    • 新規リポジトリ作成ジョブを用意して、ルールに従ったプロジェクト立ち上げを強いている

フォーク事例

  • Webの受託開発現場でのGHE導入&浸透
    • 取締役 大沼さん、札幌でニアショアをやってる
    • 企業のプロモーションに関わるキャンペーンサイトを作ってる。デザインもする。
    • 110ユーザー、16オーガ、1,000リポ(1サイト-1リポジトリ
  • 導入前
  • 浸透策
    • 自社サイトのリニューアルでGHEの利用に慣れる
    • 新卒向け教育に組み込み!研修課題の提出先をGHEにした
    • 二段階認証を必須
  • 効果
    • Issue、Pullrequestテンプレートを活用
    • Projectのカンバン機能を活用。
    • webhookを使ったデプロイ:公開後の切り戻しなども可能
    • OSSへの参加する機運:OSSへの距離感が縮まり、IssueやPull Requestをあげたりするようになった

IIJ事例

  • 概要
    • 社員2,000名ぐらい
    • 470ユーザー、304オーガ、8,000リポ
    • GitHub Enterprise + drone.io + Teams
    • 開発言語やツールは自由に選べる文化
  • drone.io
    • GitHub Enterpriseにすると困ること。SaaSじゃないので連携ツールに制限が入る
    • CIツール、貧者のCircleCIたるdrone.io
    • Golangで書かれた、Dockerベースのツール
    • システム管理者が中央でスケーリングさせる。利用者は何も考えなくて良い
  • Confluenceと連携
    • GISTを展開する機能を組み込み済み
    • ブログが書けるので社内SNS的にも使われている
  • 面白い使い方
    • 社内ツールの公開
    • サポート部門で、マニュアル執筆やアナウンス文面の共有などにも使われている。
  • 利用しなくなるユーザー(dormant user)がたくさんいる

サイオス事例でもらったフィードバック

JFrog 製品紹介

  • Artifact Registryとは
    • ソフトウェア開発の成果物を保存しておく場所。CI/CDでは必要なもの
    • 依存管理:ビルドの再現性が保証される。
    • セキュリティやコンプライアンス:誰がいつプッシュしたのかなどの活動履歴を保存、認証認可もサポート
  • Sonatype Nexusが競合
  • Harbor

CircleCI 製品紹介

  • Pull Requestに含まれるコミットが、CIでのビルドに成功しているかを表示。マージできるかを表示。
  • GitHubのOAuthで接続する。
  • ビルドの高速化
    • ワークフローの中間成果物をキャッシュする
    • ビルドを並列化する
  • 秘密情報の取り扱い
    • 設定YAMLに書きたくないクレデンシャルなどはGUIで皆に見えないよう値を変数参照させるようにできる

Sider 製品紹介

  • コードレビュー支援ツール「開発チームの情報共有と成長をサポート」
  • DevOpsのサイクルの中で、コードレビューのところはまだ効率化されていない
  • Sider独自のコード解析ツールを提供(OSSとしても公開)。プロジェクト固有のルールをチェックする。
  • ルールをYAMLに書くと、Pull Request画面でSiderが示唆する内容を見ることができる
    • 一致および正規表現の文字列パターンでの検知
    • コードで書く検知
      • 現在はRubyPHP向け
      • 近日にTypeScript向けをリリース、その後にJava
  • 競合?:checkstyle / spotbugs / SonarQube

Lychee Redmine

その他