方案:
我在一个项目中有一个JenkinsFile,它使用public class ToDoFragment extends Fragment {
public boolean title_bar_down = true;
GestureDetectorCompat detector;
ArrayList<String> user_list;
View rootView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.to_do_list_fragment, container, false);
detector = new GestureDetectorCompat(getActivity(), new ToDoFragment.MyGestureDetector());
//restoring savedInstanceState
user_list = new ArrayList<>();
if (savedInstanceState != null) {
user_list = savedInstanceState.getStringArrayList("user_list");
if (user_list != null) {
int count = user_list.size();
for (int i = 0; i < count; i++) {
createLayout(user_list.get(i));
}
}
}
return inflater.inflate(R.layout.to_do_list_fragment, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//Allow title to be changed after long click
final EditText title = (EditText) rootView.findViewById(R.id.title_bar);
title.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
title.setFocusable(true);
title.requestFocusFromTouch();
InputMethodManager inp = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
inp.showSoftInput(title, InputMethodManager.SHOW_IMPLICIT);
return true;
}
});
title.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if (!b) {
title.setFocusable(false);
}
}
});
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
boolean handled = super.dispatchTouchEvent(ev);
handled = detector.onTouchEvent(ev);
return handled;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
this.detector.onTouchEvent(event);
return super.onTouchEvent(event);
}
public void onAdd(View view) {
AutoCompleteTextView editTextView = (AutoCompleteTextView) rootView.findViewById(R.id.getTextView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (!Objects.equals(String.valueOf(editTextView.getText()), "")) {
String text = String.valueOf(editTextView.getText());
editTextView.setText("");
createLayout(text);
user_list.add(text);
//Change title to first added item
EditText edit = (EditText) rootView.findViewById(R.id.title_bar);
if (String.valueOf(edit.getText()).equals("Title")) {
edit.setText(text);
}
}
}
}
///////////////////GESTURE DETECTION////////////////////
private class MyGestureDetector extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
final EditText title = (EditText) rootView.findViewById(R.id.title_bar);
if (title_bar_down && velocityY < -7000) {
title.animate().translationY(title.getHeight() * (-1)).setDuration(195).start();
title_bar_down = false;
} else if (!title_bar_down && velocityY > 7000) {
title.animate().translationY(0).setDuration(225).start();
title_bar_down = true;
}
return super.onFling(e1, e2, velocityX, velocityY);
}
}
}
语法引用共享管道库中的代码。我想测试我的库函数的更改,而不需要执行我的库repo的提交。
我意识到我可以在include语句中定位库的特定版本或分支。我也意识到我可以修改我的JenkinsFile中的脚本而不需要使用&#34; Replay&#34; Jenkins UI中的功能。如何测试对共享库代码的修改,而无需提交我正在测试的分支?现在,我们必须通过每次调整我们的库代码来执行提交,并且我们不希望有超级总提交历史记录。换句话说,我们只想提交我们的库仓库以获取我们知道正在运行的代码。
答案 0 :(得分:3)
对于我的用例,我想测试在不同分支上创建的库变量的更改。
由于重播将使用已设置的重放,您需要一种方法来清除它们,以确认它们已正确加载。
我还没有检查,如果有一个&#34;清洁剂&#34;这样做的方式。这将是下一步。
这是我的解决方法:
在Mainscript(Jenkinsfile)上输入重播并评论@Library(&#39; libname&#39;)
//@Library('libname')
运行构建。这将按预期失败并清除以前的重播变量。
再次输入重播,取消注释并调整库测试分支
@Library('libname@test-branch')
构建应该成功运行,重播变量应该反映变化。
答案 1 :(得分:2)
原来我是盲人,或者Jenkins Pipeline现在支持在使用“重播”功能时编辑库代码。每当您向库中添加新文件以使其显示在重放屏幕上时,您都必须执行提交。一旦它在那里,您可以编辑它,而无需每次都提交。一旦你满意它正在使用重播,那么你可以提交并推送。