GitHub action that uploads files to Google Drive. This only works with a Google Service Account!
Based on the go version of the same name by adityak74
To make a GSA go to the
Credentials Dashboard. You
will need to download the .json key. You will use this string as the
credentials
input.
You will also need to share the drive with the servie account. To do this,
just share the folder like you would normally with a friend, except you share it
with the service account email address. Additionally, you will need to give the
service account access to the Google Drive API. Go to
https://console.developers.google.com/apis/api/drive.googleapis.com/overview?project={PROJECT_ID}
.
Where {PROJECT_ID}
is the ID of your GCP project. Find more info about that
here.
Required: YES.
The name of the file you want to upload. Wildcards can be used to upload more than one file.
Required: NO
The name you want the file to have in Google Drive. If this input is not provided, it will use only the filename of the source path. It will be ignored if there are more than one file to be uploaded.
Required: NO
If you want to overwrite the filename with existing file, it will use the target filename.
Required: NO
file MimeType. If absent, Google Drive will attempt to automatically detect an appropriate value.
Required: NO
If true, the target filename will be the complete source filename and name
parameter will be ignored.
Required: NO
If true, the directory structure of the source file will be recreated relative
to folderId
.
Required: NO
Prefix to be added to target filename.
Required: YES.
The ID of the folder you want to upload to.
Required: YES.
A string with the GSA credentials.
In this example we stored the folderId and credentials as action secrets. This is highly recommended as leaking your credentials key will allow anyone to use your service account.
# .github/workflows/main.yml
name: Main
on: [push]
jobs:
my_job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Archive files
run: |
sudo apt-get update
sudo apt-get install zip
zip -r archive.zip *
- name: Upload to Google Drive
uses: logickoder/g-drive-upload@main
with:
credentials: ${{ secrets.credentials }}
filename: 'archive.zip'
folderId: ${{ secrets.folderId }}
name: 'documentation.zip' # optional string
overwrite: 'true' # optional boolean
- name: Make Directory Structure
run: |
mkdir -p w/x/y
date +%s > w/x/y/z
- name: Mirror Directory Structure
uses: logickoder/g-drive-upload@main
with:
credentials: ${{ secrets.DRIVE_CREDENTIALS }}
filename: w/x/y/z
folderId: ${{ secrets.folderId }}
overwrite: 'true'
mirrorDirectoryStructure: 'true'