diff --git a/lib/glob-assets.js b/lib/glob-assets.js
index e8914489..a4e880b1 100644
--- a/lib/glob-assets.js
+++ b/lib/glob-assets.js
@@ -1,12 +1,11 @@
 const path = require('path');
-const {basename} = require('path');
 const {isPlainObject, castArray, uniqWith, uniq} = require('lodash');
 const dirGlob = require('dir-glob');
 const globby = require('globby');
 const debug = require('debug')('semantic-release:gitlab');
 
-module.exports = async ({cwd}, assets) =>
-  uniqWith(
+module.exports = async ({pkgRoot, cwd}, assets) => {
+  return uniqWith(
     []
       .concat(
         ...(await Promise.all(
@@ -42,7 +41,7 @@ module.exports = async ({cwd}, assets) =>
                 // - `filepath` ignored (also to avoid duplicates)
                 // - other properties of the original asset definition
                 const {filepath, ...others} = asset;
-                return globbed.map(file => ({...others, path: file, label: basename(file)}));
+                return globbed.map(file => ({...others, path: file, label: path.relative(pkgRoot || '.', file)}));
               }
 
               // If asset is an Object, output an Object definition with:
@@ -66,3 +65,4 @@ module.exports = async ({cwd}, assets) =>
     // Compare `path` property if Object definition, value itself if String
     (a, b) => path.resolve(cwd, isPlainObject(a) ? a.path : a) === path.resolve(cwd, isPlainObject(b) ? b.path : b)
   );
+};
diff --git a/lib/publish.js b/lib/publish.js
index d2384766..4e25f1a4 100644
--- a/lib/publish.js
+++ b/lib/publish.js
@@ -30,7 +30,7 @@ module.exports = async (pluginConfig, context) => {
   debug('milestones: %o', milestones);
 
   if (assets && assets.length > 0) {
-    const globbedAssets = await getAssets(context, assets);
+    const globbedAssets = await getAssets({cwd: context.cwd, pkgRoot: pluginConfig.pkgRoot}, assets);
     debug('globbed assets: %o', globbedAssets);
 
     await Promise.all(
diff --git a/lib/resolve-config.js b/lib/resolve-config.js
index 8fc3a413..94776393 100644
--- a/lib/resolve-config.js
+++ b/lib/resolve-config.js
@@ -1,23 +1,21 @@
 const {castArray, isNil} = require('lodash');
 const urlJoin = require('url-join');
 
-module.exports = (
-  {gitlabUrl, gitlabApiPathPrefix, assets, milestones},
-  {
-    envCi: {service} = {},
-    env: {
-      CI_PROJECT_URL,
-      CI_PROJECT_PATH,
-      CI_API_V4_URL,
-      GL_TOKEN,
-      GITLAB_TOKEN,
-      GL_URL,
-      GITLAB_URL,
-      GL_PREFIX,
-      GITLAB_PREFIX,
-    },
-  }
-) => {
+module.exports = (pluginConfig, context) => {
+  const {gitlabUrl, gitlabApiPathPrefix, assets, milestones, pkgRoot} = pluginConfig;
+  const {service} = context.envCi || {service: undefined};
+  const {
+    CI_PROJECT_URL,
+    CI_PROJECT_PATH,
+    CI_API_V4_URL,
+    GL_TOKEN,
+    GITLAB_TOKEN,
+    GL_URL,
+    GITLAB_URL,
+    GL_PREFIX,
+    GITLAB_PREFIX,
+  } = context.env;
+
   const userGitlabApiPathPrefix = isNil(gitlabApiPathPrefix)
     ? isNil(GL_PREFIX)
       ? GITLAB_PREFIX
@@ -31,6 +29,7 @@ module.exports = (
       : 'https://gitlab.com');
 
   return {
+    pkgRoot,
     gitlabToken: GL_TOKEN || GITLAB_TOKEN,
     gitlabUrl: defaultedGitlabUrl,
     gitlabApiUrl:
diff --git a/test/resolve-config.test.js b/test/resolve-config.test.js
index 3d0ddfd5..0d1abcf3 100644
--- a/test/resolve-config.test.js
+++ b/test/resolve-config.test.js
@@ -14,6 +14,7 @@ test('Returns user config', t => {
     gitlabApiUrl: urlJoin(gitlabUrl, gitlabApiPathPrefix),
     assets,
     milestones: undefined,
+    pkgRoot: undefined,
   });
 });
 
@@ -35,6 +36,7 @@ test('Returns user config via environment variables', t => {
       gitlabApiUrl: urlJoin(gitlabUrl, gitlabApiPathPrefix),
       assets,
       milestones,
+      pkgRoot: undefined,
     }
   );
 });
@@ -53,6 +55,7 @@ test('Returns user config via alternative environment variables', t => {
       gitlabApiUrl: urlJoin(gitlabUrl, gitlabApiPathPrefix),
       assets,
       milestones: undefined,
+      pkgRoot: undefined,
     }
   );
 });
@@ -68,6 +71,7 @@ test('Returns default config', t => {
     gitlabApiUrl: urlJoin('https://gitlab.com', '/api/v4'),
     assets: undefined,
     milestones: undefined,
+    pkgRoot: undefined,
   });
 
   t.deepEqual(resolveConfig({gitlabApiPathPrefix}, {env: {GL_TOKEN: gitlabToken}}), {
@@ -76,6 +80,7 @@ test('Returns default config', t => {
     gitlabApiUrl: urlJoin('https://gitlab.com', gitlabApiPathPrefix),
     assets: undefined,
     milestones: undefined,
+    pkgRoot: undefined,
   });
 
   t.deepEqual(resolveConfig({gitlabUrl}, {env: {GL_TOKEN: gitlabToken}}), {
@@ -84,6 +89,7 @@ test('Returns default config', t => {
     gitlabApiUrl: urlJoin(gitlabUrl, '/api/v4'),
     assets: undefined,
     milestones: undefined,
+    pkgRoot: undefined,
   });
 });
 
@@ -107,6 +113,7 @@ test('Returns default config via GitLab CI/CD environment variables', t => {
       gitlabApiUrl: CI_API_V4_URL,
       assets: undefined,
       milestones: undefined,
+      pkgRoot: undefined,
     }
   );
 });
@@ -134,6 +141,7 @@ test('Returns user config over GitLab CI/CD environment variables', t => {
       gitlabApiUrl: urlJoin(gitlabUrl, gitlabApiPathPrefix),
       assets,
       milestones: undefined,
+      pkgRoot: undefined,
     }
   );
 });
@@ -167,6 +175,7 @@ test('Returns user config via environment variables over GitLab CI/CD environmen
       gitlabApiUrl: urlJoin(gitlabUrl, gitlabApiPathPrefix),
       assets: undefined,
       milestones: undefined,
+      pkgRoot: undefined,
     }
   );
 });
@@ -200,6 +209,7 @@ test('Returns user config via alternative environment variables over GitLab CI/C
       gitlabApiUrl: urlJoin(gitlabUrl, gitlabApiPathPrefix),
       assets: undefined,
       milestones: undefined,
+      pkgRoot: undefined,
     }
   );
 });
@@ -224,6 +234,7 @@ test('Ignore GitLab CI/CD environment variables if not running on GitLab CI/CD',
       gitlabApiUrl: urlJoin('https://gitlab.com', '/api/v4'),
       assets: undefined,
       milestones: undefined,
+      pkgRoot: undefined,
     }
   );
 });