見出し画像

JenkinsのスクリプトをGitHub Actionsに書き換える

Jenkins の Pipeline スクリプトと同じことが、GitHub Actions で出来るというので、やってみることにしました。

以前に作成した Jenkins のスクリプトをもとに作成します。

GitHubでリポジトリを作成する

まず、GitHubで新しいリポジトリを作成します。Add a README file にチェックをつけておきます。

スクリーンショット 2020-11-23 9.57.34

ローカル環境でスクリプトを作成する

Git Cloneしてローカル環境にコピーします。私はVSCodeを使っています。myactiontestというのが、ここでのリポジトリ名です。main.yml、setup.sh、 submitjob.shという3つのファイルを追加しました。

スクリーンショット 2020-11-23 10.22.16

.github/workflows というフォルダを作成して、以下のようなYAMLファイルを作成しています。

main.yml

name: learn-github-actions
on: [push]
jobs:
 submitjob:
   runs-on: ubuntu-latest
   env:
     user: ${{ secrets.USER }}
     pass: ${{ secrets.PASS }}
     host: "--host 192.86.32.250 --port 10443 --ru false"
   steps:
     - uses: actions/checkout@v2
     - uses: actions/setup-node@v1
     - name: local setup 
       run: ./setup.sh
       shell: bash
     - name: submit job
       run: ./submitjob.sh
       shell: bash

on: [push]というのは、GitHubにpushされた時に、このアクションが実行される、という意味です。

runs-onというのが、Jenkinsのagentに相当します。GitHub Actionsの内部にBuild用の仮想環境を立ち上げて、その中でstepsに記述した処理を実行します。

envというのは、環境変数です。この位置で env を記述すると、以下に記述する全てのstepでこの環境変数が使えるようになります。

ここで、user、passというのは、いつも使っているメインフレーム環境のログイン情報です。セキュリティ保護のため、GitHubのSecretsを使っています。リポジトリのSetting タブから、サイドメニューの Secretsで設定します。

uses: actionsは、GitHubにあらかじめ用意されたコマンドです。

checkout@v2は、Githubリポジトリからファイルをチェックアウトします。@v2というのはバージョン番号で、@v2まで含めてコマンドになります。

setup-node@v1は、Node.js 環境をセットアップします。これを実行することで、npmなどのコマンドが実行できるようになります。

nameでは、シェルスクリプトを実行しています。Bashシェルを実行するときには、上記のように、name, run, shellの3行が必要なようです。

シェルスクリプトの内容は下記の通りです。リポジトリのルートフォルダに置いています。

setup.sh

#!/bin/bash
npm config set @brightside:registry https://api.bintray.com/npm/ca/brightside
npm install -g @brightside/core@lts-incremental
zowe plugins install @brightside/cics@lts-incremental
zowe profiles create zosmf LearnCOBOL $host --user $user --pass $pass --ow

submitjob.sh

#!/bin/bash
stdout=`zowe jobs submit ds "${user}.JCL(HELLO)" --rff jobid --rft string --wfo`
zowe jobs view sfbi $stdout 104

GitHub にスクリプトを push する

スクリプトの作成が終わったら、GitHubにpushします。on: [push]で指定した通り、pushと同時にmain.ymlのアクションが実行されます。

実行結果は、Actionsタブで見ることが出来ます。commitコメントでいつ実行したか分かるようになっています。

スクリーンショット 2020-11-23 10.39.47

スクリーンショット 2020-11-23 10.45.51

まとめ

GitHub ActionsでJenkinsと同じことができると、Jenkinsのためにサーバーを立てたり、それを管理する手間から解放されて良いですね。

今回は、ある意味シェルスクリプトを実行しているだけですが、もっと複雑なことができるかは、これから調べていこうと思います。


この記事が気に入ったらサポートをしてみませんか?