のツールバーをバックアップする
6586 ワード
Google Appsのスクリプトは驚くべきものです.任意のサーバーを設定せずに、私たちはcollecting form responses、電子メールマーケティングキャンペーンなどの多くのことができますが、開発者として、我々はGitHubのようなバージョン管理システムになるように我々のコードが好きです.このブログでは、Githubアクションを自動的にバックアップし、Google AppsのスクリプトをGithubに設定する方法について説明します.
内容
新規なリポジトリ
重要なファイル
243879182ギタブアクションを設定する
Githubアクション秘密
必要条件
開始する前に、次のように設定したと仮定します.
Google Appsスクリプトプロジェクト
インストール
Clasp Googleツールは、ローカルのアプリケーションスクリプトプロジェクトを開発することです.これは、コマンドラインAppsのスクリプトプロジェクトのための短いです.留め金の設定は簡単です.Googleでこのamazing guideに従って、Githubのアクションを設定しながら、後で使用されるログイン資格情報を取得します.
ログインに成功したら、次のコマンドを使用して資格情報ファイルの内容を取得します.
cat ~/.clasprc.json
新しいリポジトリの作成
要件に応じて、Githubに新しいパブリック/プライベートリポジトリを作成します.新しいリポジトリを作成したら、Aを追加します.Gitignoreファイルには次の内容があります.
.*.json
これは、我々の資格情報ファイルが倉庫にコミットされるのを防ぎます.重要なファイルの追加
現在、倉庫に若干の新しいファイルを加える時間です.
)設定.sh
このスクリプトは、私たちが後に設定されるGithubアクションの秘密から既にログインしている資格情報を使用することによって、再びログインするのを防ぎます.次のbashコードをファイルに追加します.
#!/bin/sh
LOGIN=$(cat <<-END
{
"token": {
"access_token": "$ACCESS_TOKEN",
"refresh_token": "$REFRESH_TOKEN",
"scope": "https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/service.management https://www.googleapis.com/auth/script.deployments https://www.googleapis.com/auth/logging.read https://www.googleapis.com/auth/script.webapp.deploy https://www.googleapis.com/auth/userinfo.profile openid https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/script.projects https://www.googleapis.com/auth/drive.metadata.readonly",
"token_type": "Bearer",
"id_token": "$ID_TOKEN",
"expiry_date": 1595752666211
},
"oauth2ClientSettings": {
"clientId": "$CLIENT_ID",
"clientSecret": "$CLIENT_SECRET",
"redirectUri": "http://localhost"
},
"isLocalCreds": false
}
END
)
echo $LOGIN > ~/.clasprc.json
スコープキー値を~//で値を置き換えます.クラスC .JSONスクリプト.JSON
このスクリプトには、Google AppsスクリプトプロジェクトのIDと名前が含まれます.我々は、バックアップ戦略に応じてここに複数のプロジェクトを追加することができます.次のJSONオブジェクトをファイルに追加します.
[
{
"id": "google-apps-script-project-id",
"name": "google-apps-script-project-name"
},
{
"id": "google-apps-script-project-id",
"name": "google-apps-script-project-name"
}
]
クローン.shこのスクリプトは、CLASPのクローンコマンドを使用して、スクリプトで提供するすべてのスクリプトをダウンロードします.JSONファイル.このスクリプトは、リポジトリでコミットされたすべての前のプロジェクトを削除します.これは、削除されたファイルをgithubに反映する重要なステップです.次のbashコードをファイルに追加します.
#!/bin/sh
# remove all the pre-existing projects
rm -r -f *
content=$(cat scripts.json)
for row in $(echo "${content}" | jq -r '.[] | @base64'); do
_jq() {
echo ${row} | base64 --decode | jq -r ${1}
}
# get name and id for project
name=$(_jq '.name')
id=$(_jq '.id')
# create a project directory
mkdir $name
cd $name
# clone the project using the clasp
clasp clone $id
# come out of the directory
cd ..
done
Githubアクションの設定
プロジェクトの最高の部分が来る.Githubアクションを使用してバックアッププロセス全体を自動化します.夜中にcronジョブの構文を使用して実行するスクリプトをスケジュールします.ワークフローは、リポジトリを設定し、ノードをインストールし、クラスプをインストールし、クラスプセットアップを実行し、Google Appsスクリプトをクローン化し、新しい変更が存在するかどうかをチェックし、事前に定義されたコミットメッセージで必要に応じてリポジトリにコミットします.
name: Backup
on:
schedule:
- cron: '0 0 * * *'
jobs:
backup:
runs-on: ubuntu-latest
env:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
REFRESH_TOKEN: ${{ secrets.REFRESH_TOKEN }}
CLIENT_ID: ${{ secrets.CLIENT_ID }}
CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
ID_TOKEN: ${{ secrets.ID_TOKEN }}
REMOTE_BRANCH: master
steps:
- name: Setup repository
uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: '12'
- name: Install Clasp
run: npm install -g @google/clasp
- name: Install jq
run: |-
sudo apt update -y
sudo apt install jq -y
- name: Setup Logins
run: bash setup.sh
- name: Clone Scripts
run: bash clone.sh
- name: Update Progress
run: |
if [$(git status --porcelain=v1 2>/dev/null | wc -l) != "0"] ; then
git config --global user.email ${GITHUB_ACTOR}@gmail.com
git config --global user.name ${GITHUB_ACTOR}
git add .
git commit -m "github-actions: took backup"
git push --force https://${GITHUB_ACTOR}:[email protected]/${GITHUB_REPOSITORY}.git HEAD:${REMOTE_BRANCH}
fi
Githubアクションの秘密を追加する
私たちはアクションの秘密の値を得ることができます//.クラスC .JSONとそれに応じて追加します.
アクションを秘密に設定する
結果
ハーレイ!私たちは、githubアクションワークフローが00 : 00 UTCで正常に完了するのを見ることができます.
スケジュールされたアクションワークフローが正常に完了しました
バックアップが正常に行われたことを確認するためにリポジトリをチェックしましょう.
バックアップは正常にGoogle Appsのスクリプトの撮影です
Google Appsのスクリプトプロジェクトは、コミットメッセージGithubアクションでリポジトリにコミットされたことがわかります.このワークフローを使用して、我々は両方のGoogle AppsのスクリプトとGithubに接続することができます.あなたが我々のチームのためにどんな疑いまたは感謝であれば、下記のコメントで知らせてください.
Reference
この問題について(のツールバーをバックアップする), 我々は、より多くの情報をここで見つけました https://dev.to/ravgeetdhillon/backup-google-apps-scripts-using-github-actions-7l2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol