Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
ciwrappers
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Emmanuel Bruno
ciwrappers
Commits
aba08400
Commit
aba08400
authored
2 years ago
by
Emmanuel Bruno
Browse files
Options
Downloads
Patches
Plain Diff
adds utils installer.
parent
27d65004
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
.gitignore
+1
-0
1 addition, 0 deletions
.gitignore
ci-wrappers.sh
+142
-111
142 additions, 111 deletions
ci-wrappers.sh
with
143 additions
and
111 deletions
.gitignore
0 → 100644
+
1
−
0
View file @
aba08400
.idea
This diff is collapsed.
Click to expand it.
ci-wrappers.sh
+
142
−
111
View file @
aba08400
#!/
bin/
bash
#!/
usr/bin/env
bash
_B_TITLE
=
'\033[0;33m'
_B_TITLE
=
'\033[0;33m'
_E_TITLE
=
'\033[0;0m'
_E_TITLE
=
'\033[0;0m'
VAGRANT_VERSION
=
2.3.3
_create_config
()
(
TERRAFORM_VERSION
=
1.3.6
# Create or update default config file
DOCKER_CLIENT_VERSION
=
20.10.19
mkdir
-p
"
${
HOME
}
/.ci-wrappers/"
DOCKER_COMPOSE_VERSION
=
2.13.0
cat
>!
"
${
HOME
}
/.ci-wrappers/config"
<<
END
CI_VAGRANT_VERSION=2.3.4
CI_TERRAFORM_VERSION=1.3.6
CI_DOCKER_CLIENT_VERSION=20.10.19
CI_DOCKER_COMPOSE_VERSION=2.13.0
CI_GH_CLI_VERSION=2.20.2
MAVEN_DEFAULT_IMAGE
=
"brunoe/maven:3.8.6-eclipse-temurin-17"
CI_MAVEN_DEFAULT_IMAGE="brunoe/maven:3.8.6-eclipse-temurin-17"
JAVA_DEFAULT_ARCHETYPE_GROUPID
=
"fr.univtln.bruno.demos.archetypes"
CI_JAVA_DEFAULT_ARCHETYPE_GROUPID="fr.univtln.bruno.demos.archetypes"
JAVA_DEFAULT_ARCHETYPE_ARTIFACTID
=
"demomavenarchetype"
CI_JAVA_DEFAULT_ARCHETYPE_ARTIFACTID="demomavenarchetype"
JAVA_DEFAULT_ARCHETYPE_VERSION
=
"1.1-SNAPSHOT"
CI_JAVA_DEFAULT_ARCHETYPE_VERSION="1.1-SNAPSHOT"
export CI_WRAPPERS_HOME="
\$
{CI_WRAPPERS_HOME:-
\$
{HOME}/.ci-wrappers}"
export DOCKER_CONFIG="
\$
CI_WRAPPERS_HOME/.docker"
END
)
_create_config
_init
()
{
_create_config
source
"
${
HOME
}
/.ci-wrappers/config"
}
ci-wrappers-usage
()
{
ci-wrappers-usage
()
{
echo
"
install-dockerclient-vagrant-terraform
\n\t
installs a docker client, vagant and terraform in
${
HOME
}
/bin
"
printf
'
install-dockerclient-vagrant-terraform\n\t installs a docker client, vagant and terraform in
%s/bin\n'
"
${
HOME
}
"
echo
"new-java-project [projectname]
\n\t
create a new java+maven project ready for CI"
printf
"new-java-project [projectname]
\n\t
create a new java+maven project ready for CI
\n
"
echo
"docker-wrapper"
echo
"docker-wrapper"
echo
"docker-wrapper-build"
echo
"docker-wrapper-build"
echo
"docker-wrapper-build-all"
echo
"docker-wrapper-build-all"
...
@@ -24,41 +41,63 @@ ci-wrappers-usage() {
...
@@ -24,41 +41,63 @@ ci-wrappers-usage() {
echo
"docker-sonar-analysis"
echo
"docker-sonar-analysis"
}
}
install-dockerclient-vagrant-terraform
()
{
install-ci-software
()
{
mkdir
-p
${
HOME
}
/bin
&&
_init
dockerCurrentVersion
=
$(
docker
--version
|cut
-d
" "
-f
3|tr
-d
','
)
if
[
-f
${
HOME
}
/bin/docker
]
;
then
if
[
-n
"
$ZSH_VERSION
"
]
;
then
emulate
-L
ksh
;
fi
curl
-sL
https://download.docker.com/linux/static/stable/x86_64/docker-
${
DOCKER_CLIENT_VERSION
}
.tgz |
mkdir
-p
"
${
CI_WRAPPERS_HOME
}
"
/bin
tar
--directory
=
${
HOME
}
/bin/
--strip-components
=
1
-zx
docker/docker
&&
#Ensure that tools are in PATH
chmod
+x
${
HOME
}
/bin/docker
[[
":
$PATH
:"
!=
*
":
${
CI_WRAPPERS_HOME
}
/bin:"
*
]]
&&
PATH
=
"
${
CI_WRAPPERS_HOME
}
/bin:
${
PATH
}
"
_version_gh
()
(
"
${
CI_WRAPPERS_HOME
}
"
/bin/gh
--version
|
head
-n
1 |
cut
-d
' '
-f
3
)
if
[
!
-f
"
${
CI_WRAPPERS_HOME
}
"
/bin/gh
]
||
[
"
$(
_version_gh
)
"
!=
"
${
CI_GH_CLI_VERSION
}
"
]
;
then
echo
"Installing gh client
${
CI_GH_CLI_VERSION
}
"
&&
curl
-sL
"https://github.com/cli/cli/releases/download/v
${
CI_GH_CLI_VERSION
}
/gh_
${
CI_GH_CLI_VERSION
}
_linux_amd64.tar.gz"
|
tar
--directory
=
"
${
CI_WRAPPERS_HOME
}
/bin/"
--strip-components
=
2
-zx
"gh_
${
CI_GH_CLI_VERSION
}
_linux_amd64/bin/gh"
&&
chmod
+x
"
${
CI_WRAPPERS_HOME
}
/bin/gh"
else
else
echo
"
docker client
already installed"
echo
"
GitHub CLI
already installed
:
$(
_version_gh
)
"
fi
fi
if
[
-f
${
HOME
}
/.docker/cli-plugins/docker-compose
]
;
then
mkdir
-p
${
HOME
}
/.docker/cli-plugins/
&&
_version_docker
()
(
"
${
CI_WRAPPERS_HOME
}
"
/bin/docker
--version
|
cut
-d
" "
-f
3 |
tr
-d
','
)
curl
-SL
https://github.com/docker/compose/releases/download/v
${
DOCKER_COMPOSE_VERSION
}
/docker-compose-linux-x86_64
-o
${
HOME
}
/.docker/cli-plugins/docker-compose
&&
if
[
!
-f
"
${
CI_WRAPPERS_HOME
}
"
/bin/docker
]
||
[
"
$(
_version_docker
)
"
!=
"
${
CI_DOCKER_CLIENT_VERSION
}
"
]
;
then
chmod
+x
${
HOME
}
/.docker/cli-plugins/docker-compose
echo
"Installing docker client
${
CI_DOCKER_CLIENT_VERSION
}
"
curl
-sL
"https://download.docker.com/linux/static/stable/x86_64/docker-
${
CI_DOCKER_CLIENT_VERSION
}
.tgz"
|
tar
--directory
=
"
${
CI_WRAPPERS_HOME
}
/bin/"
--strip-components
=
1
-zx
docker/docker
&&
chmod
+x
"
${
CI_WRAPPERS_HOME
}
/bin/docker"
else
else
echo
"docker c
ompose
already installed"
echo
"docker c
lient
already installed
$(
_version_docker
)
"
fi
fi
_version_dockercompose
()
(
"
${
DOCKER_CONFIG
}
"
/cli-plugins/docker-compose
--version
|
sed
's/^[^0-9]*\([0-9][0-9\.]*\)[^0-9]*$/\1/g'
)
if
[
-f
${
HOME
}
/bin/vagrant
]
;
then
if
[
!
-f
"
${
CI_WRAPPERS_HOME
}
"
/.docker/cli-plugins/docker-compose
]
||
[
"
$(
_version_dockercompose
)
"
!=
"
${
CI_DOCKER_COMPOSE_VERSION
}
"
]
;
then
export
PATH
=
${
HOME
}
/bin:
$PATH
&&
echo
"Installing docker compose plugin
${
CI_DOCKER_COMPOSE_VERSION
}
"
wget
-qO-
https://releases.hashicorp.com/vagrant/
${
vagrant_VAGRANT_VERSION
}
/
${
vagrant_VAGRANT_VERSION
}
_linux_amd64.zip |
gunzip
-
\
mkdir
-p
"
${
CI_WRAPPERS_HOME
}
"
/.docker/cli-plugins/
&&
>
${
HOME
}
/bin/vagrant
&&
curl
-sL
"https://github.com/docker/compose/releases/download/v
${
CI_DOCKER_COMPOSE_VERSION
}
/docker-compose-linux-x86_64"
\
chmod
+x
${
HOME
}
/bin/vagrant
-o
"
${
DOCKER_CONFIG
}
"
/cli-plugins/docker-compose
&&
chmod
+x
"
${
DOCKER_CONFIG
}
"
/cli-plugins/docker-compose
else
else
echo
"
vagrant already installed
"
echo
"
Docker compose plugin already installed
$(
_version_dockercompose
)
"
fi
fi
if
[
-f
${
HOME
}
/bin/terraform
]
;
then
export
PATH
=
${
HOME
}
/bin:
$PATH
&&
_version_vagrant
()
(
"
${
CI_WRAPPERS_HOME
}
"
/bin/vagrant
--version
|
sed
's/^[^0-9]*\([0-9][0-9\.]*\)[^0-9]*$/\1/g'
)
wget
-qO-
https://releases.hashicorp.com/terraform/
${
TERRAFORM_VERSION
}
/terraform_
${
TERRAFORM_VERSION
}
_linux_amd64.zip |
gunzip
-
\
if
[
!
-f
"
${
CI_WRAPPERS_HOME
}
"
/bin/vagrant
]
||
[
"
$(
_version_vagrant
)
"
!=
"
${
CI_VAGRANT_VERSION
}
"
]
;
then
>
${
HOME
}
/bin/terraform
&&
echo
"Installing vagrant
${
CI_VAGRANT_VERSION
}
"
chmod
+x
${
HOME
}
/bin/terraform
curl
-sL
"https://releases.hashicorp.com/vagrant/
${
CI_VAGRANT_VERSION
}
/vagrant_
${
CI_VAGRANT_VERSION
}
_linux_amd64.zip"
|
gunzip
-
>
"
${
CI_WRAPPERS_HOME
}
/bin/vagrant"
&&
chmod
+x
"
${
CI_WRAPPERS_HOME
}
/bin/vagrant"
else
else
echo
"
terraform
already installed"
echo
"
Vagrant
already installed
$(
_version_vagrant
)
"
fi
fi
_version_terraform
()
(
"
${
CI_WRAPPERS_HOME
}
"
/bin/terraform
--version
|
head
-n
1 |
sed
's/^[^0-9]*\([0-9][0-9\.]*\)[^0-9]*$/\1/g'
)
if
[
!
-f
"
${
CI_WRAPPERS_HOME
}
"
/bin/terraform
]
||
[
"
$(
_version_terraform
)
"
!=
"
${
CI_TERRAFORM_VERSION
}
"
]
;
then
echo
"Installing terraform
${
CI_TERRAFORM_VERSION
}
"
curl
-sL
"https://releases.hashicorp.com/terraform/
${
CI_TERRAFORM_VERSION
}
/terraform_
${
CI_TERRAFORM_VERSION
}
_linux_amd64.zip"
|
gunzip
-
>
"
${
CI_WRAPPERS_HOME
}
/bin/terraform"
&&
chmod
+x
"
${
CI_WRAPPERS_HOME
}
"
/bin/terraform
else
echo
"Terraform already installed
$(
_version_terraform
)
"
fi
}
}
provision-docker-engine
()
{
provision-docker-engine
()
{
...
@@ -66,29 +105,19 @@ provision-docker-engine() {
...
@@ -66,29 +105,19 @@ provision-docker-engine() {
}
}
_moveVBoxDefaultFolder
()
{
_moveVBoxDefaultFolder
()
{
target
d
irectory
=
${
1
:-
/scratch/
${
USER
}}
target
D
irectory
=
${
1
:-
/scratch/
${
USER
}}
VBoxManage list systemproperties |
grep
"Current default machine folder:"
&&
VBoxManage list systemproperties |
grep
"Current default machine folder:"
&&
mkdir
-p
${
targetirectory
}
&&
mkdir
-p
"
${
target
D
irectory
}
"
&&
vboxmanage setproperty machinefolder
${
targetirectory
}
/VirtualBox
\
VMs
&&
vboxmanage setproperty machinefolder
"
${
target
D
irectory
}
"
/VirtualBox
\
VMs
&&
echo
-n
"New "
&&
VBoxManage list systemproperties |
grep
"Default machine folder:"
echo
-n
"New "
&&
VBoxManage list systemproperties |
grep
"Default machine folder:"
}
}
_check_needed_software
()
{
for
c
in
docker vagrant
;
do
if
[
-x
"
$(
command
-v
${
c
}
)
"
]
;
then
echo
$c
not found
else
echo
$c
found
fi
done
}
_check_needed_variables
()
{
_check_needed_variables
()
{
_check_variables GITHUBLOGIN GITHUBTOKEN GITHUB_ORG SONAR_URL SONAR_TOKEN
_check_variables GITHUBLOGIN GITHUBTOKEN GITHUB_ORG SONAR_URL SONAR_TOKEN
}
}
_check_variables
()
{
_check_variables
()
{
if
[
-n
"
$ZSH_VERSION
"
]
;
then
emulate
-L
ba
sh
;
fi
if
[
-n
"
$ZSH_VERSION
"
]
;
then
emulate
-L
k
sh
;
fi
for
varname
in
"
$@
"
;
do
for
varname
in
"
$@
"
;
do
v
=
"
${
!varname
}
"
v
=
"
${
!varname
}
"
if
[
!
-n
"
${
v
-unset
}
"
]
;
then
if
[
!
-n
"
${
v
-unset
}
"
]
;
then
...
@@ -101,7 +130,7 @@ _check_variables() {
...
@@ -101,7 +130,7 @@ _check_variables() {
# This utility function computes the image name and tag from the project directory and the git branch.
# This utility function computes the image name and tag from the project directory and the git branch.
_docker_env
()
{
_docker_env
()
{
DOCKER_REPO_NAME
=
${
GITHUB_ORG
}
DOCKER_REPO_NAME
=
${
GITHUB_ORG
}
IMAGE_NAME
=
$(
echo
${
PWD
##*/
}
|
tr
'[:upper:]'
'[:lower:]'
)
IMAGE_NAME
=
$(
echo
"
${
PWD
##*/
}
"
|
tr
'[:upper:]'
'[:lower:]'
)
IMAGE_TAG
=
$(
git rev-parse
--abbrev-ref
HEAD
)
IMAGE_TAG
=
$(
git rev-parse
--abbrev-ref
HEAD
)
DOCKER_TARGET
=
${
DOCKER_TARGET
:-
finalJLinkAlpine
}
DOCKER_TARGET
=
${
DOCKER_TARGET
:-
finalJLinkAlpine
}
DOCKER_FULL_IMAGE_NAME
=
"
$DOCKER_REPO_NAME
/
$IMAGE_NAME
:
$IMAGE_TAG
-
$DOCKER_TARGET
"
DOCKER_FULL_IMAGE_NAME
=
"
$DOCKER_REPO_NAME
/
$IMAGE_NAME
:
$IMAGE_TAG
-
$DOCKER_TARGET
"
...
@@ -171,24 +200,23 @@ docker-mvn() (
...
@@ -171,24 +200,23 @@ docker-mvn() (
_docker_env
_docker_env
docker run
\
docker run
\
--env
IMAGE_NAME
=
"
$IMAGE_NAME
"
\
--env
IMAGE_NAME
=
"
$IMAGE_NAME
"
\
--env
GITHUB_LOGIN
=
"
$GITHUB
_
LOGIN
"
\
--env
GITHUB_LOGIN
=
"
$GITHUBLOGIN
"
\
--env
GITHUB_TOKEN
=
"
$GITHUB
_
TOKEN
"
\
--env
GITHUB_TOKEN
=
"
$GITHUBTOKEN
"
\
--env
SONAR_URL
=
"
$SONAR_URL
"
\
--env
SONAR_URL
=
"
$SONAR_URL
"
\
--env
SONAR_TOKEN
=
"
$SONAR_TOKEN
"
\
--env
SONAR_TOKEN
=
"
$SONAR_TOKEN
"
\
--env
SONAR_URL
=
"
$SONAR_URL
"
\
--env
SONAR_URL
=
"
$SONAR_URL
"
\
--env
SONAR_TOKEN
=
"
$SONAR_TOKEN
"
\
--env
SONAR_TOKEN
=
"
$SONAR_TOKEN
"
\
--env
S6_LOGGING
=
1
\
--env
S6_LOGGING
=
1
\
--env
S6_BEHAVIOUR_IF_STAGE2_FAILS
\
--env
S6_BEHAVIOUR_IF_STAGE2_FAILS
\
--volume
${
HOME
}
/.m2:/home/user/.m2
\
--volume
"
${
HOME
}
/.m2"
:
"/home/user/.m2"
\
--volume
${
HOME
}
/.ssh:/home/user/.ssh
\
--volume
"
${
HOME
}
/.ssh"
:
"/home/user/.ssh"
\
--volume
${
HOME
}
/.gitconfig:/home/user/.gitconfig
\
--volume
"
${
HOME
}
/.gitconfig"
:
"/home/user/.gitconfig"
\
--volume
"
$
--volume
"
$(
pwd
)
"
:
"/usr/src/mymaven"
\
}(pwd)"
:/usr/src/mymaven
\
--workdir
/usr/src/mymaven
\
--workdir
/usr/src/mymaven
\
--rm
\
--rm
\
--env
PUID
=
$(
id
-u
)
-e
PGID
=
$(
id
-g
)
\
--env
PUID
=
"
$(
id
-u
)
"
-e
PGID
=
"
$(
id
-g
)
"
\
--env
MAVEN_CONFIG
=
/home/user/.m2
\
--env
MAVEN_CONFIG
=
/home/user/.m2
\
"
${
MAVEN_IMAGE
:-${
MAVEN_DEFAULT_IMAGE
}}
"
\
"
${
MAVEN_IMAGE
:-${
CI_
MAVEN_DEFAULT_IMAGE
}}
"
\
runuser
--user
user
\
runuser
--user
user
\
--group
user
\
--group
user
\
--
mvn
--errors
--threads
1C
--color
always
--strict-checksums
\
--
mvn
--errors
--threads
1C
--color
always
--strict-checksums
\
...
@@ -198,82 +226,85 @@ docker-mvn() (
...
@@ -198,82 +226,85 @@ docker-mvn() (
docker-sonar-analysis
()
(
docker-sonar-analysis
()
(
docker-mvn
-P
jacoco,sonar
\
docker-mvn
-P
jacoco,sonar
\
-Dsonar
.branch.name
=
$(
git rev-parse
--abbrev-ref
HEAD |
tr
/ _
)
\
-Dsonar
.branch.name
=
"
$(
git rev-parse
--abbrev-ref
HEAD |
tr
/ _
)
"
\
verify sonar:sonar
verify sonar:sonar
)
)
new-java-project
()
(
new-java-project
()
(
printf
"
${
_B_TITLE
}
Creating Java project
${
_E_TITLE
}
"
if
[[
!
$#
-eq
2
]]
;
then
if
[[
!
$#
-eq
2
]]
;
then
echo
"Usage:
$0
<projectname> <groupid>"
echo
"Usage:
$0
<projectname> <groupid>
[version]
"
exit
1
exit
1
fi
fi
_init
PROJECT_NAME
=
$(
echo
"
$1
"
|
tr
'[:upper:]'
'[:lower:]'
)
GROUP_ID
=
$(
echo
"
$2
"
|
tr
'[:upper:]'
'[:lower:]'
)
VERSION
=
"
${
3
:-
1
.0-SNAPSHOT
}
"
printf
"
${
_B_TITLE
}
Creating Java project
${
_E_TITLE
}
\n
"
printf
"
\t
Archetype :
${
CI_JAVA_DEFAULT_ARCHETYPE_GROUPID
}
:
${
CI_JAVA_DEFAULT_ARCHETYPE_ARTIFACTID
}
:
${
CI_JAVA_DEFAULT_ARCHETYPE_VERSION
}
\n
"
printf
"
\t
Artefact :
${
GROUP_ID
}
:
${
PROJECT_NAME
}
:
${
VERSION
}
\n
"
_check_variables GITHUBLOGIN GITHUBORG GITHUBTOKEN
_check_variables GITHUBLOGIN GITHUBORG GITHUBTOKEN
printf
"
${
_B_TITLE
}
$1
with groupId
$2
${
_E_TITLE
}
\n
"
printf
"
${
_B_TITLE
}
calling maven archetype
${
_E_TITLE
}
\n
"
mvn
--quiet
--color
=
always
--batch-mode
archetype:generate
\
mvn
--quiet
--color
=
always
--batch-mode
archetype:generate
\
-DarchetypeGroupId
=
${
JAVA_DEFAULT_ARCHETYPE_GROUPID
}
\
-DarchetypeGroupId
=
"
${
CI_
JAVA_DEFAULT_ARCHETYPE_GROUPID
}
"
\
-DarchetypeArtifactId
=
${
JAVA_DEFAULT_ARCHETYPE_ARTIFACTID
}
\
-DarchetypeArtifactId
=
"
${
CI_
JAVA_DEFAULT_ARCHETYPE_ARTIFACTID
}
"
\
-DarchetypeVersion
=
${
JAVA_DEFAULT_ARCHETYPE_VERSION
}
\
-DarchetypeVersion
=
"
${
CI_
JAVA_DEFAULT_ARCHETYPE_VERSION
}
"
\
-DgithubAccount
=
${
GITHUBORG
}
\
-DgithubAccount
=
"
${
GITHUBORG
}
"
\
-DgroupId
=
${
2
}
\
-DgroupId
=
"
${
GROUP_ID
}
"
\
-DartifactId
=
${
1
}
\
-DartifactId
=
"
${
PROJECT_NAME
}
"
\
-Dversion
=
1.0-SNAPSHOT
&&
-Dversion
=
"
${
VERSION
}
"
&&
cd
${
1
}
&&
cd
"
${
PROJECT_NAME
}
"
&&
printf
"
${
_B_TITLE
}
Gitflow init
${
_E_TITLE
}
\n
"
&&
printf
"
${
_B_TITLE
}
Gitflow init
${
_E_TITLE
}
\n
"
&&
git flow init
-d
&&
git add
.
&&
git commit
-m
"sets initial release."
&&
git flow init
-d
&&
git add
.
&&
git commit
--quiet
-m
"sets initial release."
&&
printf
"
${
_B_TITLE
}
gh-pages branch creation
${
_E_TITLE
}
\n
"
&&
printf
"
${
_B_TITLE
}
gh-pages branch creation
${
_E_TITLE
}
\n
"
&&
git checkout
--orphan
gh-pages
&&
git checkout
--orphan
gh-pages
&&
git
rm
-rf
.
&&
touch
index.html
&&
git
rm
-rf
--quiet
.
&&
touch
index.html
&&
git add
.
&&
git add
.
&&
git commit
-m
"sets initial empty site."
&&
git commit
--quiet
-m
"sets initial empty site."
&&
git checkout develop
&&
git checkout develop
&&
printf
"
${
_B_TITLE
}
GitHub reposirory creation
${
_E_TITLE
}
\n
"
&&
printf
"
${
_B_TITLE
}
GitHub reposirory creation
${
_E_TITLE
}
\n
"
&&
gh repo create
${
GITHUBORG
}
/
${
PWD
##*/
}
--disable-wiki
--private
--source
=
.
&&
gh repo create
"
${
GITHUBORG
}
/
${
PWD
##*/
}
"
--disable-wiki
--private
--source
=
.
&&
printf
"
${
_B_TITLE
}
Generate a default deploy key
${
_E_TITLE
}
\n
"
&&
printf
"
${
_B_TITLE
}
Generate a default deploy key
${
_E_TITLE
}
\n
"
&&
_generate_and_install_new_deploy_key
${
GITHUBORG
}
${
1
}
&&
_generate_and_install_new_deploy_key
"
${
GITHUBORG
}
"
"
${
PROJECT_NAME
}
"
&&
git push origin
--mirror
&&
git push origin
--mirror
--quiet
&&
gh repo view
--web
gh repo view
--web
)
)
_generate_and_install_new_deploy_key
()
(
_generate_and_install_new_deploy_key
()
(
tmpKeydir
=
$(
mktemp
--directory
/tmp/ci-wrappers.XXXXXX
)
tmpKeydir
=
$(
mktemp
--directory
/tmp/ci-wrappers.XXXXXX
)
ssh-keygen
-q
-t
ed25519
-C
"git@github.com:
${
1
}
/
${
2
}
.git"
-N
""
-f
${
tmpKeydir
}
/key
ssh-keygen
-q
-t
ed25519
-C
"git@github.com:
${
1
}
/
${
2
}
.git"
-N
""
-f
"
${
tmpKeydir
}
/key
"
gh repo deploy-key add
--allow-write
"
${
tmpKeydir
}
/key.pub"
gh repo deploy-key add
--allow-write
"
${
tmpKeydir
}
/key.pub"
gh secret
set
SSH_PRIVATE_KEY <
"
${
tmpKeydir
}
/key"
gh secret
set
SSH_PRIVATE_KEY <
"
${
tmpKeydir
}
/key"
rm
-rf
tmpKeydir
rm
-rf
tmpKeydir
)
)
#
runner name
#
create a github hosted runner in a container for the current repo
github-runner-repo
()
(
github-runner-repo
()
(
local
workdir
=
"
$(
mktemp
--directory
/tmp/ghrunner-
${
GITHUBORG
}
-
${
PWD
##*/
}
.XXXXXX
)
"
local
workdir
docker run
-d
--restart
always
\
workdir
=
$(
mktemp
--directory
"/tmp/ghrunner-
${
GITHUBORG
}
_
${
PWD
##*/
}
_XXXXXX"
)
docker run
-d
--restart
always
--name
ghrunner_
$(
echo
"
$workdir
"
|
cut
-d
'-'
-f
2
)
\
-e
REPO_URL
=
"https://github.com/
${
GITHUBORG
}
/
${
PWD
##*/
}
"
\
-e
REPO_URL
=
"https://github.com/
${
GITHUBORG
}
/
${
PWD
##*/
}
"
\
-e
RUNNER_NAME_PREFIX
=
"
${
GITHUBORG
}
-
${
PWD
##*/
}
-runner"
\
-e
RUNNER_NAME_PREFIX
=
"
${
GITHUBORG
}
-
${
PWD
##*/
}
-runner"
\
-e
ACCESS_TOKEN
=
${
GITHUBTOKEN
}
\
-e
ACCESS_TOKEN
=
"
${
GITHUBTOKEN
}
"
\
-e
RUNNER_WORKDIR
=
"
${
workdir
}
"
\
-e
RUNNER_WORKDIR
=
"
${
workdir
}
"
\
-v
/var/run/docker.sock:/var/run/docker.sock
\
-v
/var/run/docker.sock:/var/run/docker.sock
\
-v
"
${
workdir
}
"
:
"
${
workdir
}
"
\
-v
"
${
workdir
}
"
:
"
${
workdir
}
"
\
myoung34/github-runner:latest
myoung34/github-runner:latest
# -e RUNNER_GROUP="my-group" \
# -e DISABLE_AUTO_UPDATE="true" \
# -e ORG_NAME="${GITHUBORG}" \
#-e LABELS="my-label,other-label" \
)
)
# create a github hosted runner in a container for the org in $GITHUBORG
github-runner-org
()
(
github-runner-org
()
(
local
workdir
=
"
$(
mktemp
--directory
/tmp/ghrunner-org.XXXXXX
)
"
local
workdir
docker run
-d
--restart
always
\
workdir
=
$(
mktemp
--directory
"/tmp/ghrunner-
${
GITHUBORG
}
_XXXXXX"
)
docker run
-d
--restart
always
--name
ghrunner_
$(
echo
"
$workdir
"
|
cut
-d
'-'
-f
2
)
\
-e
REPO_URL
=
"https://github.com/
${
GITHUBORG
}
/
${
PWD
##*/
}
"
\
-e
REPO_URL
=
"https://github.com/
${
GITHUBORG
}
/
${
PWD
##*/
}
"
\
-e
RUNNER_NAME_PREFIX
=
"
${
GITHUBORG
}
-
${
PWD
##*/
}
-runner"
\
-e
RUNNER_NAME_PREFIX
=
"
${
GITHUBORG
}
-
${
PWD
##*/
}
-runner"
\
-e
ACCESS_TOKEN
=
${
GITHUBTOKEN
}
\
-e
ACCESS_TOKEN
=
"
${
GITHUBTOKEN
}
"
\
-e
RUNNER_WORKDIR
=
"
${
workdir
}
"
\
-e
RUNNER_WORKDIR
=
"
${
workdir
}
"
\
-v
/var/run/docker.sock:/var/run/docker.sock
\
-v
/var/run/docker.sock:/var/run/docker.sock
\
-v
"
${
workdir
}
"
:
"
${
workdir
}
"
\
-v
"
${
workdir
}
"
:
"
${
workdir
}
"
\
-e
RUNNER_SCOPE
=
"org"
\
-e
RUNNER_SCOPE
=
"org"
\
-e
ORG_NAME
=
"
${
GITHUBORG
}
"
\
-e
ORG_NAME
=
"
${
GITHUBORG
}
"
\
myoung34/github-runner:latest
myoung34/github-runner:latest
# -e DISABLE_AUTO_UPDATE="true" \
#-e LABELS="my-label,other-label" \
# -e RUNNER_GROUP="my-group" \
)
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment