diff mbox series

[v1,1/1] ci: facilitate dev to mimic a CI environment

Message ID 20210326170505.7771-2-stdedos+git@gmail.com (mailing list archive)
State New, archived
Headers show
Series ci: facilitate dev to mimic a CI environment | expand

Commit Message

Σταύρος Ντέντος March 26, 2021, 5:05 p.m. UTC
From: Stavros Ntentos <133706+stdedos@users.noreply.github.com>

While trying to mimic a CI environment (to be able to
locally run tests in isolation), I didn't find enough
instructions how to do so - even though the project has CI set up.

Attempt to bridge the gap, by providing a starting/discussion point.

Leave instructions for people that want to
run a ci-like isolated environment locally.
---
 .../setup-local-dev-environment-docker.sh     | 43 +++++++++++++++++++
 ci/setup-local-dev-environment-docker.sh      |  1 +
 2 files changed, 44 insertions(+)
 create mode 100644 Documentation/howto/setup-local-dev-environment-docker.sh
 create mode 120000 ci/setup-local-dev-environment-docker.sh

--
2.31.0

Comments

Bagas Sanjaya March 27, 2021, 6:52 a.m. UTC | #1
On 27/03/21 00.05, Σταύρος Ντέντος wrote:
> diff --git a/Documentation/howto/setup-local-dev-environment-docker.sh b/Documentation/howto/setup-local-dev-environment-docker.sh
> new file mode 100644
> index 0000000000..265602ea55
> --- /dev/null
> +++ b/Documentation/howto/setup-local-dev-environment-docker.sh
> @@ -0,0 +1,43 @@
> +#!/bin/false
Wait, why did you make this documentation /bin/false script? I think
it is better to be in Asciidoc format (.txt)
> +# shellcheck shell=sh
> +
> +# Partially based on instructions from:
> +# ci/run-docker.sh
> +#
> +# Note: Alpine (and consequently the other variant ["non-32-bit"]) complains of:
> +# git-compat-util.h:  1139:	#error "Git requires REG_STARTEND support. Compile with NO_REGEX=NeedsStartEnd"
> +# and no
> +# ```bash
> +# export NO_REGEX=NeedsStartEnd
> +# /usr/src/git/ci/run-docker-build.sh 0
> +# ```
> +# helps
> +
> +docker run -itv "${PWD}:/usr/src/git" --entrypoint /bin/bash "daald/ubuntu32:xenial"
> +
> +# And then, inside, initialize with:
> +
> +export jobname=Linux32
> +
> +# Helpful initializations:
> +
> +cat >> ~/.gdbinit <<"EOF"
> +# https://stackoverflow.com/a/3176802/2309247
> +set history save on
> +set history size -1
> +set history filename ~/.gdb_history
> +EOF
> +chmod 600 ~/.gdbinit
> +
> +# cd to repo
> +
> +cd /usr/src/git/ || echo "cd error!"
> +
> +# In lieu of `$ make`:
> +ci/run-docker-build.sh 0
> +
> +# # And then run a test with:
> +# prove t/t6130-pathspec-noglob.sh
> +# t/t6130-pathspec-noglob.sh
> +# ci/run-docker-build.sh 0 && prove t/t6130-pathspec-noglob.sh
> diff --git a/ci/setup-local-dev-environment-docker.sh b/ci/setup-local-dev-environment-docker.sh
> new file mode 120000
> index 0000000000..1c4bcc90a9
> --- /dev/null
> +++ b/ci/setup-local-dev-environment-docker.sh
> @@ -0,0 +1 @@
> +../Documentation/howto/setup-local-dev-environment-docker.sh
> \ No newline at end of file
> --
> 2.31.0
>
Σταύρος Ντέντος March 27, 2021, 9:08 a.m. UTC | #2
> > diff --git a/Documentation/howto/setup-local-dev-environment-docker.sh b/Documentation/howto/setup-local-dev-environment-docker.sh
> > new file mode 100644
> > index 0000000000..265602ea55
> > --- /dev/null
> > +++ b/Documentation/howto/setup-local-dev-environment-docker.sh
> > @@ -0,0 +1,43 @@
> > +#!/bin/false
> Wait, why did you make this documentation /bin/false script? I think
> it is better to be in Asciidoc format (.txt)

My full intention was to actually _create_ a script that would put a
wanna-be developer (me) from (a) looking at my terminal inside git/,
to (b) have a ci-like environment, inside an abstraction layer (docker)
with linked sources (i.e. the "${PWD}:/usr/src/git" part).

However, the way sources and docker invocation are defined, I find it hard
to create "the script". Also because (again) my docker knowledge is limited.

I want future nitpick-fixers (hopefully with more docker experience),
to look at this script with such agenda in mind - and not to "just"
document their findings alongside mine.

`#!/bin/false` is simply my way of saying "it's not ready to be run yet",
and I used `.sh` to get formatting / syntax highlighting cheaper than
running a fully-fledged .md file.

If you still insist it's no good as a ".sh",
my intention would be to make it .md (to get some formatting in it).
diff mbox series

Patch

diff --git a/Documentation/howto/setup-local-dev-environment-docker.sh b/Documentation/howto/setup-local-dev-environment-docker.sh
new file mode 100644
index 0000000000..265602ea55
--- /dev/null
+++ b/Documentation/howto/setup-local-dev-environment-docker.sh
@@ -0,0 +1,43 @@ 
+#!/bin/false
+
+# shellcheck shell=sh
+
+# Partially based on instructions from:
+# ci/run-docker.sh
+#
+# Note: Alpine (and consequently the other variant ["non-32-bit"]) complains of:
+# git-compat-util.h:  1139:	#error "Git requires REG_STARTEND support. Compile with NO_REGEX=NeedsStartEnd"
+# and no
+# ```bash
+# export NO_REGEX=NeedsStartEnd
+# /usr/src/git/ci/run-docker-build.sh 0
+# ```
+# helps
+
+docker run -itv "${PWD}:/usr/src/git" --entrypoint /bin/bash "daald/ubuntu32:xenial"
+
+# And then, inside, initialize with:
+
+export jobname=Linux32
+
+# Helpful initializations:
+
+cat >> ~/.gdbinit <<"EOF"
+# https://stackoverflow.com/a/3176802/2309247
+set history save on
+set history size -1
+set history filename ~/.gdb_history
+EOF
+chmod 600 ~/.gdbinit
+
+# cd to repo
+
+cd /usr/src/git/ || echo "cd error!"
+
+# In lieu of `$ make`:
+ci/run-docker-build.sh 0
+
+# # And then run a test with:
+# prove t/t6130-pathspec-noglob.sh
+# t/t6130-pathspec-noglob.sh
+# ci/run-docker-build.sh 0 && prove t/t6130-pathspec-noglob.sh
diff --git a/ci/setup-local-dev-environment-docker.sh b/ci/setup-local-dev-environment-docker.sh
new file mode 120000
index 0000000000..1c4bcc90a9
--- /dev/null
+++ b/ci/setup-local-dev-environment-docker.sh
@@ -0,0 +1 @@ 
+../Documentation/howto/setup-local-dev-environment-docker.sh
\ No newline at end of file