我有一个脚本,它使用 Azure DevOps API 来检索查询中的每个工作项。然后它检索每个工作项的元数据。它需要 PAT。直到今天,PAT 仍然有效。我相信它已经过期了。我创建了一个新的 PAT,但每次检索相同信息的尝试都是未经授权的 (401)。
我的脚本中的 cURL 命令到目前为止一直有效:
ado_token={username@company.com:PAT, all Base-64 encoded as one string}
curl -X GET -H "Authorization: Basic $ado_token" -H 'Cache-Control: no-cache' "https://dev.azure.com/{company}/{project}/_apis/wit/wiql/{query ID}?api-version=5.1"
Run Code Online (Sandbox Code Playgroud)
以下是事实:
有关 ADO PAT 的 Microsoft 文档提供了以下示例:
curl -u username[:{personalaccesstoken}] https://dev.azure.com/{organization}/_apis/build-release/builds
Run Code Online (Sandbox Code Playgroud)
但是,当我使用我知道正确的 URL 输入我的用户名和 PAT 时,它是未经授权的。
无论是 Microsoft 示例的格式还是我想在脚本中使用的 URL,这些在Bearer和的所有迭代中都是未经授权的Basic。使用的 URL 在浏览器中有效:
我已经在命令行和邮递员中尝试过,但没有提供任何添加信息。
我错过了一些明显的东西吗?最令人困惑的方面是以前的 PAT …
存储库(“网站”)有一个子模块(“模板”)。该子模块在存储库的目录中被引用。目标是使用 Azure DevOps 管道一起构建存储库和子模块。但是,Azure DevOps 构建会引发以下错误:
fatal: No url found for submodule path '<repo directory AKA "website">/<submodule directory AKA "template">' in .gitmodules[error]Git submodule update failed with exit code: 128根据对.gitmodule文件的调整,还会引发此错误:
fatal: no submodule mapping found in .gitmodules for path '<repo directory AKA "website">/<submodule directory AKA "template">'。这个问题与 Stack Overflow 上提出的其他问题类似,但不同之处在于 Azure DevOps 构建中的默认初始步骤是签出分支中的文件。因此脚本(如git rm --cached <pathtomodule>)不能首先运行。
“网站”和“模板”存储库位于同一个 Azure DevOps 项目中。
我尝试了两种方法都没有成功。两者均基于 Microsoft 文档。这是因为我不清楚同一项目的子模块是否可以在不提供显式凭据的情况下包含在存储库中。
通过用户界面:
通过 PowerShell 任务中的 git 命令: …
如果在某处记录了以编程方式(不是通过在浏览器字段中复制/粘贴并单击按钮进行转换)的简单方法,我深表歉意。在我的搜索和阅读中,我找不到它。
我想以编程方式将 Markdown 和 CSS 文件转换为听起来可能被称为“内联”CSS 的内容。例如:
这个 Markdown 文件 ( file.md)
# Install
Install instructions
## Update
Update instructions
Run Code Online (Sandbox Code Playgroud)
这个 CSS 文件 ( style.css)
h1 {
font-size: 100px;
}
h2 {
color: red;
}
Run Code Online (Sandbox Code Playgroud)
变成这样(file.html)
<h1 style="font-size: 100px;"><a id="install"></a>Install</h1>
<p>Install instructions</p>
<h2 style="color: red;"><a id="update"><a>Update</h2>
<p>Update instructions</p>
Run Code Online (Sandbox Code Playgroud)
我正在使用Pandoc将 Markdown 转换为 HTML
pandoc -f markdown -t html file.md -o file.html
Run Code Online (Sandbox Code Playgroud)
当我使用
pandoc -f markdown -t html file.md -o file.html --css=style.css --self-contained
Run Code Online (Sandbox Code Playgroud)
(或--standalone) …
使用 cURL 和 Bash 将分页 REST API 调用中的所有对象包含在单个 JSON 文件中。此组合列表将输入到 Power BI 报告中。
一个请求最多返回 100 个对象。总共有 400 多个对象。总量随着时间的推移而增长。我不想维护包含类似内容的脚本,for set in 0 100 200 300 400 ; do因为它需要我手动将集合与当前的对象数量匹配。为了节省人力,我想要一个脚本来自动检测最终页面何时被处理然后中断。
为了实现我的目标,到目前为止我提出的计划是将每个 100 个项目的增量集提取到自己的 JSON 文件中,然后cat使用 JQ 将它们组合起来并提取相关的 JSON 键/值。使用 Bash 的原因是它是我所知道的唯一编程。
(基于此问答)
for ((i=0; ; i+=100)); do
contents=$(curl -u "username:password" -H "Content-Type: application/json" "https://<url>/api/core/v3/places?count=100&startIndex=$i")
echo "$contents" > $i.json
if [[ $contents =~ 'list" : [ ]' ]]
then break
fi
done
Run Code Online (Sandbox Code Playgroud)
除第一页和最后一页外,所有页面均按预期导出:
用例:在 Azure Application Insights 中,从 Azure Web 应用创建每页的视图表
在 Azure Application Insights 中使用 Kusto,我想合并表 1 中的行:
进入表2:
不幸的是,下面的查询将第一列(第一行除外)中的单元格替换为第二列中的单元格。这是基于查询的编写方式所预期的。不幸的是,这是不正确的,而不是我的目标。
pageViews
| where timestamp between(datetime("2020-03-01T00:00:00.000Z")..datetime("2020-06-01T00:00:00.000Z"))
| extend guide = case(
url contains "/guide-1/","guide-1",
url contains "/guide-2/","guide-2",
url contains "/guide-3/","guide-3",
"home-page"
)
| extend tag = case(
url contains "/guide-1/","install",
guide contains "home-page","home-page",
"how-to"
)
| extend name = case(
name contains "Welcome to docs","Welcome to docs",
"home-page" //This is incorrect - nothing should happen if the name does not contain "Welcome to …Run Code Online (Sandbox Code Playgroud) 将带有 HTML 的 Markdown 文件转换为纯 Markdown
in.md# Title
## Subtitle
### Sub-subtitle
<span><div>Line before image</div><div><br></div><div><img src="img.png" width=404 height=255><br></div><div><br></div><div>Line after image</div><div><br></div><div>Text</div></span><h1><span>Heading 1</span></h1><span><div>Text</div><div><br></div></span><h2><span>Heading 2</span></h2><span><div>Text</div></span><h3><span>Heading 3</span></h3><div><span>Text</span></div><div><span><br></span></div><span><div>Line before code</div><code><pre><code><div>Code line 1</div><div>Code line 2</div><div>Code line 3</div></code></pre></code><div><span style="">Line after code</span><br></div><div><span style=""><br></span></div><div><span style=""><a href="http://pandoc.org">Link</a></span></div><div><span style=""><br></span></div><div><ul><li>Unordered bullet 1<br></li><li>Unordered bullet 2<br></li></ul></div><div><span style=""><br></span></div><div><ol><li>Ordered bullet 1<br></li><li>Ordered bullet 2<br></li></ol></div><div><span style=""><br></span></div></span><blockquote style="margin:0 0 0 40px;border:none;padding:0px;"><span><div><span style="">Quote line 1</span></div></span><span><div><span style="">Quote line 2</span></div></span></blockquote><span><div><span style=""><br></span></div><div><span style="">Text</span></div><div><span style=""><br></span></div><div><i>Italic</i></div><div><i><br></i></div><div>Text</div><div></div></span>
Markdown text
More Markdown text
Run Code Online (Sandbox Code Playgroud)
我尝试了许多 Pandoc 脚本:
pandoc -f markdown -t markdown_strict …
Azure 函数必须从 00:59:59(小时、分钟、秒)开始无限期地每 10 分钟运行一次。我使用的 cron 计划不成功。
我正在使用基于计时器的 Javascript Azure 函数,例如,
module.exports = async function (context, myTimer) {
var timeStamp = new Date().toISOString();
Run Code Online (Sandbox Code Playgroud)
我不相信 Azure 函数中有一个设置可以设置开始日期/时间。cron 调度程序似乎是唯一的选择。
根据 Azure Functions 文档:
计划表达式是一个 CRON 表达式,包含 6 个字段:
{second} {minute} {hour} {day} {month} {day of the week}请注意,您在网上找到的许多 cron 表达式都省略了 {second} 字段,因此,如果您从其中之一复制,则必须针对额外字段进行调整。
文档提供的示例:
每 5 分钟触发一次:
0 */5 * * * *每天上午 9:30 触发:
0 30 9 * * *
59 */10 * * * *结果是这些执行时间:
目标是删除 JSON 文件中包含 JQ 脚本中指定的键/值对的整个对象。
例如,所有带有/unwanted-path/in的对象都path将被删除:
输入.json:
[
{
"path": "/path-1/",
"guide": "Guide 1"
},
{
"path": "/path-2/",
"guide": "Guide 2"
},
{
"path": "/unwanted-path/",
"guide": "Guide 3"
}
]
Run Code Online (Sandbox Code Playgroud)
输出.json:
[
{
"path": "/path-1/",
"guide": "Guide 1"
},
{
"path": "/path-2/",
"guide": "Guide 2"
}
]
Run Code Online (Sandbox Code Playgroud)
这个 JQ 脚本是我所见过的最接近潜在成功方法的脚本,但当然它的意图不同并且没有实现目标。
jq '.[] | walk(if type == "object" then del(.path) else . end)' original.json > modified.json
Run Code Online (Sandbox Code Playgroud)
有没有办法在那里添加逻辑来指定要配合的键path?
关键始终是,但我会过滤path几个值。如果有一种方法可以一次path过滤多个值,那是理想的,但并不重要。path