Jenkins+Python+unittest
(2020/05/06:追記)こっちを見たほうが良いです。
Jenkinsでpythonのunittestを実行します。
- jenkins: 2.234
Python周りの設定
Python3のインストール
EC2にはデフォルトでPython2系が入っているので3系を入れる。
$ sudo yum update $ sudo yum install python3
venvは使いません。必要になったときにやる。
ShiningPanda Pluginのインストール
- Jenkinsの管理>プラグインの管理より「ShiningPandas Plugin」を検索してインストール。
- Jenkinsの管理>Global Tool ConfigurationよりPython3を追加する。
これでJenkinsでPython3系が使えます。
ジョブの作成
Python3読み込みテスト
Python3を使えるようになっているか確認します。
- フリースタイルプロジェクト>ビルド>ビルド手順の追加>Virtualenv Builderを追加。
- 先程追加したPython3を選択して下記のshellを書く。
python --version
これでジョブを保存してビルドを実行。
ジョブのコンソール出力を確認。
+ python --version Python 3.7.6
OK。認識できてますね。
unittestジョブの作成
さて本題です。ジョブの構成は下記の通り。
- Githubからclone
- unittest実行
これだけ。今後はポーリングやフックスクリプトを起点に実行するつもり。ひとまずはジョブの作成。先程の確認用ジョブを書き換えていきます。
1. Githubからclone
ソースコード管理>gitからリポジトリURLを追加するだけ。
2. unittest実行
Virtualenv Builderのshellを下記の通り変更。
pip install -r requirements.txt python -m unittest
Jenkinsとは関係ないんだけど__init__.py
がディレクトリにないとtestが認識されないんですね。テスト結果の集計をしたいけどもう夜も更けているのでここまでで。
ジョブの実行
失敗しました。環境変数がとれなかったようです。外部APIのテストやるわけじゃないしここもMockにした方がいいのかな?今回はJenkinsの勉強を兼ねてGUIから環境変数を追加してみます。
Jenkinsの管理>システムの設定>グローバルプロパティより環境変数を追加。
再度ジョブを実行します。
+ python -m unittest .... ---------------------------------------------------------------------- Ran 4 tests in 0.134s OK
OK。おやすみ〜
停止しているインスタンスにElastic IPアドレスを関連付けていると課金される
Amazon Web Services 基礎からのネットワーク&サーバー構築
インフラ弱いのとAWSの基礎をやりたいなと思ったので購入しました。AWSは各種サービスを必要に応じてつまみ食いしてる感じです。
内容
目次
感想
名前の通り「基礎からのネットワーク&サーバー構築」でした。 VPCにWebサーバーとDBサーバーを立ててブログシステムを作るまでのハンズオン。200ページほどで図も多いため一日もかからず終わる内容です。
AWSは実地検証のために用いるのであって詳しく書かれている訳ではないです(アカウント作成から載っているのかと思った)ネットワーク&サーバーに関しても本当に基礎の基礎だけです。基礎を学ぶならもう一冊必要だと感じました。
一昔前はローカルにVirtualBoxなどで仮想環境を作成して学んでいたものがAWSに置き換わった感じなのかなあと。ハンズオンは有用だしAWSは学んで損はないので入門としては中々良いかも。
最後にひとつ気になったこと。サーバー2台立てるわけだけどこのままほっとくとEC2の無料枠超える気がする。停止した方がいいとは書いてなかった気がするけど見落としなのか手厳しいのか…
javascript:;
AWS Amplifyのチュートリアルをやろうと思ったけど途中で辞めた
なんかやりたいなと思ったのでAWS Amplifyのチュートリアルをやります。
サービスについてはよく知りません。バックエンドをいい感じにしてくれるらしいです。
以下、チュートリアルに沿って進めていくのですが途中で断念しました。設定を誤ってチュートリアルと違う内容になっていたようです。やり直す気もなかったので辞めてしまいましたが日記として記事には残しておきます。
セットアップ
macにNode.jsが入っていなかったのでまずはそこから。
Node.js
バージョン管理用のnodebrewをインストール。
$ brew install nodebrew
Node.jsをインストール…しようと思っらエラー。
$ nodebrew install-binary latest Fetching: https://nodejs.org/dist/v13.12.0/node-v13.12.0-darwin-x64.tar.gz Warning: Failed to create the file Warning: /Users/user/.nodebrew/src/v13.12.0/node-v13.12.0-darwin-x64.tar.gz: Warning: No such file or directory
こちらのサイトを参考にディレクトリを作成してなんとかなりました。
$ mkdir -p ~/.nodebrew/src $ nodebrew install-binary latest Fetching: https://nodejs.org/dist/v13.12.0/node-v13.12.0-darwin-x64.tar.gz ######################################################################### 100.0% Installed successfully
パスを通して完了。
$ vim .zshrc # 下記を追加 export PATH=$HOME/.nodebrew/current/bin:$PATH $ source ~/.zshrc $ node -v v13.12.0
Amplify
$ npm install -g @aws-amplify/cli $ amplify configure
このあと説明に沿ってリージョンとIAMユーザーの設定を行います。
Step 1. Create a New App
npx
でローカルにないパッケージを実行できることを初めて知りました。create-react-app
よりReactプロジェクトを作ります。
$ npx create-react-app amplify
$ cd amplify
作成したディレクトリ内にAmplifyをインストール。
$ npm install @aws-amplify/api @aws-amplify/pubsub $ npm install aws-amplify-react
Step 2: Set Up Your Backend
$ amplify init
いろいろ聞かれるので答えます。
? Enter a name for the project amplify ? Enter a name for the environment test ? Choose your default editor: Visual Studio Code ? Choose the type of app that you're building javascript Please tell us about your project ? What javascript framework are you using react ? Source Directory Path: src ? Distribution Directory Path: build ? Build Command: npm run-script build ? Start Command: npm run-script start
何も分からずに進めていて早くも飽きてきました。
Step 3: Add API and Database
GraphQLのAPIを追加するっぽいです。GraphQLは名前聞いたことあるくらいで全く分かりません。
$ amplify add api
いろいろ聞かれるので答えます。
? Please select from one of the below mentioned services: GraphQL ? Provide API name: amplify ? Choose the default authorization type for the API API key ? Enter a description for the API key: ? After how many days from now the API key should expire (1-365): 7 ? Do you want to configure advanced settings for the GraphQL API No, I am done. ? Do you have an annotated GraphQL schema? No ? Do you want a guided schema creation? No ? Provide a custom type name MyType
これで設定を反映するのかな?もう分かりません。
$ amplify push
眠いです。今日やるべきではなかったかもしれない。
? Do you want to generate code for your newly created GraphQL API Yes ? Choose the code generation language target javascript ? Enter the file name pattern of graphql queries, mutations and subscriptions sr c/graphql/**/*.js ? Do you want to generate/update all possible GraphQL operations - queries, muta tions and subscriptions Yes ? Enter maximum statement depth [increase from default if your schema is deeply nested] 2
Step 4: Integrate into your app
コードが出てきて少しモチベーションが上がりました。久しぶりにReact触ります。
App.js
import React from 'react'; import API, { graphqlOperation } from '@aws-amplify/api'; import PubSub from '@aws-amplify/pubsub'; import { createTodo } from './graphql/mutations'; import awsconfig from './aws-exports'; import './App.css'; // Configure Amplify API.configure(awsconfig) PubSub.configure(awsconfig) const createNewTodo = async () => { const todo = { name: "Use AWS Async", description: "Realtime and Offline"} await API.graphql(graphqlOperation(createTodo, {input: todo})) } const App = () => { return ( <div className="App"> <button onclick={createNewTodo}>Add Todo</button> </div> ); } export default App;
最初の修正の段階でエラー。
Failed to compile. ./src/App.js Attempted import error: 'createTodo' is not exported from './graphql/mutations'.
指摘されているファイルは自動生成したものなのでAPIを追加するとことかでチュートリアルと違う内容を設定してしまったのだと思います。
というわけでここで断念。ちゃんと理解しながらすすめるべきだなあという感じ。おしまい。