Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
b8afc7b2
Commit
b8afc7b2
authored
Aug 01, 2019
by
GitLab Bot
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of gitlab-org/gitlab-ce master
parents
1c6710c2
0e8dab12
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
480 additions
and
476 deletions
+480
-476
doc/api/jobs.md
doc/api/jobs.md
+3
-3
doc/ci/ci_cd_for_external_repos/bitbucket_integration.md
doc/ci/ci_cd_for_external_repos/bitbucket_integration.md
+99
-99
doc/ci/docker/using_docker_build.md
doc/ci/docker/using_docker_build.md
+171
-171
doc/ci/docker/using_docker_images.md
doc/ci/docker/using_docker_images.md
+67
-64
doc/ci/examples/artifactory_and_gitlab/index.md
doc/ci/examples/artifactory_and_gitlab/index.md
+36
-34
doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md
doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md
+55
-56
doc/ci/ssh_keys/README.md
doc/ci/ssh_keys/README.md
+41
-41
doc/ci/yaml/README.md
doc/ci/yaml/README.md
+8
-8
No files found.
doc/api/jobs.md
View file @
b8afc7b2
...
@@ -491,7 +491,7 @@ Parameters
...
@@ -491,7 +491,7 @@ Parameters
Example request:
Example request:
```
sh
```
sh
curl
--header
"PRIVATE-TOKEN: <your_access_token>"
"https://gitlab.example.com/api/v4/projects/1/jobs/5/artifacts/some/release/file.pdf"
curl
--
location
--
header
"PRIVATE-TOKEN: <your_access_token>"
"https://gitlab.example.com/api/v4/projects/1/jobs/5/artifacts/some/release/file.pdf"
```
```
Possible response status codes:
Possible response status codes:
...
@@ -526,7 +526,7 @@ Parameters:
...
@@ -526,7 +526,7 @@ Parameters:
Example request:
Example request:
```
sh
```
sh
curl
--header
"PRIVATE-TOKEN: <your_access_token>"
"https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/master/raw/some/release/file.pdf?job=pdf"
curl
--
location
--
header
"PRIVATE-TOKEN: <your_access_token>"
"https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/master/raw/some/release/file.pdf?job=pdf"
```
```
Possible response status codes:
Possible response status codes:
...
@@ -551,7 +551,7 @@ GET /projects/:id/jobs/:job_id/trace
...
@@ -551,7 +551,7 @@ GET /projects/:id/jobs/:job_id/trace
| job_id | integer | yes | ID of a job. |
| job_id | integer | yes | ID of a job. |
```
sh
```
sh
curl
--header
"PRIVATE-TOKEN: <your_access_token>"
"https://gitlab.example.com/api/v4/projects/1/jobs/8/trace"
curl
--
location
--
header
"PRIVATE-TOKEN: <your_access_token>"
"https://gitlab.example.com/api/v4/projects/1/jobs/8/trace"
```
```
Possible response status codes:
Possible response status codes:
...
...
doc/ci/ci_cd_for_external_repos/bitbucket_integration.md
View file @
b8afc7b2
...
@@ -14,9 +14,9 @@ To use GitLab CI/CD with a Bitbucket Cloud repository:
...
@@ -14,9 +14,9 @@ To use GitLab CI/CD with a Bitbucket Cloud repository:
1.
In GitLab create a
**CI/CD for external repo**
, select
**Repo by URL**
and
1.
In GitLab create a
**CI/CD for external repo**
, select
**Repo by URL**
and
create the project.
create the project.
![Create project](img/external_repository.png)
!
[
Create project
](
img/external_repository.png
)
GitLab will import the repository and enable [Pull Mirroring][pull-mirroring].
GitLab will import the repository and enable
[
Pull Mirroring
][
pull-mirroring
]
.
1.
In GitLab create a
1.
In GitLab create a
[
Personal Access Token
](
../../user/profile/personal_access_tokens.md
)
[
Personal Access Token
](
../../user/profile/personal_access_tokens.md
)
...
@@ -26,19 +26,19 @@ To use GitLab CI/CD with a Bitbucket Cloud repository:
...
@@ -26,19 +26,19 @@ To use GitLab CI/CD with a Bitbucket Cloud repository:
1.
In Bitbucket, from
**Settings > Webhooks**
, create a new web hook to notify
1.
In Bitbucket, from
**Settings > Webhooks**
, create a new web hook to notify
GitLab of new commits.
GitLab of new commits.
The web hook URL should be set to the GitLab API to trigger pull mirroring,
The web hook URL should be set to the GitLab API to trigger pull mirroring,
using the Personal Access Token we just generated for authentication.
using the Personal Access Token we just generated for authentication.
```text
```
text
https://gitlab.com/api/v4/projects/<NAMESPACE>%2F<PROJECT>/mirror/pull?private_token=<PERSONAL_ACCESS_TOKEN>
https://gitlab.com/api/v4/projects/<NAMESPACE>%2F<PROJECT>/mirror/pull?private_token=<PERSONAL_ACCESS_TOKEN>
```
```
The web hook Trigger should be set to 'Repository Push'.
The web hook Trigger should be set to 'Repository Push'.
![Bitbucket Cloud webhook](img/bitbucket_webhook.png)
!
[
Bitbucket Cloud webhook
](
img/bitbucket_webhook.png
)
After saving, test the web hook by pushing a change to your Bitbucket
After saving, test the web hook by pushing a change to your Bitbucket
repository.
repository.
1.
In Bitbucket, create an
**App Password**
from
**
Bitbucket Settings > App
1.
In Bitbucket, create an
**App Password**
from
**
Bitbucket Settings > App
Passwords
**
to authenticate the build status script setting commit build
Passwords
**
to authenticate the build status script setting commit build
...
@@ -49,104 +49,104 @@ To use GitLab CI/CD with a Bitbucket Cloud repository:
...
@@ -49,104 +49,104 @@ To use GitLab CI/CD with a Bitbucket Cloud repository:
1.
In GitLab, from
**Settings > CI/CD > Environment variables**
, add variables to allow
1.
In GitLab, from
**Settings > CI/CD > Environment variables**
, add variables to allow
communication with Bitbucket via the Bitbucket API:
communication with Bitbucket via the Bitbucket API:
`BITBUCKET_ACCESS_TOKEN`: the Bitbucket app password created above.
`BITBUCKET_ACCESS_TOKEN`
: the Bitbucket app password created above.
`BITBUCKET_USERNAME`: the username of the Bitbucket account.
`BITBUCKET_USERNAME`
: the username of the Bitbucket account.
`BITBUCKET_NAMESPACE`: set this if your GitLab and Bitbucket namespaces differ.
`BITBUCKET_NAMESPACE`
: set this if your GitLab and Bitbucket namespaces differ.
`BITBUCKET_REPOSITORY`: set this if your GitLab and Bitbucket project names differ.
`BITBUCKET_REPOSITORY`
: set this if your GitLab and Bitbucket project names differ.
1.
In Bitbucket, add a script to push the pipeline status to Bitbucket.
1.
In Bitbucket, add a script to push the pipeline status to Bitbucket.
> Note: changes made in GitLab will be overwritten by any changes made
> Note: changes made in GitLab will be overwritten by any changes made
> upstream in Bitbucket.
> upstream in Bitbucket.
Create a file `build_status` and insert the script below and run
Create a file
`build_status`
and insert the script below and run
`chmod +x build_status` in your terminal to make the script executable.
`chmod +x build_status`
in your terminal to make the script executable.
```bash
```
bash
#!/usr/bin/env bash
#!/usr/bin/env bash
# Push GitLab CI/CD build status to Bitbucket Cloud
# Push GitLab CI/CD build status to Bitbucket Cloud
if [ -z "$BITBUCKET_ACCESS_TOKEN" ]; then
if
[
-z
"
$BITBUCKET_ACCESS_TOKEN
"
]
;
then
echo "ERROR: BITBUCKET_ACCESS_TOKEN is not set"
echo
"ERROR: BITBUCKET_ACCESS_TOKEN is not set"
exit 1
exit
1
fi
fi
if [ -z "$BITBUCKET_USERNAME" ]; then
if
[
-z
"
$BITBUCKET_USERNAME
"
]
;
then
echo "ERROR: BITBUCKET_USERNAME is not set"
echo
"ERROR: BITBUCKET_USERNAME is not set"
exit 1
exit
1
fi
fi
if [ -z "$BITBUCKET_NAMESPACE" ]; then
if
[
-z
"
$BITBUCKET_NAMESPACE
"
]
;
then
echo "Setting BITBUCKET_NAMESPACE to $CI_PROJECT_NAMESPACE"
echo
"Setting BITBUCKET_NAMESPACE to
$CI_PROJECT_NAMESPACE
"
BITBUCKET_NAMESPACE=$CI_PROJECT_NAMESPACE
BITBUCKET_NAMESPACE
=
$CI_PROJECT_NAMESPACE
fi
fi
if [ -z "$BITBUCKET_REPOSITORY" ]; then
if
[
-z
"
$BITBUCKET_REPOSITORY
"
]
;
then
echo "Setting BITBUCKET_REPOSITORY to $CI_PROJECT_NAME"
echo
"Setting BITBUCKET_REPOSITORY to
$CI_PROJECT_NAME
"
BITBUCKET_REPOSITORY=$CI_PROJECT_NAME
BITBUCKET_REPOSITORY
=
$CI_PROJECT_NAME
fi
fi
BITBUCKET_API_ROOT="https://api.bitbucket.org/2.0"
BITBUCKET_API_ROOT
=
"https://api.bitbucket.org/2.0"
BITBUCKET_STATUS_API="$BITBUCKET_API_ROOT/repositories/$BITBUCKET_NAMESPACE/$BITBUCKET_REPOSITORY/commit/$CI_COMMIT_SHA/statuses/build"
BITBUCKET_STATUS_API
=
"
$BITBUCKET_API_ROOT
/repositories/
$BITBUCKET_NAMESPACE
/
$BITBUCKET_REPOSITORY
/commit/
$CI_COMMIT_SHA
/statuses/build"
BITBUCKET_KEY="ci/gitlab-ci/$CI_JOB_NAME"
BITBUCKET_KEY
=
"ci/gitlab-ci/
$CI_JOB_NAME
"
case "$BUILD_STATUS" in
case
"
$BUILD_STATUS
"
in
running)
running
)
BITBUCKET_STATE="INPROGRESS"
BITBUCKET_STATE
=
"INPROGRESS"
BITBUCKET_DESCRIPTION="The build is running!"
BITBUCKET_DESCRIPTION
=
"The build is running!"
;;
;;
passed)
passed
)
BITBUCKET_STATE="SUCCESSFUL"
BITBUCKET_STATE
=
"SUCCESSFUL"
BITBUCKET_DESCRIPTION="The build passed!"
BITBUCKET_DESCRIPTION
=
"The build passed!"
;;
;;
failed)
failed
)
BITBUCKET_STATE="FAILED"
BITBUCKET_STATE
=
"FAILED"
BITBUCKET_DESCRIPTION="The build failed."
BITBUCKET_DESCRIPTION
=
"The build failed."
;;
;;
esac
esac
echo "Pushing status to $BITBUCKET_STATUS_API..."
echo
"Pushing status to
$BITBUCKET_STATUS_API
..."
curl --request POST $BITBUCKET_STATUS_API \
curl
--request
POST
$BITBUCKET_STATUS_API
\
--user $BITBUCKET_USERNAME:$BITBUCKET_ACCESS_TOKEN \
--user
$BITBUCKET_USERNAME
:
$BITBUCKET_ACCESS_TOKEN
\
--header "Content-Type:application/json" \
--header
"Content-Type:application/json"
\
--silent \
--silent
\
--data "{ \"state\": \"$BITBUCKET_STATE\", \"key\": \"$BITBUCKET_KEY\", \"description\":
--data
"{
\"
state
\"
:
\"
$BITBUCKET_STATE
\"
,
\"
key
\"
:
\"
$BITBUCKET_KEY
\"
,
\"
description
\"
:
\"$BITBUCKET_DESCRIPTION\",\"url\": \"$CI_PROJECT_URL/-/jobs/$CI_JOB_ID\" }"
\"
$BITBUCKET_DESCRIPTION
\"
,
\"
url
\"
:
\"
$CI_PROJECT_URL
/-/jobs/
$CI_JOB_ID
\"
}"
```
```
1.
Still in Bitbucket, create a
`.gitlab-ci.yml`
file to use the script to push
1.
Still in Bitbucket, create a
`.gitlab-ci.yml`
file to use the script to push
pipeline success and failures to Bitbucket.
pipeline success and failures to Bitbucket.
```yaml
```
yaml
stages:
stages
:
- test
-
test
- ci_status
-
ci_status
unit-tests:
unit-tests
:
script:
script
:
- echo "Success. Add your tests!"
-
echo "Success. Add your tests!"
success:
success
:
stage: ci_status
stage
:
ci_status
before_script:
before_script
:
- ""
-
"
"
after_script:
after_script
:
- ""
-
"
"
script:
script
:
- BUILD_STATUS=passed BUILD_KEY=push ./build_status
-
BUILD_STATUS=passed BUILD_KEY=push ./build_status
when: on_success
when
:
on_success
failure:
failure
:
stage: ci_status
stage
:
ci_status
before_script:
before_script
:
- ""
-
"
"
after_script:
after_script
:
- ""
-
"
"
script:
script
:
- BUILD_STATUS=failed BUILD_KEY=push ./build_status
-
BUILD_STATUS=failed BUILD_KEY=push ./build_status
when: on_failure
when
:
on_failure
```
```
GitLab is now configured to mirror changes from Bitbucket, run CI/CD pipelines
GitLab is now configured to mirror changes from Bitbucket, run CI/CD pipelines
configured in
`.gitlab-ci.yml`
and push the status to Bitbucket.
configured in
`.gitlab-ci.yml`
and push the status to Bitbucket.
...
...
doc/ci/docker/using_docker_build.md
View file @
b8afc7b2
This diff is collapsed.
Click to expand it.
doc/ci/docker/using_docker_images.md
View file @
b8afc7b2
...
@@ -305,25 +305,25 @@ For example, the following two definitions are equal:
...
@@ -305,25 +305,25 @@ For example, the following two definitions are equal:
1.
Using a string as an option to
`image`
and
`services`
:
1.
Using a string as an option to
`image`
and
`services`
:
```yaml
```
yaml
image: "registry.example.com/my/image:latest"
image
:
"
registry.example.com/my/image:latest"
services:
services
:
- postgresql:9.4
-
postgresql:9.4
- redis:latest
-
redis:latest
```
```
1.
Using a map as an option to
`image`
and
`services`
. The use of
`image:name`
is
1.
Using a map as an option to
`image`
and
`services`
. The use of
`image:name`
is
required:
required:
```yaml
```
yaml
image:
image
:
name: "registry.example.com/my/image:latest"
name
:
"
registry.example.com/my/image:latest"
services:
services
:
- name: postgresql:9.4
-
name
:
postgresql:9.4
- name: redis:latest
-
name
:
redis:latest
```
```
### Available settings for `image`
### Available settings for `image`
...
@@ -526,6 +526,7 @@ it's provided as an environment variable. This is because GitLab Runnner uses **
...
@@ -526,6 +526,7 @@ it's provided as an environment variable. This is because GitLab Runnner uses **
runtime.
runtime.
### Using statically-defined credentials
### Using statically-defined credentials
There are two approaches that you can take in order to access a
There are two approaches that you can take in order to access a
private registry. Both require setting the environment variable
private registry. Both require setting the environment variable
`DOCKER_AUTH_CONFIG`
with appropriate authentication info.
`DOCKER_AUTH_CONFIG`
with appropriate authentication info.
...
@@ -555,18 +556,18 @@ There are two ways to determine the value of `DOCKER_AUTH_CONFIG`:
...
@@ -555,18 +556,18 @@ There are two ways to determine the value of `DOCKER_AUTH_CONFIG`:
-
**First way -**
Do a
`docker login`
on your local machine:
-
**First way -**
Do a
`docker login`
on your local machine:
```bash
```
bash
docker login registry.example.com:5000 --username my_username --password my_password
docker login registry.example.com:5000
--username
my_username
--password
my_password
```
```
Then copy the content of `~/.docker/config.json`.
Then copy the content of
`~/.docker/config.json`
.
If you don't need access to the registry from your computer, you
If you don't need access to the registry from your computer, you
can do a `docker logout`:
can do a
`docker logout`
:
```bash
```
bash
docker logout registry.example.com:5000
docker
logout
registry.example.com:5000
```
```
-
**Second way -**
In some setups, it's possible that Docker client
-
**Second way -**
In some setups, it's possible that Docker client
will use the available system keystore to store the result of
`docker
will use the available system keystore to store the result of
`docker
...
@@ -575,12 +576,12 @@ There are two ways to determine the value of `DOCKER_AUTH_CONFIG`:
...
@@ -575,12 +576,12 @@ There are two ways to determine the value of `DOCKER_AUTH_CONFIG`:
`${username}:${password}`
manually. Open a terminal and execute the
`${username}:${password}`
manually. Open a terminal and execute the
following command:
following command:
```bash
```
bash
echo -n "my_username:my_password" | base64
echo
-n
"my_username:my_password"
|
base64
# Example output to copy
# Example output to copy
bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=
bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ
=
```
```
#### Configuring a job
#### Configuring a job
...
@@ -590,25 +591,25 @@ follow these steps:
...
@@ -590,25 +591,25 @@ follow these steps:
1.
Create a
[
variable
](
../variables/README.md#gitlab-cicd-environment-variables
)
`DOCKER_AUTH_CONFIG`
with the content of the
1.
Create a
[
variable
](
../variables/README.md#gitlab-cicd-environment-variables
)
`DOCKER_AUTH_CONFIG`
with the content of the
Docker configuration file as the value:
Docker configuration file as the value:
```json
```
json
{
{
"auths": {
"auths"
:
{
"registry.example.com:5000": {
"registry.example.com:5000"
:
{
"auth": "bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ="
"auth"
:
"bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ="
}
}
}
}
}
}
```
```
1.
You can now use any private image from
`registry.example.com:5000`
defined in
1.
You can now use any private image from
`registry.example.com:5000`
defined in
`image`
and/or
`services`
in your
`.gitlab-ci.yml`
file:
`image`
and/or
`services`
in your
`.gitlab-ci.yml`
file:
```yaml
```
yaml
image: registry.example.com:5000/namespace/image:tag
image
:
registry.example.com:5000/namespace/image:tag
```
```
In the example above, GitLab Runner will look at `registry.example.com:5000` for the
In the example above, GitLab Runner will look at
`registry.example.com:5000`
for the
image `namespace/image:tag`.
image
`namespace/image:tag`
.
You can add configuration for as many registries as you want, adding more
You can add configuration for as many registries as you want, adding more
registries to the
`"auths"`
hash as described above.
registries to the
`"auths"`
hash as described above.
...
@@ -637,10 +638,10 @@ To add `DOCKER_AUTH_CONFIG` to a Runner:
...
@@ -637,10 +638,10 @@ To add `DOCKER_AUTH_CONFIG` to a Runner:
1.
Modify the Runner's
`config.toml`
file as follows:
1.
Modify the Runner's
`config.toml`
file as follows:
```toml
```
toml
[[runners]]
[[runners]]
environment = ["DOCKER_AUTH_CONFIG={\"auths\":{\"registry.example.com:5000\":{\"auth\":\"bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=\"}}}"]
environment
=
["DOCKER_AUTH_CONFIG
=
{
\"
auths\":{\"registry.example.com:5000\":{\"auth\":\"bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ
=
\"
}
}}
"]
```
```
1.
Restart the Runner service.
1.
Restart the Runner service.
...
@@ -662,16 +663,17 @@ To configure credentials store, follow these steps:
...
@@ -662,16 +663,17 @@ To configure credentials store, follow these steps:
Make sure helper program is available in GitLab Runner
`$PATH`
.
Make sure helper program is available in GitLab Runner
`$PATH`
.
1.
Make GitLab Runner use it. There are two ways to accomplish this. Either:
1.
Make GitLab Runner use it. There are two ways to accomplish this. Either:
-
Create a
-
Create a
[
variable
](
../variables/README.md#gitlab-cicd-environment-variables
)
[
variable
](
../variables/README.md#gitlab-cicd-environment-variables
)
`DOCKER_AUTH_CONFIG`
with the content of the
`DOCKER_AUTH_CONFIG`
with the content of the
Docker configuration file as the value:
Docker configuration file as the value:
```json
```json
{
{
"credsStore": "osxkeychain"
"credsStore": "osxkeychain"
}
}
```
```
-
Or, if you are running self-hosted Runners, add the above JSON to
-
Or, if you are running self-hosted Runners, add the above JSON to
`${GITLAB_RUNNER_HOME}/.docker/config.json`
. GitLab Runner will read this config file
`${GITLAB_RUNNER_HOME}/.docker/config.json`
. GitLab Runner will read this config file
...
@@ -693,17 +695,18 @@ To configure access for `aws_account_id.dkr.ecr.region.amazonaws.com`, follow th
...
@@ -693,17 +695,18 @@ To configure access for `aws_account_id.dkr.ecr.region.amazonaws.com`, follow th
1.
Make sure
`docker-credential-ecr-login`
is available in GitLab Runner's
`$PATH`
.
1.
Make sure
`docker-credential-ecr-login`
is available in GitLab Runner's
`$PATH`
.
1.
Make GitLab Runner use it. There are two ways to accomplish this. Either:
1.
Make GitLab Runner use it. There are two ways to accomplish this. Either:
-
Create a
[
variable
](
../variables/README.md#gitlab-cicd-environment-variables
)
-
Create a
[
variable
](
../variables/README.md#gitlab-cicd-environment-variables
)
`DOCKER_AUTH_CONFIG`
with the content of the
`DOCKER_AUTH_CONFIG`
with the content of the
Docker configuration file as the value:
Docker configuration file as the value:
```json
```json
{
{
"credHelpers": {
"credHelpers": {
"aws_account_id.dkr.ecr.region.amazonaws.com": "ecr-login"
"aws_account_id.dkr.ecr.region.amazonaws.com": "ecr-login"
}
}
}
}
```
```
-
Or, if you are running self-hosted Runners,
-
Or, if you are running self-hosted Runners,
add the above JSON to
`${GITLAB_RUNNER_HOME}/.docker/config.json`
.
add the above JSON to
`${GITLAB_RUNNER_HOME}/.docker/config.json`
.
...
@@ -713,12 +716,12 @@ To configure access for `aws_account_id.dkr.ecr.region.amazonaws.com`, follow th
...
@@ -713,12 +716,12 @@ To configure access for `aws_account_id.dkr.ecr.region.amazonaws.com`, follow th
1.
You can now use any private image from
`aws_account_id.dkr.ecr.region.amazonaws.com`
defined in
1.
You can now use any private image from
`aws_account_id.dkr.ecr.region.amazonaws.com`
defined in
`image`
and/or
`services`
in your
`.gitlab-ci.yml`
file:
`image`
and/or
`services`
in your
`.gitlab-ci.yml`
file:
```yaml
```
yaml
image: aws_account_id.dkr.ecr.region.amazonaws.com/private/image:latest
image
:
aws_account_id.dkr.ecr.region.amazonaws.com/private/image:latest
```
```
In the example above, GitLab Runner will look at `aws_account_id.dkr.ecr.region.amazonaws.com` for the
In the example above, GitLab Runner will look at
`aws_account_id.dkr.ecr.region.amazonaws.com`
for the
image `private/image:latest`.
image
`private/image:latest`
.
You can add configuration for as many registries as you want, adding more
You can add configuration for as many registries as you want, adding more
registries to the
`"credHelpers"`
hash as described above.
registries to the
`"credHelpers"`
hash as described above.
...
...
doc/ci/examples/artifactory_and_gitlab/index.md
View file @
b8afc7b2
...
@@ -39,9 +39,10 @@ project:
...
@@ -39,9 +39,10 @@ project:
1.
Create a new project by selecting
**Import project from ➔ Repo by URL**
1.
Create a new project by selecting
**Import project from ➔ Repo by URL**
1.
Add the following URL:
1.
Add the following URL:
```
```
https://gitlab.com/gitlab-examples/maven/simple-maven-dep.git
https://gitlab.com/gitlab-examples/maven/simple-maven-dep.git
```
```
1.
Click
**Create project**
1.
Click
**Create project**
This application is nothing more than a basic class with a stub for a JUnit based test suite.
This application is nothing more than a basic class with a stub for a JUnit based test suite.
...
@@ -63,15 +64,15 @@ The application is ready to use, but you need some additional steps to deploy it
...
@@ -63,15 +64,15 @@ The application is ready to use, but you need some additional steps to deploy it
1.
Copy the snippet in the
`pom.xml`
file for your project, just after the
1.
Copy the snippet in the
`pom.xml`
file for your project, just after the
`dependencies`
section. The snippet should look like this:
`dependencies`
section. The snippet should look like this:
```xml
```
xml
<distributionManagement>
<distributionManagement>
<repository>
<repository>
<id>central</id>
<id>
central
</id>
<name>83d43b5afeb5-releases</name>
<name>
83d43b5afeb5-releases
</name>
<url>${env.MAVEN_REPO_URL}/libs-release-local</url>
<url>
${env.MAVEN_REPO_URL}/libs-release-local
</url>
</repository>
</repository>
</distributionManagement>
</distributionManagement>
```
```
Another step you need to do before you can deploy the dependency to Artifactory
Another step you need to do before you can deploy the dependency to Artifactory
is to configure the authentication data. It is a simple task, but Maven requires
is to configure the authentication data. It is a simple task, but Maven requires
...
@@ -86,18 +87,18 @@ parameter in `.gitlab-ci.yml` to use the custom location instead of the default
...
@@ -86,18 +87,18 @@ parameter in `.gitlab-ci.yml` to use the custom location instead of the default
1.
Create a file called
`settings.xml`
in the
`.m2`
folder
1.
Create a file called
`settings.xml`
in the
`.m2`
folder
1.
Copy the following content into a
`settings.xml`
file:
1.
Copy the following content into a
`settings.xml`
file:
```xml
```
xml
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"
<settings
xsi:schemaLocation=
"http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"
xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
xmlns=
"http://maven.apache.org/SETTINGS/1.1.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
>
<servers>
<servers>
<server>
<server>
<id>central</id>
<id>
central
</id>
<username>${env.MAVEN_REPO_USER}</username>
<username>
${env.MAVEN_REPO_USER}
</username>
<password>${env.MAVEN_REPO_PASS}</password>
<password>
${env.MAVEN_REPO_PASS}
</password>
</server>
</server>
</servers>
</servers>
</settings>
</settings>
```
```
Username and password will be replaced by the correct values using variables.
Username and password will be replaced by the correct values using variables.
...
@@ -187,9 +188,10 @@ We'll use again a Maven app that can be cloned from our example project:
...
@@ -187,9 +188,10 @@ We'll use again a Maven app that can be cloned from our example project:
1.
Create a new project by selecting
**Import project from ➔ Repo by URL**
1.
Create a new project by selecting
**Import project from ➔ Repo by URL**
1.
Add the following URL:
1.
Add the following URL:
```
```
https://gitlab.com/gitlab-examples/maven/simple-maven-app.git
https://gitlab.com/gitlab-examples/maven/simple-maven-app.git
```
```
1.
Click
**Create project**
1.
Click
**Create project**
This one is a simple app as well. If you look at the
`src/main/java/com/example/app/App.java`
This one is a simple app as well. If you look at the
`src/main/java/com/example/app/App.java`
...
@@ -204,13 +206,13 @@ Since Maven doesn't know how to resolve the dependency, you need to modify the c
...
@@ -204,13 +206,13 @@ Since Maven doesn't know how to resolve the dependency, you need to modify the c
1.
Copy the snippet in the
`dependencies`
section of the
`pom.xml`
file.
1.
Copy the snippet in the
`dependencies`
section of the
`pom.xml`
file.
The snippet should look like this:
The snippet should look like this:
```xml
```
xml
<dependency>
<dependency>
<groupId>com.example.dep</groupId>
<groupId>
com.example.dep
</groupId>
<artifactId>simple-maven-dep</artifactId>
<artifactId>
simple-maven-dep
</artifactId>
<version>1.0</version>
<version>
1.0
</version>
</dependency>
</dependency>
```
```
### Configure the Artifactory repository location
### Configure the Artifactory repository location
...
...
doc/ci/examples/test_phoenix_app_with_gitlab_ci_cd/index.md
View file @
b8afc7b2
...
@@ -188,28 +188,27 @@ when running our Phoenix in our `localhost`.
...
@@ -188,28 +188,27 @@ when running our Phoenix in our `localhost`.
-
Open
`hello_gitlab_ci/config/test.exs`
on your favorite code editor
-
Open
`hello_gitlab_ci/config/test.exs`
on your favorite code editor
-
Go to
**Configure your database**
session and edit the block to include
`System.get_env`
:
-
Go to
**Configure your database**
session and edit the block to include
`System.get_env`
:
```elixir
```
elixir
# Configure your database
# Configure your database
config :hello_gitlab_ci, HelloGitlabCi.Repo,
config
:hello_gitlab_ci
,
HelloGitlabCi
.
Repo
,
adapter: Ecto.Adapters.Postgres,
adapter:
Ecto
.
Adapters
.
Postgres
,
username: System.get_env("POSTGRES_USER") || "postgres",
username:
System
.
get_env
(
"POSTGRES_USER"
)
||
"postgres"
,
password: System.get_env("POSTGRES_PASSWORD") || "postgres",
password:
System
.
get_env
(
"POSTGRES_PASSWORD"
)
||
"postgres"
,
database: System.get_env("POSTGRES_DB") || "hello_gitlab_ci_test",
database:
System
.
get_env
(
"POSTGRES_DB"
)
||
"hello_gitlab_ci_test"
,
hostname: System.get_env("POSTGRES_HOST") || "localhost",
hostname:
System
.
get_env
(
"POSTGRES_HOST"
)
||
"localhost"
,
pool: Ecto.Adapters.SQL.Sandbox
pool:
Ecto
.
Adapters
.
SQL
.
Sandbox
```
```
We'll need these system variables later on.
We'll need these system variables later on.
-
Create an empty file named
`.gitkeep`
into
`hello_gitlab_ci/priv/repo/migrations`
-
Create an empty file named
`.gitkeep`
into
`hello_gitlab_ci/priv/repo/migrations`
As our project is still fresh, we don't have any data on our database, so, the `migrations`
As our project is still fresh, we don't have any data on our database, so, the
`migrations`
directory will be empty.
directory will be empty.
Without
`.gitkeep`
, git will not upload this empty directory and we'll got an error when running our
Without
`.gitkeep`
, git will not upload this empty directory and we'll got an error when running our
test on GitLab.
test on GitLab.
> **Note:**
> **Note:** If we add a folder via the GitLab UI, GitLab itself will add the `.gitkeep` to that new dir.
If we add a folder via the GitLab UI, GitLab itself will add the `.gitkeep` to that new dir.
Now, let's run a local test and see if everything we did didn't break anything.
Now, let's run a local test and see if everything we did didn't break anything.
...
@@ -248,64 +247,64 @@ project.
...
@@ -248,64 +247,64 @@ project.
-
The fastest and easiest way to do this, is to click on
**Set up CI**
on project's main page:
-
The fastest and easiest way to do this, is to click on
**Set up CI**
on project's main page:
![Set up CI](img/setup-ci.png)
!
[
Set up CI
](
img/setup-ci.png
)
-
On next screen, we can select a template ready to go. Click on
**
Apply a GitLab CI/CD Yaml
-
On next screen, we can select a template ready to go. Click on
**
Apply a GitLab CI/CD Yaml
template
** and select **
Elixir
**
:
template
** and select **
Elixir
**
:
![Select template](img/select-template.png)
!
[
Select template
](
img/select-template.png
)
This template file tells GitLab CI/CD about what we wish to do every time a new commit is made.
This template file tells GitLab CI/CD about what we wish to do every time a new commit is made.
However, we have to adapt it to run a Phoenix app.
However, we have to adapt it to run a Phoenix app.
-
The first line tells GitLab what Docker image will be used.
-
The first line tells GitLab what Docker image will be used.
Remember when we learn about Runners, the isolated virtual machine where GitLab CI/CD build and test
Remember when we learn about Runners, the isolated virtual machine where GitLab CI/CD build and test
our application? This virtual machine must have all dependencies to run our application. This is
our application? This virtual machine must have all dependencies to run our application. This is
where a Docker image is needed. The correct image will provide the entire system for us.
where a Docker image is needed. The correct image will provide the entire system for us.
As a suggestion, you can use [trenpixster's elixir image][docker-image], which already has all
As a suggestion, you can use
[
trenpixster's elixir image
][
docker-image
]
, which already has all
dependencies for Phoenix installed, such as Elixir, Erlang, NodeJS and PostgreSQL:
dependencies for Phoenix installed, such as Elixir, Erlang, NodeJS and PostgreSQL:
```yml
```
yml
image: trenpixster/elixir:latest
image
:
trenpixster/elixir:latest
```
```
-
At
`services`
session, we'll only use
`postgres`
, so we'll delete
`mysql`
and
`redis`
lines:
-
At
`services`
session, we'll only use
`postgres`
, so we'll delete
`mysql`
and
`redis`
lines:
```yml
```
yml
services:
services
:
- postgres:latest
-
postgres:latest
```
```
-
Now, we'll create a new entry called
`variables`
, before
`before_script`
session:
-
Now, we'll create a new entry called
`variables`
, before
`before_script`
session:
```yml
```
yml
variables:
variables
:
POSTGRES_DB: hello_gitlab_ci_test
POSTGRES_DB
:
hello_gitlab_ci_test
POSTGRES_HOST: postgres
POSTGRES_HOST
:
postgres
POSTGRES_USER: postgres
POSTGRES_USER
:
postgres
POSTGRES_PASSWORD: "postgres"
POSTGRES_PASSWORD
:
"
postgres"
MIX_ENV: "test"
MIX_ENV
:
"
test"
```
```
Here, we are setting up the values for GitLab CI/CD authenticate into PostgreSQL, as we did on
Here, we are setting up the values for GitLab CI/CD authenticate into PostgreSQL, as we did on
`config/test.exs` earlier.
`config/test.exs`
earlier.
-
In
`before_script`
session, we'll add some commands to prepare everything to the test:
-
In
`before_script`
session, we'll add some commands to prepare everything to the test:
```yml
```
yml
before_script:
before_script
:
- apt-get update && apt-get -y install postgresql-client
-
apt-get update && apt-get -y install postgresql-client
- mix local.hex --force
-
mix local.hex --force
- mix deps.get --only test
-
mix deps.get --only test
- mix ecto.create
-
mix ecto.create
- mix ecto.migrate
-
mix ecto.migrate
```
```
It's important to install `postgresql-client` to let GitLab CI/CD access PostgreSQL and create our
It's important to install
`postgresql-client`
to let GitLab CI/CD access PostgreSQL and create our
database with the login information provided earlier. More important is to respect the indentation,
database with the login information provided earlier. More important is to respect the indentation,
to avoid syntax errors when running the build.
to avoid syntax errors when running the build.
-
And finally, we'll let
`mix`
session intact.
-
And finally, we'll let
`mix`
session intact.
...
...
doc/ci/ssh_keys/README.md
View file @
b8afc7b2
...
@@ -57,44 +57,44 @@ to access it. This is where an SSH key pair comes in handy.
...
@@ -57,44 +57,44 @@ to access it. This is where an SSH key pair comes in handy.
1.
Modify your
`.gitlab-ci.yml`
with a
`before_script`
action. In the following
1.
Modify your
`.gitlab-ci.yml`
with a
`before_script`
action. In the following
example, a Debian based image is assumed. Edit to your needs:
example, a Debian based image is assumed. Edit to your needs:
```yaml
```
yaml
before_script:
before_script
:
##
##
## Install ssh-agent if not already installed, it is required by Docker.
## Install ssh-agent if not already installed, it is required by Docker.
## (change apt-get to yum if you use an RPM-based image)
## (change apt-get to yum if you use an RPM-based image)
##
##
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
-
'
which
ssh-agent
||
(
apt-get
update
-y
&&
apt-get
install
openssh-client
-y
)'
##
##
## Run ssh-agent (inside the build environment)
## Run ssh-agent (inside the build environment)
##
##
- eval $(ssh-agent -s)
-
eval $(ssh-agent -s)
##
##
## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
## We're using tr to fix line endings which makes ed25519 keys work
## We're using tr to fix line endings which makes ed25519 keys work
## without extra base64 encoding.
## without extra base64 encoding.
## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
##
##
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
-
echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
##
##
## Create the SSH directory and give it the right permissions
## Create the SSH directory and give it the right permissions
##
##
- mkdir -p ~/.ssh
-
mkdir -p ~/.ssh
- chmod 700 ~/.ssh
-
chmod 700 ~/.ssh
##
##
## Optionally, if you will be using any Git commands, set the user name and
## Optionally, if you will be using any Git commands, set the user name and
## and email.
## and email.
##
##
#- git config --global user.email "user@example.com"
#- git config --global user.email "user@example.com"
#- git config --global user.name "User name"
#- git config --global user.name "User name"
```
```
NOTE: **Note:**
NOTE:
**Note:**
The [`before_script`](../yaml/README.md#before_script-and-after_script) can be set globally
The
[
`before_script`
](
../yaml/README.md#before_script-and-after_script
)
can be set globally
or per-job.
or per-job.
1.
Make sure the private server's
[
SSH host keys are verified
](
#verifying-the-ssh-host-keys
)
.
1.
Make sure the private server's
[
SSH host keys are verified
](
#verifying-the-ssh-host-keys
)
.
...
@@ -118,9 +118,9 @@ on, and use that key for all projects that are run on this machine.
...
@@ -118,9 +118,9 @@ on, and use that key for all projects that are run on this machine.
1.
Then from the terminal login as the
`gitlab-runner`
user:
1.
Then from the terminal login as the
`gitlab-runner`
user:
```
```
sudo su - gitlab-runner
sudo su - gitlab-runner
```
```
1.
Generate the SSH key pair as described in the instructions to
1.
Generate the SSH key pair as described in the instructions to
[
generate an SSH key
](
../../ssh/README.md#generating-a-new-ssh-key-pair
)
.
[
generate an SSH key
](
../../ssh/README.md#generating-a-new-ssh-key-pair
)
.
...
...
doc/ci/yaml/README.md
View file @
b8afc7b2
...
@@ -2468,20 +2468,20 @@ There are three possible values: `none`, `normal`, and `recursive`:
...
@@ -2468,20 +2468,20 @@ There are three possible values: `none`, `normal`, and `recursive`:
-
`normal`
means that only the top-level submodules will be included. It is
-
`normal`
means that only the top-level submodules will be included. It is
equivalent to:
equivalent to:
```
```
git submodule sync
git submodule sync
git submodule update --init
git submodule update --init
```
```
-
`recursive`
means that all submodules (including submodules of submodules)
-
`recursive`
means that all submodules (including submodules of submodules)
will be included. This feature needs Git v1.8.1 and later. When using a
will be included. This feature needs Git v1.8.1 and later. When using a
GitLab Runner with an executor not based on Docker, make sure the Git version
GitLab Runner with an executor not based on Docker, make sure the Git version
meets that requirement. It is equivalent to:
meets that requirement. It is equivalent to:
```
```
git submodule sync --recursive
git submodule sync --recursive
git submodule update --init --recursive
git submodule update --init --recursive
```
```
Note that for this feature to work correctly, the submodules must be configured
Note that for this feature to work correctly, the submodules must be configured
(in
`.gitmodules`
) with either:
(in
`.gitmodules`
) with either:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment