kuniku’s diary

はてなダイアリーから移行(旧 d.hatena.ne.jp/kuniku/)、表示がおかしな箇所はコメントをお願いします。記載されている内容は日付およびバージョンに注意してください。直近1年以上前は古い情報の可能性が高くなります。

GitHub ActionsのCI と maven(Java with Maven)その2

Tips

  • 以前はOracleJDBCドライバーのjarをsystempathでなく、Actionsの ~./m2 にinstallして使う方法でした
  • 今回はmavenリポジトリのキャッシュ・依存関係をキャッシュ
    • キャッシュすることでワークフローの実行時間を短くできます。実際のプロジェクトでwarにしたときにWEB-INF/libに入るjar30個くらいある場合で1分程度短くなった。Actionsは利用時間分で無料利用枠がある、その利用時間は1ヶ月単位でリセットされる。

依存関係のキャッシング

    - name: Cache Maven packages
      uses: actions/cache@v1
      with:
        path: ~/.m2
        key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
        restore-keys: ${{ runner.os }}-m2

    - name: Build with Maven
      run: mvn clean package -P release -f ./foo-project/pom.xml

Windowsでオーディオ声がでなくなる

リモートデスクトップ接続していて、接続元(クライアント側)で音声がでなくなる

  • 音がでなくなるのは、
    • クライアント側がスリープや画面電源オフやRDP接続を自前で切断したとき
    • RDP接続が切れて自動接続が成功・失敗どちらも

対処

コマンドプロンプトを「管理者で実行」で実行し

net stop audiosrv
net stop audioendpointbuilder
net start audiosrv

を実行する。 batファイルにしておけばいつでも実行できる。

GitHub ActionsのCI と maven(Java with Maven)

すごい久しぶりに、mavenコマンドを触っている。 いつぶりだろうpomをいろいろ、プロファイルを切り替えたり、自前で作成したのは2014年くらいが最後だったかな? その後は誰かの後のメンテナンスでしか触っていない。

mavenリポジトリにない Oraclejdbcドライバのjarをローカルにinstallする

  • 構成上、libをフォルダを作成して、そこにjarを置いてしまう。自前で使えるmavenリポジトリがあるわけではないため。
      run: mvn install:install-file -Dfile=./foo-project/lib/ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar
  • 例)pom xmlにsystemPathで書いている場合
<dependency>
・・・
  <scope>system</scope>
  <systemPath>${project.basedir}/lib/ojdbc14.jar</systemPath>
</dependency>

pomファイルを指定してmvnを実行

リポジトリA .github /workflows /maven.yml foo-project /lib/ojdbc14-10.2.0.4.0.jar /pom.xml foo-war foo-batch .gitignore readme.md

みたいな場合に、 foo-project/pom.xml があって、それをもとにビルドをすると仮定 ローカルの開発環境でビルドしているときに、以下の場合は

 cd ./foo-project/
 mvn clean package -P production -f pom.xml

でビルドしているならば

maven.yml では 相対パス指定でビルドさせるように記述する

run mvn clean package -P production -f ./foo-project/pom.xml

ビルドまでできるようにした yml 、半角スペースは必要なので注意

.github/workflows/maven.yml

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 1.7
      uses: actions/setup-java@v1
      with:
        java-version: 1.7
    - name: Install ojdbc14-10.2.0.4.0.jar
      run: mvn install:install-file -Dfile=./foo-project/lib/ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar
    - name: Build with Maven
      run: mvn clean package -P dev -f ./foo-project/pom.xml

疑問と残

githubのyml修正してマージする前にローカルで同じことを試せる(mvn実行をできる)方法ないのかな?

Eclipse4.6とTomcat8.5

tomcat8.5を動かす( tomcat8.0系、tomcat9.0系のwtp plugin でtomcat8.5系を動かす)、8.5系のpluginは使わずに。

  • pluginでの画面での以下のメッセージが表示されている前提 「The Apache Tomcat installation at this directory is version 8.5.55. A Tomcat 8.0 installation is expected.」
  • java7で動かすには、tomcat8.0系のpluginになるであろう(Tomcat9はjava7は対応でないため)。

stackoverflowにあった対応

stackoverflow.com

tomcat8系のpluginで、tomcat8.5系内のjarを修正するパッチを作成して対応

  • 原文まま
To patch you can do the following:

cd [tomcat or tomee home]/lib
mkdir catalina
cd catalina/
unzip ../catalina.jar
vim org/apache/catalina/util/ServerInfo.properties
Make sure it looks like the following (the version numbers all need to start with 8.0):

server.info=Apache Tomcat/8.0.0
server.number=8.0.0
server.built=May 11 2016 21:49:07 UTC
Then:

jar uf ../catalina.jar org/apache/catalina/util/ServerInfo.properties
cd ..
rm -rf catalina
  • 基本、上記でやればOK

windowsでの場合の例

  1. 作業ディレクトリ C:\app\ec460\tomcat\ に apache-tomcat-8.5.55.zip を展開

    C:\app\ec460\tomcat\apache-tomcat-8.5.55 になるので、リネーム C:\app\ec460\tomcat\8.5.55 <

  2. catalina.jar を展開するzip展開は、windows標準でのzip解答(ラプラス等を使っても良い)で良い。

    cd C:\app\ec460\tomcat\8.5.55\lib <

  3. ServerInfo.propertiesを編集

    C:\app\ec460\tomcat\8.5.55\lib\catalina\org\apache\catalina\util\ServerInfo.propertiesを編集して保存 <

    server.info=Apache Tomcat/8.0.0 server.number=8.0.0 server.built=May 11 2016 21:49:07 UTC < の3行に変更すれば良い

  4. パッケージング

    • コマンドプロントcmd.exe 起動 し、java7を有効にする

      set JAVA_HOME=C:\app\java\7 <

    • java -version」コマンドを実行し、以下のような表示になること

      java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

  5. ここから、jarコマンド使って再パッケージングする

    cd C:\app\ec460\tomcat\8.5.55\lib\catalina
    C:\app\ec460\tomcat\8.5.55\lib\catalina>jar uf ../catalina.jar org/apache/catalina/util/ServerInfo.properties
    C:\app\ec460\tomcat\8.5.55\lib\catalina>cd ..

  6. 後は、eclipseのpluginでの設定画面で 「tomcat v8.0サーバー 」で 「C:\app\ec460\tomcat\8.5.55」を選ぶ

Git remote: Repository not found

Repository not found

  • cloneもpushもできない

Mac 3.1.2 (216) SourceTreeで 「remote: Repository not found」 が発生する

対応

Git git cloneでremote: Repository not foundが出たら | ハックノート を参考に

git clone https://username:password@github.com/org/project.git

でなんとか回避できた

なお、

git clone https://username@github.com/org/project.git

だと回避できず、リポジトリが無い!「remote: Repository not found」となったまま。

その他

  • Windows版のSourceTreeでは同じような現象は発生せず、問題なし
  • Windows版のSourceTreeとTortoiseGitを合わせればMacよりも使い勝手が良い。
    • 特にTortoiseGitはいい感じにつくられている
  • Githubで手軽に使うならGithubDesktopが良い