Corredor

ウェブ、プログラミングの勉強メモ。

Jenkins と Bitbucket のブランチ指定入り Push 連携がうまくいかなかったのでやり方を変えた

Jenkins の Declarative Pipeline ジョブを使って、Bitbucket リポジトリをポーリングし、「ビルドするブランチ」を develop ブランチに指定したジョブを作っていたのだが、どうも feature ブランチに対する Push 時にもこのジョブが反応して、feature ブランチのコミットを対象に作業してしまう。

「ビルドするブランチ」でブランチを絞るだけではダメなのか?よく分からん!となったので、実行するシェルスクリプト側で Git のブランチ名を見て判定してやることにした。

Jenkins が Bitbucket への Push をトリガーにジョブを実行する際、内部的には以下のようにコミット ID を指定してチェックアウトしている。

git checkout -f 722f178e0dca1c17d4233aa1936180d92bdd9fc7

このようにチェックアウトされると、git branch でブランチ名を確認できないので、違う方法でブランチ名を判定する必要がある。

最初に見つけたのは git rev-parse --abbrev-ref HEAD というコード。コレを条件文に当てはめたらどうかと試してみた。

[ $(git rev-parse --abbrev-ref HEAD) = 'develop' ] && echo OK || echo NG

しかしコレだと、上述のようなコミット ID でチェックアウトした時は HEAD という文字列しか取れないので、develop というブランチ名とイコールにならず失敗。

次に見つけたのは、git log からブランチ名を拾う、git log -1 --pretty=%d HEAD というやり方。コレが上手く行った。

[[ `echo $(git log -1 --pretty=%d HEAD) | grep 'develop'` ]] && echo OK || echo NG

コレなら (HEAD, origin/develop) という文字列が取れるので develop を含むかどうかでチェックができる。

実際は以下のようにすることで、develop ブランチへの Push 時のみ、任意のコマンドを実行できた。

[[ `echo $(git log -1 --pretty=%d HEAD) | grep 'develop'` ]] && npm run build || echo Skip Build

残念ながら、feature ブランチへの Push の時もこの Jenkins ジョブが発火してしまうので、Skip Buildecho 文のみを吐いて正常終了する無駄なジョブが混じるのだが、仕方なし。

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

Swift iOS アプリで画面の明るさを取得・変更する

Swift 4・iOS 11 で画面の明るさを取得したり、変更したりする方法。

環境情報

  • 対象 iOS バージョン:v11.3
  • Xcode:v9.3 (9E145)
  • Swift:v4.1 (swiftlang-902.0.48 clang-902.0.37.1)

明るさの取得方法

明るさを取得するには、UIScreen.main.brightness の戻り値を控える。型は CGFloat となる。

class ViewController: UIViewController {
  // 明るさを控えておく変数
  var currentBrightness: CGFloat = 0.0
  
  // 明るさを取得する
  func getCurrentBrightness() {
    currentBrightness = UIScreen.main.brightness
  }
}

明るさの変更方法

明るさを変更するには、UIScreen.main.brightnessCGFloat 型の値を代入するだけ。値は 0 から 1 の間で設定する。

// 明るさを 50% に設定する
UIScreen.main.brightness = 0.5

[改訂新版]Swiftポケットリファレンス (POCKET REFERENCE)

[改訂新版]Swiftポケットリファレンス (POCKET REFERENCE)

  • 作者: WINGSプロジェクト片渕彼富,山田祥寛
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/03/09
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

Oracle DB でのプロシージャの作り方

Oracle DB でプロシージャを作り、それを呼び出す方法。

-- プロシージャを作る
Create Or Replace Procedure myProcedure (
  param In Varchar2
)
Is
  var Number;
Begin
  Execute Immediate
    'SELECT hoge FROM my_table WHERE name = ''' || param || '''' Into var;
  If var = 0 Then
    Dbms_Output.Put_Line('0件でした');
  Else
    /* 1件以上取得できた時の処理 */
  End If;
End;
/

-- プロシージャの呼び出し
Call myProcedure('ParameterString')

プロシージャの中身は PL/SQL。

  • カッコ内の パラメータ名 In 型, パラメータ名 In 型 でパラメータ宣言。
  • その次の Is で、Is 変数名 型; 変数名 型 と書いていって変数宣言ができる。
  • Execute Immediate で動的 SQL を実行できる。

プロシージャを呼び出す時は、Call プロシージャ名(パラメータ) で呼び出す。

基礎からわかる PL/SQL

基礎からわかる PL/SQL

  • 作者: 高山昌悟,横山弘典
  • 出版社/メーカー: シーアンドアール研究所
  • 発売日: 2015/01/24
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

Oracle DB でカラムの順序を変更するには

Oracle DB でカラムの順序を入れ替えたりするには、ALTER TABLE では操作できないので、以下のように操作する。

-- 元となる table_1 からカラム順を変更して SELECT し、table_2 を作る
CREATE TABLE table_2 AS SELECT column_c, column_b, column_a FROM table_1;

-- table_1 を削除する
DROP TABLE table_1;
-- 削除するのが怖ければリネームして退避する
-- RENAME table_1 TO table_before;

-- 先ほど作成した table_2 を table_1 にリネームして元に戻す
RENAME table_2 TO table_1;

このように、カラム順を変更したいテーブルのコピーを CREATE TABLE ... AS SELECT で作れば良い。

【オラクル認定資格試験対策書】ORACLE MASTER Bronze[12c SQL基礎](試験番号:1Z0-061)完全詳解+精選問題集(オラクルマスタースタディガイド)

【オラクル認定資格試験対策書】ORACLE MASTER Bronze[12c SQL基礎](試験番号:1Z0-061)完全詳解+精選問題集(オラクルマスタースタディガイド)

  • 作者: エディフィストラーニング株式会社,西昭彦,飯室美紀,鈴木佐和,岡野友紀,矢島祐子
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2014/03/21
  • メディア: 単行本
  • この商品を含むブログ (2件) を見る

【オラクル認定資格試験対策書】ORACLE MASTER Bronze[Bronze DBA 12c](試験番号:1Z0-065)完全詳解+精選問題集(オラクルマスタースタディガイド)

【オラクル認定資格試験対策書】ORACLE MASTER Bronze[Bronze DBA 12c](試験番号:1Z0-065)完全詳解+精選問題集(オラクルマスタースタディガイド)