發表文章

目前顯示的是有「gcp」標籤的文章

GCP DevOps 實作系列四 連接 Jenkins 與 BitBucket

圖片
接續  GCP DevOps 實作系列三 設定 BitBucket ,接下來要在 Jenkins 中新增工作並抓取 BitBucket 儲存庫內容 [步驟四 連接 Jenkins 與 BitBucket] 回到 Jenkins,並建立一個新作業 devops (可自取),類型一樣使用 Free-Style 軟體專案。 在原始碼管理中,選取 git,並填入   GCP DevOps 實作系列三 設定 BitBucket  文中建立的儲存庫連結 接著在建置觸發程序中選擇 Build When a change is pushed to BitBucket,意思是當 BitBucket 儲存庫發生變化時 (push) 會觸發 Jenkins 執行 devops 工作 *注意 對應的 BitBucket plugin 必須要先安裝才會看到Build when a change is pushed to BitBucket 這個選項 設定完成後,可以利用儀表板上的馬上建置功能進行測試,結果可在 devops作業中的 Console Output 查看 *注意 由於儲存庫上還沒有任何資料,所以第一次的測試應該會失敗,可以嘗試上傳檔案到儲存庫後再進行測試 接著,我們嘗試新增檔案到儲存庫中。 在 BitBucket Overview 中,可以建立一個 Readme 檔案 更新完內容之後,點擊 Commit。這時候回到 Jenkins,就會發現變更已經被偵測到,指定的 devops作業就會開始執行 到這裡,自動化流程差不多已經完成一半。接下來進入下一步,運行 docker

GCP DevOps 實作系列二 設定Jenkins

圖片
接續  GCP DevOps 實作系列一 建立執行個體 ,接下來要進行 Jenkins 的設定 [步驟二 設定 Jenkins] 第一次使用 Jenkins 時,可透過畫面指示找到一個預設的密碼,位置在 /var/lib/jenkins/secrets/initialAdminPassword *可透過  GCP DevOps 實作系列一  中提到的 SSH 連線到主機後取得 選推薦安裝 接下來就會進入安裝畫面 接著建立使用者 完成後就可以開始使用 Jenkins 由於這次的範例是使用 BitBucket 管控程式碼,為了讓 Jenkins 能夠與 BitBucket 溝通我們必須要安裝對應的 plugin,選擇 管理 Jenkins > 管理外掛程式 進入外掛程式管理後,選擇 可用的 > 輸入過濾條件 bitbucket > Bitbucket plugin 並直接安裝 安裝好 plugin 之後,可以嘗試建立一個 job 確認 Jenkins 是否可以正常運作。 首先,點選新增作業。進入新增作業頁面後,給予一個工作名稱 first_job (可自取) 並選擇 建置 Free-Style 軟體專案 接下來在建置段落中選擇執行 Shell  並鍵入 docker run hello-world 這個測試工作的目的只是確認 Jenkins 可以正常運作並執行 docker 指令,該指令會嘗試將 hello-world 映像檔 (image) 運行在容器 (Container) 中。 儲存後,點選儀表板左側的馬上建置,first_job 中所指定的工作就會被執行。 點選已執行任務後可在 Console Output 中看到 log,我們會發現 docker 發現沒有 hello-world 這個映像檔後,會自動抓取。成功下載後再建立容器運行映像檔 接下來要產出一組 RSA key 以供 Jenkins 能夠連到 BitBucket 取得程式碼 1. 透過 ssh 連到主機 2. 執行  sudo su jenkins 切換成 jenkins...

GCP DevOps 實作系列一 建立執行個體

圖片
今天來分享一下如何在 GCP 上建置 DevOps CI/CD 環境。以下針對使用的工具與環境做說明 Docker : 軟體容器平台 (Software Container Platform),輕量級的虛擬環境,可將軟體部署至獨立容器中的過程自動化 Jenkins : 開源的持續整合工具。我們需要使用它來執行一系列的自動化的工作包括監控程式碼的變化、重新測試與建置環境等等,以達到持續整合的目的。 BitBucket : 可以免費使用的程式碼版本控制平台。相較於 github,BitBucket可以建立不公開的儲存庫 (private repository),並提供五人以下同時使用,非常適合小型專案開發。 ubuntu 16.04 LTS : GCE 提供的映像檔 [前提備註] 目前 GCP 提供 300美金 / 年的免費專案,在規範資源內可以任意使用 GCP 的資源。當申請好帳號時,可至  GCP Console  申請免費試用。過程會需要提供信用卡資料,不過不必擔心會被收取費用,因為如果額度用完或者超過期限,專案會凍結。除非你決定要繼續使用則可手動解除。如需要知道更多內容可參考  免費試用 。完成申請之後就可以開始建置環境 [步驟一 建立執行個體] 首先我們需要建立一個執行個體,可在 Computer Engine > VM 執行個體 > 建立 填入名稱並指定區域以及機器等級還有預設的系統。 有兩種方法可以安裝需要的軟體例如 docker, Jenkins 等等。第一種方式可以在成功建立執行個體後逐一安裝,第二種方式我們可以在建立執行個體時,直接把需要的軟體透過 script 安裝進去。為了方便起見我們使用第二種方式如下 在開機指令碼中填入開機後所需要執行的 script,使用的 script 如下 script 看似複雜,其實也不過就是安裝個別軟體。 * 特別注意  useradd jenkins -G docker -m 如果想要讓 jenkins 執行 docker 指令則需要把 jenkins 加到 docker 群組中 * 特別注意  echo "jenkins ALL= NOPA...

