mirror of
https://github.com/drone-plugins/drone-docker.git
synced 2026-06-04 18:24:24 +08:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 292ebe06de | |||
| 49e9dde7a7 | |||
| e7e8dd882d | |||
| 11015f0ddb | |||
| a946428e81 | |||
| 7c8c6ca9cb | |||
| 87212938c2 | |||
| 3c4c8e5f10 | |||
| b009c711b5 | |||
| 12cc40aa62 |
+5
-5
@@ -172,7 +172,7 @@ steps:
|
||||
- go build -o release/windows/amd64/drone-acr.exe ./cmd/drone-acr
|
||||
- go build -o release/windows/amd64/drone-gar.exe ./cmd/drone-gar
|
||||
- name: build docker plugin
|
||||
image: plugins/docker
|
||||
image: plugins/docker@sha256:f0233d950ae87ee6cb5500b2d5497fe02aa338201c0bdce2619f443fd174cfa4
|
||||
settings:
|
||||
dockerfile: docker/docker/Dockerfile.windows.amd64.ltsc2022
|
||||
repo: plugins/docker
|
||||
@@ -186,7 +186,7 @@ steps:
|
||||
when:
|
||||
event: [push, tag]
|
||||
- name: build ecr plugin
|
||||
image: plugins/docker
|
||||
image: plugins/docker@sha256:f0233d950ae87ee6cb5500b2d5497fe02aa338201c0bdce2619f443fd174cfa4
|
||||
settings:
|
||||
dockerfile: docker/ecr/Dockerfile.windows.amd64.ltsc2022
|
||||
repo: plugins/ecr
|
||||
@@ -200,7 +200,7 @@ steps:
|
||||
when:
|
||||
event: [push, tag]
|
||||
- name: build gcr plugin
|
||||
image: plugins/docker
|
||||
image: plugins/docker@sha256:f0233d950ae87ee6cb5500b2d5497fe02aa338201c0bdce2619f443fd174cfa4
|
||||
settings:
|
||||
dockerfile: docker/gcr/Dockerfile.windows.amd64.ltsc2022
|
||||
repo: plugins/gcr
|
||||
@@ -214,7 +214,7 @@ steps:
|
||||
when:
|
||||
event: [push, tag]
|
||||
- name: build acr plugin
|
||||
image: plugins/docker
|
||||
image: plugins/docker@sha256:f0233d950ae87ee6cb5500b2d5497fe02aa338201c0bdce2619f443fd174cfa4
|
||||
settings:
|
||||
dockerfile: docker/acr/Dockerfile.windows.amd64.ltsc2022
|
||||
repo: plugins/acr
|
||||
@@ -228,7 +228,7 @@ steps:
|
||||
when:
|
||||
event: [push, tag]
|
||||
- name: build gar plugin
|
||||
image: plugins/docker
|
||||
image: plugins/docker@sha256:f0233d950ae87ee6cb5500b2d5497fe02aa338201c0bdce2619f443fd174cfa4
|
||||
settings:
|
||||
dockerfile: docker/gar/Dockerfile.windows.amd64.ltsc2022
|
||||
repo: plugins/gar
|
||||
|
||||
@@ -10,6 +10,14 @@
|
||||
|
||||
Drone plugin uses Docker-in-Docker to build and publish Docker images to a container registry. For the usage information and a listing of the available options please take a look at [the docs](http://plugins.drone.io/drone-plugins/drone-docker/).
|
||||
|
||||
### Git Leaks
|
||||
|
||||
Run the following script to install git-leaks support to this repo.
|
||||
```
|
||||
chmod +x ./git-hooks/install.sh
|
||||
./git-hooks/install.sh
|
||||
```
|
||||
|
||||
## Build
|
||||
|
||||
Build the binaries with the following commands:
|
||||
|
||||
+23
-3
@@ -42,6 +42,7 @@ func main() {
|
||||
assumeRole = getenv("PLUGIN_ASSUME_ROLE")
|
||||
externalId = getenv("PLUGIN_EXTERNAL_ID")
|
||||
scanOnPush = parseBoolOrDefault(false, getenv("PLUGIN_SCAN_ON_PUSH"))
|
||||
idToken = os.Getenv("PLUGIN_OIDC_TOKEN_ID")
|
||||
)
|
||||
|
||||
// set the region
|
||||
@@ -61,7 +62,7 @@ func main() {
|
||||
log.Fatal(fmt.Sprintf("error creating aws session: %v", err))
|
||||
}
|
||||
|
||||
svc := getECRClient(sess, assumeRole, externalId)
|
||||
svc := getECRClient(sess, assumeRole, externalId, idToken)
|
||||
username, password, defaultRegistry, err := getAuthInfo(svc)
|
||||
|
||||
if registry == "" {
|
||||
@@ -213,11 +214,30 @@ func getenv(key ...string) (s string) {
|
||||
return
|
||||
}
|
||||
|
||||
func getECRClient(sess *session.Session, role string, externalId string) *ecr.ECR {
|
||||
func getECRClient(sess *session.Session, role string, externalId string, idToken string) *ecr.ECR {
|
||||
if role == "" {
|
||||
return ecr.New(sess)
|
||||
}
|
||||
if externalId != "" {
|
||||
|
||||
if idToken != "" {
|
||||
tempFile, err := os.CreateTemp("/tmp", "idToken-*.jwt")
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to create temporary file: %v", err)
|
||||
}
|
||||
defer tempFile.Close()
|
||||
|
||||
if err := os.Chmod(tempFile.Name(), 0600); err != nil {
|
||||
log.Fatalf("Failed to set file permissions: %v", err)
|
||||
}
|
||||
|
||||
if _, err := tempFile.WriteString(idToken); err != nil {
|
||||
log.Fatalf("Failed to write ID token to temporary file: %v", err)
|
||||
}
|
||||
|
||||
// Create credentials using the path to the ID token file
|
||||
creds := stscreds.NewWebIdentityCredentials(sess, role, "", tempFile.Name())
|
||||
return ecr.New(sess, &aws.Config{Credentials: creds})
|
||||
} else if externalId != "" {
|
||||
return ecr.New(sess, &aws.Config{
|
||||
Credentials: stscreds.NewCredentials(sess, role, func(p *stscreds.AssumeRoleProvider) {
|
||||
p.ExternalID = &externalId
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
This document explains on how to install certain git hooks globally for all repositories in your machine.
|
||||
|
||||
Step 1: git clone https://github.com/drone-plugins/drone-docker.git
|
||||
Step 2: cd git-hooks
|
||||
Step 3: Run install.sh
|
||||
|
||||
"install.sh" script will create .git_template in the user directory and will put the git hook and its dependent scripts in it. Along with the .git_template folder, it will add 2 sections "init" and "hooks boolean" in the .gitconfig file in the same user's root directory.
|
||||
After running "install.sh" if you create/clone a new git repository then all the hooks will get install automatically for the git repository. In case of existing git repository copy the contents of ~/.git_template/hooks into the .git/hooks directory of existing git repository.
|
||||
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Helper script to be used as a pre-commit hook.
|
||||
|
||||
echo "This hook checks for any secrets getting pushed as part of commit. If you feel that scan is false positive. \
|
||||
Then add the exclusion in .gitleaksignore file. For more info visit: https://github.com/zricethezav/gitleaks"
|
||||
|
||||
GIT_LEAKS_PRE_COMMIT=s$(git config --bool hook.pre-commit.gitleak)
|
||||
|
||||
echo "INFO: Scanning Commits information for any GIT LEAKS"
|
||||
gitleaks protect --staged -v --exit-code=100
|
||||
STATUS=$?
|
||||
if [ $STATUS = 100 ]; then
|
||||
echo "WARNING: GIT LEAKS has detected sensitive information in your changes. Please remove them or add them (IF NON-SENSITIVE) in .gitleaksignore file."
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Helper script to be used as a pre-commit hook.
|
||||
|
||||
echo "This hook checks for any secrets getting pushed as part of commit. If you feel that scan is false positive. \
|
||||
Then add the exclusion in .gitleaksignore file. For more info visit: https://github.com/zricethezav/gitleaks"
|
||||
|
||||
GIT_LEAKS=$(git config --bool hook.pre-push.gitleaks)
|
||||
|
||||
echo "INFO: Scanning Commits information for any GIT LEAKS"
|
||||
gitleaks detect -s ./ --log-level=debug --log-opts=-1 -v
|
||||
STATUS=$?
|
||||
if [ $STATUS != 0 ]; then
|
||||
echo "WARNING: GIT LEAKS has detected sensitive information in your changes. Please remove them or add them (IF NON-SENSITIVE) in .gitleaksignore file."
|
||||
exit $STATUS
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
GL_SCRIPT_PATH="$HOME/.git_template/hooks/git-leaks-pre-commit.sh"
|
||||
|
||||
pushd `dirname $0` > /dev/null && cd ../.. && BASEDIR=$(pwd -L) && popd > /dev/null
|
||||
BASENAME=`basename $0`
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
else
|
||||
#Initial commit : diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
fi
|
||||
|
||||
GIT_LEAKS_PRE_COMMIT=hook.pre-commit.gitleaks
|
||||
if [ "`git config $GIT_LEAKS_PRE_COMMIT`" == "false" ]
|
||||
then
|
||||
echo -e '\033[0;31m' checking git leaks is disabled - to enable: '\033[0;37m'git config --unset $GIT_LEAKS_PRE_COMMIT '\033[0m'
|
||||
echo -e '\033[0;34m' checking git leaks ... to enable: '\033[0;37m'git config --add $GIT_LEAKS_PRE_COMMIT true '\033[0m'
|
||||
else
|
||||
echo -e '\033[0;34m' checking for git leaks...
|
||||
[ -f "${GL_SCRIPT_PATH}" ] && . ${GL_SCRIPT_PATH} || echo "ERROR: Hook Script Not Found..." && exit 404
|
||||
fi
|
||||
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
GL_SCRIPT_PATH="$HOME/.git_template/hooks/git-leaks.sh"
|
||||
|
||||
pushd `dirname $0` > /dev/null && cd ../.. && BASEDIR=$(pwd -L) && popd > /dev/null
|
||||
BASENAME=`basename $0`
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
else
|
||||
#Initial commit : diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
fi
|
||||
|
||||
GIT_LEAKS=hook.pre-push.gitleaks
|
||||
if [ "`git config $GIT_LEAKS`" == "false" ]
|
||||
then
|
||||
echo -e '\033[0;31m' checking git leaks is disabled - to enable: '\033[0;37m'git config --unset $GIT_LEAKS '\033[0m'
|
||||
echo -e '\033[0;34m' checking git leaks ... to enable: '\033[0;37m'git config --add $GIT_LEAKS true '\033[0m'
|
||||
else
|
||||
echo -e '\033[0;34m' checking for git leaks...
|
||||
[ -f "${GL_SCRIPT_PATH}" ] && . ${GL_SCRIPT_PATH} || echo "ERROR: Hook Script Not Found..." && exit 404
|
||||
fi
|
||||
Executable
+44
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#Function to check if package is installed or not
|
||||
#args: $1: Name of the Package
|
||||
function check_package_installed() {
|
||||
LOCAL_PACKAGE_NAME=$1
|
||||
echo "Checking if $LOCAL_PACKAGE_NAME is installed or not..."
|
||||
brew list $LOCAL_PACKAGE_NAME
|
||||
if [ "$?" -eq 1 ];then
|
||||
echo "Installing $LOCAL_PACKAGE_NAME package..."
|
||||
brew install $LOCAL_PACKAGE_NAME
|
||||
fi
|
||||
}
|
||||
|
||||
function create_git_template() {
|
||||
cd $BASEDIR
|
||||
mkdir -p ~/.git_template/hooks
|
||||
git config --global init.templatedir ${GIT_TEMPLATE}
|
||||
git config --global --add $GIT_LEAKS true
|
||||
git config --global --add $GIT_LEAKS_PRE_COMMIT true
|
||||
find hooks/ -type f -exec cp "{}" ~/.git_template/hooks \;
|
||||
#cp -f hooks/* ~/.git_template/hooks
|
||||
cat ~/.gitconfig
|
||||
}
|
||||
|
||||
GIT_TEMPLATE="~/.git_template"
|
||||
GIT_LEAKS=hook.pre-push.gitleaks
|
||||
GIT_LEAKS_PRE_COMMIT=hook.pre-commit.gitleaks
|
||||
|
||||
pushd `dirname $0` && BASEDIR=$(pwd -L) && popd
|
||||
|
||||
echo This script will install hooks that run scripts that could be updated without notice.
|
||||
|
||||
while true; do
|
||||
read -p "Do you wish to install these hooks?" yn
|
||||
case $yn in
|
||||
[Yy]* ) check_package_installed "gitleaks";
|
||||
break;;
|
||||
[Nn]* ) exit;;
|
||||
* ) echo "Please answer yes or no.";;
|
||||
esac
|
||||
done
|
||||
|
||||
create_git_template
|
||||
Reference in New Issue
Block a user