JenkinsのスクリプトをGitHub Actionsに書き換える
Jenkins の Pipeline スクリプトと同じことが、GitHub Actions で出来るというので、やってみることにしました。
以前に作成した Jenkins のスクリプトをもとに作成します。
GitHubでリポジトリを作成する
まず、GitHubで新しいリポジトリを作成します。Add a README file にチェックをつけておきます。
ローカル環境でスクリプトを作成する
Git Cloneしてローカル環境にコピーします。私はVSCodeを使っています。myactiontestというのが、ここでのリポジトリ名です。main.yml、setup.sh、 submitjob.shという3つのファイルを追加しました。
.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コメントでいつ実行したか分かるようになっています。
まとめ
GitHub ActionsでJenkinsと同じことができると、Jenkinsのためにサーバーを立てたり、それを管理する手間から解放されて良いですね。
今回は、ある意味シェルスクリプトを実行しているだけですが、もっと複雑なことができるかは、これから調べていこうと思います。
この記事が気に入ったらサポートをしてみませんか?