如何新增使用者並開放 sudo 權限以及取消輸入密碼的要求

測試作業環境:GCE ubuntu 16.04 LTS 映像檔 如果想在 ubuntu 中加入一個新的 user,可以利用 sudo useradd [使用者名稱] 新增 例如新增一個使用者 james: sudo useradd james 執行上面指令後 james 就會被新增到系統中,之後如果需要執行 sudo 的指令,可以把 james 轉成 sudoer,最簡易的做法是直接把 james 指定為 sudo 的群組成員如下 sudo adduser james sudo 如果想確定是否加入成功可以執行下列指令,該指令會列出 james 所隸屬的群組 (sudo) groups james 成功加入 sudo 群組後,當執行 sudo 命令時,每次系統都會提示需要輸入密碼,相當的麻煩。如果你需要利用這個使用者來執行一些背景工作的時候也會相當困擾。有兩種修改方式 1. 修改 /etc/sudoers 檔案,開啟檔案後新增一筆權限說明 james ALL=(ALL) NOPASSWD: ALL 2. 如果 /etc/sudoers 有指定參考 /etc/sudoers.d 目錄,則在 /etc/sudoers.d 底下新增一個檔案 james.user 填入以下內容 james ALL=(ALL) NOPASSWD: ALL 修改成功後,之後 james 在使用 sudo 指定的時候就不需要再輸入密碼

How to upload file to Storage without login

圖片
In order to upload file to Storage without login google account, we have to implement policy document. After that, user can upload file to Storage from web page via Form directly. There are 4 rough steps: Service Account p12 file, it can be created at  GCP Console   Uploading object metadata, including Bucket Key ACL Expiration, for more information:  Policy Document encryption fill above info to Form, upload file Step One:p12 file After login GCP Console , you can generate p12 file via API Manager -> Credentials -> Create credentials Only Storage Admin assigned because we utilize Storage service only. If you need more permissions for other services, please refer available roles. Please save your p12 file properly because there is only one chance to download the file. Step Two:uploading object metadata According to  Policy Document , JSON format is required for uploading object metadata. There are two major parts:...

如何在不登入的情況下開放使用者上傳檔案到 Storage

圖片
找了好久終於找到  Policy Document  能夠在不登入 Google Account 的情況下,讓使用者能夠直接在網頁中透過 Form 上傳檔案到 Storage。 以下將分成四個部分來說明,先大致敘述一下流程 準備 Service Account p12 檔,可在 GCP Console  建立 準備要上傳物件的描述內容,包括 Bucket Key ACL Expiration 等等,其他內容可以參考  Policy Document 加密 將資訊填入 Form 後,上傳檔案 第一步:準備p12檔 登入  GCP Console  後可在 API 管理員 -> 憑證 -> 建立憑證 連結裡建立需要的憑證檔案 由於我們只需要用到 Storage 的功能,所以再分配角色權限上只需要分配對應的權限即可,如果需要用到其他服務則可參考能分配的權限進行分配。 建立好建立好服務帳戶後,p12檔會自動下載 到本機端。這個檔案只有一次下載機會,請務必保管好。 第二步:準備上傳物件的描述內容 根據  Policy Document  的說明,我們必須使用 JSON 格式來描述要上傳檔案的內容。其中必填的兩大項為  expiration:過期時間 ( ISO8601 格式),當每次簽署  Policy Document  時,需要指定一個有效期限,當超過有效期限,則簽署會失效 conditions:描述上傳檔案內容 範例: {"expiration":"2017-04-24T11:11:51+02:00",   "conditions":[{"bucket":"upload"}, {"key":"myimg.png"}]} PHP Sample Code 第三步:加密 這個步驟要小心注意加密的順序,以及確認 p12 所在位置無誤 policy 必須是 utf-8 編碼 => policy_utf Base64 encode (policy_utf) => policy_...