タグ

buildに関するakishin999のブックマーク (61)

  • Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ

    はじめにTIG真野です。育休明けです。 フューチャー社内のタスクランナーはmakeやTaskなど複数の流派があり、チームによって使い分けられています。個人的にはmakeで良いんじゃないかと思っていますが、Taskも良いですよね。 makeは細かい記法をいつも忘れる+調べるとC言語向けの情報が出てきて脳内変換に手間を感じたため、makeを用いてWebバックエンドアプリをGoで開発するということをテーマに、役立ちそうな情報をまとめます。 なお、今記事におけるmakeは、GNU Makeを指します。バージョンは以下で動かしています。 MakefileのためのEditorConfigMakefileのインデントはハードタブである必要があります。誤りを防ぐためにもEditorConfigを設定しておくと良いでしょう。 makeは通常、Makefileという名称をデフォルトで認識しますが、同一フォルダ

    Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ
  • Docker創始者らが開発、ビルド/テスト/デプロイの自動化をポータブルにするツール「Dagger」登場。そのままローカルでもGitHubでもCircleCIでも実行可能に

    Docker創始者らが開発、ビルド/テスト/デプロイの自動化をポータブルにするツール「Dagger」登場。そのままローカルでもGitHubでもCircleCIでも実行可能に Dockerの創始者であるSolomon Hykes氏らが中心となって開発しているオープンソースのCI/CD環境構築ツール「Dagger」が公開されました。 WindowsMacLinuxで試すことができます。 And we are live! Introducing Dagger, a new way to build CI/CD pipelines. By the creators of Docker. https://t.co/DU8racmoUo — dagger (@dagger_io) March 30, 2022 Daggerが定義したCI/CDパイプラインはポータブルになる Daggerとは「A P

    Docker創始者らが開発、ビルド/テスト/デプロイの自動化をポータブルにするツール「Dagger」登場。そのままローカルでもGitHubでもCircleCIでも実行可能に
  • jQueryからTypeScript・Reactまで - Viteで始めるモダンで高速な開発環境構築 - ICS MEDIA

    Vite(ヴィート=フランス語で「速い」の意味)は2020年に発表された新しいフロントエンドのビルドツールです。 開発者がVue.jsの作者であるEvan You氏であるため、Vue.jsのツールであると誤解されることもありますが、プレーンなJavaScript(バニラJS)からVue.js・ReactSvelteといった流行のフレームワークまで、さまざまな環境で利用できる汎用的なツールです。 位置付けとしてはwebpackのようなバンドラーと呼ばれるものに近い存在ですが、それだけではありません。この記事では、Viteを導入してプレーンなJavaScriptから、TypeScript+Vue.js・Reactといったフレームワークまで、快適な開発環境を手に入れる方法を紹介します。 この記事で紹介すること: Viteの特徴と基の仕組み 基の使い方 Vite + SCSS Vite +

    jQueryからTypeScript・Reactまで - Viteで始めるモダンで高速な開発環境構築 - ICS MEDIA
  • HashiCorp「Waypoint」発表。環境やプラットフォームの違いを吸収してコマンド一発でビルド、デプロイ、リリースを実行

    HashiCorp「Waypoint」発表。環境やプラットフォームの違いを吸収してコマンド一発でビルド、デプロイ、リリースを実行 HashiCorpは新しいオープンソースプロジェクト「Waypoint」を発表しました。 Introducing HashiCorp Waypoint, a new open source project providing consistent developer workflows to build, deploy, and release applications across any platform #HashiConf #WaypointUp Learn more: https://t.co/l1LPgph9tA pic.twitter.com/PoSIrz4xXo — HashiCorp (@HashiCorp) October 15, 2020

    HashiCorp「Waypoint」発表。環境やプラットフォームの違いを吸収してコマンド一発でビルド、デプロイ、リリースを実行
  • Go Binary Hacks - go buildせずにビルドする #golang - Qiita

    はじめに Goではルールに従いソースコードを配置してgo buildを実行するだけで実行バイナリを作ることができます。 とても便利なのですが、一体裏で何が行われているのでしょうか? この記事ではgo buildの仕組み、簡単なシンボルテーブルの説明、Goに用意されているバイナリ操作コマンドを学ぶことができます。 実行バイナリの作成 実はGoでもC言語と同様に以下のフローで実行バイナリを生成しています。 1. ソースコードをコンパイルをしてオブジェクトファイルを作成 2. オブジェクトファイルをまとめてライブラリを作成 3. オブジェクトやライブラリをリンクして実行バイナリを作成 go buildではこれらの処理を複数コマンドにより実現しています。 コマンドの詳細はgo buildの-xオプションで確認することができます。 同一パッケージに1つのファイルしかない場合

    Go Binary Hacks - go buildせずにビルドする #golang - Qiita
  • 一瞬でGoのコンパイルを3倍速くするコマンドがこちらです - Qiita

    go runやgo build した時のコンパイル時間は、プロジェクトが大きくなるにつれて長くなるもの。コンパイルで待たされると、開発効率だけでなく、やる気も落ちてしまいますよね。 そんなときに、以下のコマンドをGoプロジェクトルートで打ってみてください。 一瞬で3倍ぐらい高速化できるはずです。 DONE! ※ rm 打つ前に、$GOPATH を正しく設定しているかどうかは事前に確認ください ※ なんで速くなるの? Goでは、以前にコンパイルしたときの中間ファイルが $GOPATH/pkg 以下に保存されます。中間ファイルがあれば、コンパイル時にそれが再利用されるので速いわけです。ただし、Go自体のバージョンや、ライブラリのバージョンが異なる場合には、再度中間ファイルを生成します。これはCPUをブンブン回すので重い。しかも、再度作られた中間ファイルはなぜか保存されず、古い中間ファイルは消

    一瞬でGoのコンパイルを3倍速くするコマンドがこちらです - Qiita
  • シンプルなScala用ビルドツール「cbt (Chris's Build Tool)」を試してみる - たけぞう瀕死ブログ

    Slickのコミッタとして有名なJan Christopher Vogtさんが作っているcbt (Chris’s Build Tool) というScala用のビルドツールがあります。*1 github.com 昨年参加したScala Days NewYork 2017でもセッションがあり、興味位で参加したのですが、sbtのdisなどもありなかなか楽しい発表でした。*2 www.youtube.com cbtの特徴 Scalaにはsbtという標準的なビルドツールが存在するわけですが、非常に難解なsbtと異なり、cbtは既存のScalaの知識だけでカスタマイズができるという大きな特徴があります。 たとえばコンパイルの前後に処理を挟む場合、compileメソッドをオーバーライドして前後に独自のScalaコードを記述し、super.compileを呼び出せばよいだけです。タスクはただのメソッドな

    シンプルなScala用ビルドツール「cbt (Chris's Build Tool)」を試してみる - たけぞう瀕死ブログ
  • Go でツール書くときの Makefile 晒す - Qiita

    Go でツール書くときはタスクランナーとして make を使っています。ビルドだけじゃなくて、テストや配布用パッケージ作成も一括して make でやっています。 今回は整理も兼ねて、自分が普段どういう Makefile を使っているのか解剖していきます。 なぜ make を使うのか ビルドフラグ覚えるのが面倒だから、make は (Windows を除く) 大半のプラットフォームに入っていて使いやすいからというのが理由です。script/build みたいにシェルスクリプトを複数用意するのでもまあ良いと思いますが…。大半の Go プロジェクトは Makefile 置いてありますね。 make を使った開発フロー 基的には、リポジトリを git clone / go get -d した後に以下のコマンドを打てばアプリケーションをインストールできるようにしています。 $ cd $GOPATH

    Go でツール書くときの Makefile 晒す - Qiita
  • DockerとMakeを利用したRPMパッケージのビルド環境 | メルカリエンジニアリング

    SREチームの@cubicdaiyaです。今回はDockerとMakeを利用したメルカリの自作RPMパッケージのビルド環境について紹介します。 メルカリの自作RPMパッケージ事情とVagrant、そしてDocker メルカリの開発およびプロダクション環境では現在CentOS6と7を利用しており、随時CentOS7へ移行中です。そのため、自作RPMパッケージをビルドする際はCentOS6と7向けにそれぞれビルドしています。ビルドしたパッケージはyumリポジトリサーバにアップロードした後、必要に応じてyumでインストール、Ansibleのplaybook化を行います。 RPMパッケージの作成はSREチームのメンバーが行っており、各自のローカルマシン上において make {パッケージ名} を実行するだけでCentOS6と7向けのRPMパッケージをビルドできる環境をDockerで構築しています。

    DockerとMakeを利用したRPMパッケージのビルド環境 | メルカリエンジニアリング
  • golangで書いたアプリケーションのstatic link化 - okzkメモ

    goで書いたアプリケーションは実行ファイルひとつコピーするだけでいいのでインスコ超ラクチン」なんて思ってたんですが、 go1.4からnetパッケージを使っているアプリケーションは、フツーにビルドするとdynamic linkになるようになってました。 $ cd /path/to/your_app $ go build $ file your_app your_app: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), not stripped そんなわけで別環境にバイナリコピーしても動かないケースが発生して超絶アタマを悩ませることになるのですが、 そんなときは以下のようにbuildすればstatic linkになってくれるようです。 $ go build

    golangで書いたアプリケーションのstatic link化 - okzkメモ
  • Dockerもシェルスクリプトも使わずGoのクロスコンパイルを行う : D-7 <altijd in beweging>

    moznion.hatenadiary.com 別にDocker使ったっていいんだけど、こっちでもできますよ、ってことで、Dockerもシェルスクリプトも使わない方法の説明。元記事を読んでわかるのは: 1. makeを使ってる 2. GOOS/GOARCHを設定してクロスコンパイルしている(gox等を使っていない) 3. Dockerであげた同一イメージ上で全てのクロスコンパイル結果を吐いている ということなので、であれば別にローカルの環境でクロスコンパイルしても何の差もなさそう。別の環境をたててクロスコンパイルしたい場合もあるが、それは例えば cgoを使っている os.User 関連のコードをコンパイルするとか、そういう時だしその場合はそれぞれのプラットフォームごとに別のホスト上でコンパイルする必要がある。それをする必要がないなら go 1.5 以降であればもうGOOS/GOARCHを設

  • Docker 使って golang で書いたツールの cross platform build をする - その手の平は尻もつかめるさ

    まず以下の様なシェルスクリプトを用意する. #!/bin/bash # ここで依存しているパッケージを go get する # 例えば以下の様な感じ # go get -v gopkg.in/yaml.v2 # go get -v gopkg.in/redis.v3 for GOOS in darwin linux; do for GOARCH in 386 amd64; do export GOOS export GOARCH go build -v -o bin/tool-$GOOS-$GOARCH main.go done done darwin と linux について,それぞれ i386 と amd64 アーキテクチャ向けのバイナリを作るようなスクリプト.main.go はビルド対象のファイル.成果物はカレントディレクトリの bin 以下に生成されるので,あらかじめ mkdir

    Docker 使って golang で書いたツールの cross platform build をする - その手の平は尻もつかめるさ
  • Gradleで陥りやすい問題点の解決策TIPS集 - 猫好きモバイルアプリケーション開発者記録

    今回はGradleでよくハマるであろうポイントを集めたTIPSを11個紹介します。 01. 依存関係のバージョンが指定されたものにならない MavenからGradleへ移行した場合、おそらく誰もが最初に陥る問題かと思います。 端的に言うと、Mavenの pom.xml で指定したままの依存関係の設定をそのまま build.gradle へ移したとしても 最終的に取得される依存関係は殆どのケースで同じにはなりません。 これは「推移的依存関係」によって同じライブラリが存在した場合に優先されるバージョンがMavenとGradleでは異なるために起こります。 推移的依存関係とは簡単に説明すると、ある依存関係がさらに依存する関係のことを言います。 MavenでもGradleでもそれらを自動的に取得しようとしますが、 それらの中で使っている依存関係のgroupIdもartifactIdも同じだがバージ

  • Walter の改良まとめ | Recruit Tech Blog

    ATL の takahi_i です。 ちょうど一年ほど前 Walter というビルドパイプラインツールをリリースしました。それからゆっくりとはですが、いまでも開発が続けられています。このブログエントリではリリース時から Walter がどう改良されてきたかについて解説します。改良されたポイントはいくつかの種類に分けられます。以下の節で各項目について解説します。 環境変数の利用 ステージで利用できるプロパティ(directory, only_if)のサポート cleanup パイプラインの追加 定義済みステージの再利用 ステージ結果の再利用 環境変数の利用 Walter のパイプライン上で環境変数を利用できるようになりました。環境変数はパイプライン設定ファイルで $VAR という表記をします。環境変数は walter コマンドの実行時に設定されているものが利用できます。たとえば、以下のコマン

    Walter の改良まとめ | Recruit Tech Blog
  • Go言語のDependency/Vendoringの問題と今後.gbあるいはGo1.5

    Go言語のDependency/Vendoringは長く批判の的になってきた(cf. “0x74696d | go get considered harmful”, HN).Go1.5からは実験的にVendoringの機能が入り,サードパーティからはDave Chaney氏を中心としてgbというプロジェクベースのビルドツールが登場している.なぜこれらのリリースやツールが登場したのか?それらはどのように問題を解決しようとしているのか?をつらつらと書いてみる. Dependencyの問題 最初にGo言語におけるDependecy(依存解決)の問題についてまとめる.Go言語のDependencyで問題なのはビルドの再現性が保証できないこと.この原因はimport文にある. Go言語で外部パッケージを利用したいときはimport文を使ってソースコード内にそれを記述する.このimport文は2通りの

  • Haskellのビルドツール"stack"の紹介 - Qiita

    Stackとは? つい先日のことですが、Stackage界隈からstackというツールがリリースされました。リリースされたとはいえ、開発され始めたのがちょっと前のことですし、現在も盛んに機能が追加されているので、絶賛開発中であるとかそういったほうがいいかもしれません。 まだ開発の始まったばかりのツールなのに、なぜこんな紹介記事を書こうと思ったのかというと、このツールがHaskellの開発において極めて有用になることが確定的に明らかであって、すでに荒削りながらも、大変便利に使えているからなのです。そしてここで紹介することで、多くの読者の方に興味を持ってもらって、それで開発がさらに盛り上がっていくと嬉しいなあと、そう思った次第であります。 なお、stackの開発が始まる少し前に、stackage-cliを始めとするいくつかのツールがリリースされましたが、今後開発はstackに一化されるような

    Haskellのビルドツール"stack"の紹介 - Qiita
  • 【翻訳】Web世代のデベロッパーのためのmake - MOL

    Original:Make for the Web Generation (2015-02-28)by Casper Beyer イントロ JavaScriptの普及に伴いビルドツールが盛んだ。人気なものをいくつか挙げれば、grunt、gulp、slush、broccoliやbrunchなどがあるが、結局、名前をつけただけにすぎない。 多かれ少なかれ、これらのツールはファイルコピーからzipファイル作成のようなシンプルなタスク処理でさえ、すべてプラグインに依存しているので、それらのタスクを実行するためにプラグインを必要とするだろう。 これらのツールは理想論的には大きな柔軟性をもたらすものとされているが、実際はUNIXのエコシステムをただ複製しているだけにすぎない。このために君のプロジェクトは早々に、大きな開発依存性のバンドルを持つことであろう、そして、やっているタスクは単なる普通のコピー、

    【翻訳】Web世代のデベロッパーのためのmake - MOL
  • makeのくびき - saneyuki_s log

    gulpって何だよ、makeでいいじゃん(要約」論争について、私もちょっと一講釈をぶってみることにする。あれやこれやといった実利的な話をするつもりはない。そういうものは既に書いた人がいるのでそちらを参照のこと。 Gruntの思い出 Gruntは、私の印象で言えば車輪の再発明の失敗作のようなもので、タスク間の依存関係が破滅への一途をたどり管理不能に至るなど、宣言型の負の側面が強く出てしまった。しかし、設定は当にサンプルコードのコピペだけで組み立てられるので、JSが不得手なデザイナーなどには非常に受けが良かったという点は忘れてはならない。ちょうど、html5ブームが格化して, Apache Antとかに慣れ親しんだJava(主にSIer)系の人が入ってきたタイミングにあった道具かつ、Yeomanファミリーにも組み込まれており、それでいて簡単な事をやらせるには悪くはない具合のシンプルさ、

    makeのくびき - saneyuki_s log
  • 最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    TypeScriptでは、コンパイルが必要です。プログラムをブラウザーとNode.jsの両方で使おうとすると、さらに加工が必要です。ミニファイだの文書も作るだのすると、ちょっとしたビルドプロセスとなるので手作業では辛くなります。 今更Makeでもないよなー、と思い、最近のビルドツールを試してみました。 内容: 流行りすたりが激しすぎる gulpを使ってみる:こんなサンプル gulpのビルドスクリプト タスクランナーってのはビルドツールとは違うのか? ビルドツールは進化したのか 参考資料: 例題のファイルとコマンドの一覧 ソースファイル 追加の話: gulp問題ひきずり:ウォッチがまたおバカ過ぎる 流行りすたりが激しすぎる 「確かGruntってツールがあったよな」と、インストールと使い方を調べていると、やたらにgulpって単語が目立つんですよね。Gruntのライバルの新興勢力らしいです。 「

    最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • シンプルなビルドパイプラインツールwalterをリリースしました - Advanced Technology Lab

    APソリューショングループの相野谷(@ainoya)です.このたびATLと共同で,CIやCDにおけるビルドパイプラインの実行を手助けする小さなツールwalterを開発しました. 開発の動機: Jenkinsプラグインに強く依存するビルドパイプライン設定 Jenkinsを使ってCIを実現する場合,複数のジョブを繋げて一連の処理フロー(ビルドパイプライン)を作るのが一般的かと思います.Jenkinsには,ビルドパイプラインを構成するための便利なプラグインがあり,これを使って失敗時の実行制御や,ジョブの並列実行制御を簡単に設定できます. ところが,こうしたプラグインで実際にCIを運用してみると,ちょっと惜しい点がいくつか出てきました. パイプラインの全体実行フローをJenkins上でしか確認できない Jenkinsジョブを実際にキックするまで動作が確認できない 設定の移行がしづらい.GUI中心で

    シンプルなビルドパイプラインツールwalterをリリースしました - Advanced Technology Lab